Регулятор уровня громкости с исопльзование слайдера jQuery UI
В данном уроке мы сделаем стильный элемент для регулировки уровня звука на основе слайдера из jQuery UI. Слайдер будет оформляться с помощью частей файла PSD со стилем для таких элементов.
Шаг 1. jQuery UI
Для работы нашего элемента требуется jQuery и jQuery UI. У нас есть два варианта для использования данных библиотек.
Первый - мы можем подключиться непосредственно к одному из следующих CDN: Google Ajax API CDN, Microsoft CDN и jQuery CDN. Такой вариант имеет массу преимуществ для реального проекта, но их обсуждение выходит за рамки нашего урока.
Второй, который будет использоваться в нашем уроке - сформировать и загрузить библиотеку jQuery UI непосредственно на официальной странице загрузки. Так как нам нужен только плагин Slider, выбираем только библиотеку Slider (с нужными модулями). В результате получится файл для загрузки, в котором будет отсутствовать лишнее. Затем присоединим библиотеки к нашему HTML документу (предпочтительно внизу страницы перед закрывающим тегом </body>
). Такой вариант выбран нами по причине использования страницы в режиме оффлайн.
<script src="/js/jquery-1.7.2.min.js"></script> <script src="/js/jquery-ui-1.8.21.custom.min.js"></script>
Шаг 2. Разметка HTML
Разметка для слайдера очень простая. Все необходимы элементы - подсказка, слайдер и индикатор уровня - размещаются внутри тега section
. А jQuery UI будет автоматически генерировать все остальное.
<section> <span class="tooltip"></span> <div id="slider"></div> <span class="volume"></span> </section>
Шаг 3. Устанавливаем слайдер
Ниже приведенный код устанавливает слайдер на странице. Но пока будет использоваться конфигурация по умолчанию.
$(function() { $( "#slider" ).slider(); });
Нужно изменить конфигурацию слайдера для нашего маленького проекта.
Сначала сохраняем элемент слайдера как переменную.
var slider = $('#slider'),
Затем устанавливаем минимальное значение по умолчанию равным 35 (будет использоваться при первой загрузке).
slider.slider({ range: "min", value: 35, });
На данном шаге в браузере пока нечего смотреть, так как jQuery UI только генерирует разметку. Поэтому нужно установить стили для визуального представления слайдера.
Шаг 4. Стили
Прежде чем продолжить, нужно подготовить несколько текстур и иконок из прилагающихся PSD файлов.
На выше располагающемся рисунке представлены все изображения, которые потребуются для нашего проекта.
Начинаем с позиционирования слайдера в центре окна браузера и привязывания фона к элементу body
.
body { background: url('../images/bg.jpg') repeat top left; } section { width: 150px; height: auto; margin: 100px auto 0; position: relative; }
Затем установим стили для подсказки, индикатора уровня, ручки управления и диапазона слайдера.
Слайдер
Так как мы не определяем максимальное значение для слайдера, то jQuery UI по умолчанию назначает его равным 100. Следовательно, мы можем использовать значение 100 px для ширины слайдера.
#slider{ border-width: 1px; border-style: solid; border-color: #333 #333 #777 #333; border-radius: 25px; width: 100px; position: absolute; height: 13px; background-color: #8e8d8d; background: url('../images/bg-track.png') repeat top left; box-shadow: inset 0 1px 5px 0px rgba(0, 0, 0, .5), 0 1px 0 0px rgba(250, 250, 250, .5); left: 20px; }
Подсказка
Подсказка будет позиционироваться абсолютно сверху слайдера.
.tooltip { position: absolute; display: block; top: -25px; width: 35px; height: 20px; color: #fff; text-align: center; font: 10pt Tahoma, Arial, sans-serif ; border-radius: 3px; border: 1px solid #333; box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, .3); box-sizing: border-box; background: linear-gradient(top, rgba(69,72,77,0.5) 0%,rgba(0,0,0,0.5) 100%); }
Индикатор уровня
Для нашего проекта будет формироваться визуальный эффект для индикации увеличения/ уменьшения громкости в зависимости от значения слайдера.
.volume { display: inline-block; width: 25px; height: 25px; right: -5px; background: url('../images/volume.png') no-repeat 0 -50px; position: absolute; margin-top: -5px; }
Ручка управления
Стиль ручки достаточно простой. Она будет иметь в качестве фона иконку в виде металлического кружка. Также будет изменяться внешний вид курсора мыши для информирования пользователя о возможностях слайдера.
.ui-slider-handle { position: absolute; z-index: 2; width: 25px; height: 25px; cursor: pointer; background: url('../images/handle.png') no-repeat 50% 50%; font-weight: bold; color: #1C94C4; outline: none; top: -7px; margin-left: -12px; }
Диапазон слайдера
Для использованного диапазона слайдера будет использоваться градиент:
.ui-slider-range { background: linear-gradient(top, #ffffff 0%,#eaeaea 100%); position: absolute; border: 0; top: 0; height: 100%; border-radius: 25px; }
Шаг 5. Эффекты
А теперь поработаем сос специальными эффектами слайдера.
Подсказка
На данном этапе подсказка не содержит никакой информации. Мы планируем поместить в нее значение слайдера. Также положение подсказки по горизонтали будет соответствовать положению ручки.
Для начала сохраним элемент подсказки в переменную.
var tooltip = $('.tooltip');
Эффекты подсказки будут реализовываться в обработчике события slide.
slide: function(event, ui) { var value = slider.slider('value'), tooltip.css('left', value).text(ui.value);
Изначально подсказка будет скрыта:
А перед тем, как передвинуть ручку, будет выводиться подсказка с эффектом проявления:
start: function(event,ui) { tooltip.fadeIn('fast'); },
При завершении движения ручки управления подсказка будет скрываться:
stop: function(event,ui) { tooltip.fadeOut('fast'); },
Индикатор уровня громкости
Мы будем изменять иконку индикатора в соответствии со значением слайдера. Для реализации эффекта использется следующее условное выражение.
Элемент индикатора сохраняется в переменной:
Затем используем условное выражение.
Когда значение слайдера будет меньше 5, иконка выводится совсем без полосок. Затем, по мере увеличения значения будут добавляться полоски.
if(value <= 5) { volume.css('background-position', '0 0'); } else if (value <= 25) { volume.css('background-position', '0 -25px'); } else if (value <= 75) { volume.css('background-position', '0 -50px'); } else { volume.css('background-position', '0 -75px'); };
Собираем весь код вместе
$(function() { var slider = $('#slider'), tooltip = $('.tooltip'); tooltip.hide(); slider.slider({ range: "min", min: 1, value: 35, start: function(event,ui) { tooltip.fadeIn('fast'); }, slide: function(event, ui) { var value = slider.slider('value'), volume = $('.volume'); tooltip.css('left', value).text(ui.value); if(value <= 5) { volume.css('background-position', '0 0'); } else if (value <= 25) { volume.css('background-position', '0 -25px'); } else if (value <= 75) { volume.css('background-position', '0 -50px'); } else { volume.css('background-position', '0 -75px'); }; }, stop: function(event,ui) { tooltip.fadeOut('fast'); }, }); });
Готово
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/v2syqNPDFUM/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Чтобы вырастить плодоносящий сайт - его полезно регулярно поливать и удобрять с помощью рекламы и оптимизации Компания "RedLine" |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.