Цветная система простановки рейтинга
Системы рейтинга используются достаточно широко на различных сайтах. В данном уроке мы создадим интерфейс такой системы с интерактивностью.
С помощью плагина jQuery Color мы будем анимировать изменение цвета. Просто используем функцию animate()
, чтобы получить отличный переход между разными цветами. В сочетании со скругленными углами и тенями CSS3 получится отличный интерфейс для цветной системы рейтинга.
Так как CSS3 поддерживается не всеми браузерами, то в полную силу система будет работать только в новейших программах для просмотра интернета. В остальных браузерах вместо кругов будут выводиться прямоугольники, а в остальном функционал сохранится.
HTML
Для системы рейтинга будет использоваться минимум кода разметки:
<ul id="rating"> <li><a href="#">Просто кусочек кала</a></li> <li><a href="#">Ничего нового и интересного</a></li> <li><a href="#">Средненько, хотя мне нравится</a></li> <li><a href="#">Хорошо, давайте еще</a></li> <li><a href="#">Самое лучшее, что может быть</a></li> </ul>
Обязательно включите в раздел head подключение jQuery и плагина Color.
CSS
Как и код HTML, CSS также достаточно простой. Список рейтинга выводится в режиме inline
, а для каждого пункта задается фиксированная ширина и высота. Обратите внимание на цвет фона кругов: #333
. Свойство text-indent
is used to hide the text.
#rating { list-style:none; width:460px; margin:20px auto; } #rating li { display:inline; float:left; } #rating li a { display:block; width:80px; height:80px; margin:5px; border:1px solid #888; background-color:#333; text-indent:-9999px; -moz-box-shadow:0 0 5px #888; -moz-border-radius:40px; -webkit-box-shadow:0 0 5px #888; -webkit-border-radius:40px; -o-box-shadow:0 0 5px #888; -o-border-radius:40px; } #ratinginfo { clear:left; width:350px; margin:120px auto; } #ratinginfo p { text-align:center; background-image:url("../images/textbg.png"); font:20px Georgia,'Times New Roman',serif; padding:10px; -moz-box-shadow:0 0 5px #888; -moz-border-radius:40px; -webkit-box-shadow:0 0 5px #888; -webkit-border-radius:40px; -o-box-shadow:0 0 5px #888; -o-border-radius:40px; }
В коде CSS имеются стили для идентификатора #ratinginfo
. В jQuery будет создаваться элемент, в котором отображается дополнительная информация о пункте рейтинга.
jQuery
После загрузки jQuery и плагина Color, мы готовы использовать JavaScript для анимации смены цветов кругов и вывода текста дополнительной информации.
// Длительность анимации var animationTime = 500; // Используемые цвета var colours = ["bd2c33", "e49420", "ecdb00", "3bad54", "1b7db9"];
Нам понадобится несколько переменных. Первая хранит время анимации (для эффекта затухания). Вторая является массивом цветов, которые используются для пунктов оценки. Мы создаем пять степеней оценки, поэтому будут использоваться пять цветов.
// Добавляем информацию о рейтинге var ratingInfobox = $("<div />") .attr("id", "ratinginfo") .insertAfter($("#rating")); // Функция для раскрашивания рейтинга var colourizeRatings = function(nrOfRatings) { $("#rating li a").each(function() { if($(this).parent().index() <= nrOfRatings) { $(this).stop().animate({ backgroundColor : "#" + colours[nrOfRatings] } , animationTime); } }); };
Затем jQuery динамически создает новый элемент div
с идентификатором #ratinginfo
(для которого был определен набор свойств в CSS). Он будет вставлен после кругов оценки.
Также определяется функция colourizeRatings
. В качестве параметра она получает номер цвета (nrOfRatings
), который надо установить для пунктов оценки. В ней в цикле проверяются все пункты оценки для определения верности условия того, что индекс пункта index()
меньше, чем заданный nrOfRatings
. Все пункты, у которых индекс меньше, будут окрашены с использованием функции animate
.
Обратите внимание на небольшой кусок кода:
Мы запрашиваем индекс родительского элемента, чтобы знать, в какой цвет раскрашивать круг. Родительским элементом для элемента ссылки является пункт списка. Пункт списка "знает" индекс, который он имеет в списке.
// Обработка события hover $("#rating li a").hover(function() { // Очищаем информацию о рейтинге и выклюючаем ее панель ratingInfobox .empty() .stop() .animate({ opacity : 1 }, animationTime); // Добавляем информацию о рейтинге $("<p />") .html($(this).html()) .appendTo(ratingInfobox); // Вызываем функцию раскрашивания для заданного индекса рейтинга colourizeRatings($(this).parent().index()); }, function() { // Отключаем панель информации рейтинга ratingInfobox .stop() .animate({ opacity : 0 }, animationTime); // Восстанавливаем оригинальный цвет $("#rating li a").stop().animate({ backgroundColor : "#333" } , animationTime); }); // Обрабатываем событие click и выводим рейтинг $("#rating li a").click(function(e) { e.preventDefault(); alert("Вы проголосовали за пункт номер " + ($(this).parent().index() + 1)); });
Обрабатываем событие hover для круга. Первым шагом нужно очистить информацию об оценке, затем добавляется новый текст и он проявляется. Далее вызывается функция colourizeRatings
, которая снова использует функцию index()
родителя. когда курсор мыши покидает пункт оценки, информационный блок убирается с экрана, а цвет круга снова меняется на #333
.
Для демонстрационных целей также обрабатывается событие click()
. Мы прерываем обработку события по умолчанию (нам не нужен переход по ссылке) и выводим сообщение для пользователя.
Вот и все, что нужно для создания интересного интерфейса системы оценки.
Заключение
В реальном проекте нужно обрабатывать событие клик с использованием AJAX запросов для учета голоса в базе данных. Также нужно сделать визуальную фиксацию оценки при нажатии левой кнопки мыши. Попробуйте сами расширить функционал кода урока.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/sWWv8bZd5Rg/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-05-06 » Как настраивать конверсионные стратегии: работа над ошибками
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
- 2024-04-22 » Цифровой маркетинг: инструменты для продвижения и рекламы в 2024 году
- 2024-04-22 » Что такое CSS-модули и зачем они нам?
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
"Интернет не меняет бизнес-модели, он способен лишь дать новые мощные инструменты уже существующим." |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.