Создание слайдера на jQuery
В этом уроке для веб разработчиков мы продемонстрируем создание слайдера на HTML, CSS, и JavaScript (jQuery) и добьёмся, чтобы он работал во всех браузерах (с активированным и дезактивированным JavaScript).
Начало работы
Одним из самых важных аспектов работы над новым проектом, является создание HTML структуры. Мы должны добиться того, чтобы данный слайдер одинаково отображался во всех браузерах и работал даже на тех, где отключен JavaScript.
Для реализация слайдера нам понадобится блок с id #slideshow, который будет играть роль родительского контейнера. Внутри него будет располагаться другой блок div с именем #slideContainer. Он будет содержать сами слайды, каждому из которых будет приписан класс .slide.
Блок 1: HTML
<!-- Slideshow HTML -->
<div id="slideshow">
<div id="slidesContainer">
<div class="slide">
<!-- Content for slide 1 goes here -->
</div>
<div class="slide">
<!-- Content for slide 2 goes here. -->
</div>
<div class="slide">
<!-- Content for slide 3 goes here. -->
</div>
<div class="slide">
<!-- Content for slide 4 goes here. -->
</div>
</div>
</div>
<!-- Slideshow HTML -->
Вы можете заметить, что в приведённом фрагменте кода нет ничего связанного с элементами контроля нашего слайдера. Мы их добавим в DOM позже, посредством JavaScript скрипта. Если их добавить сейчас, то они будут смущать тех, кто отключает поддержку CSS или JavaScript.
Вариант 1: Полноценный слайдер
Заметка: Проверяйте работу после каждого изменения. Если вы занимаетесь разработкой чего-то нового, то всегда тестируйте работу проведённых изменений, будь то даже изменение HTML структуры. Вы можете использовать специальный инструмент WebAnywhere для тестирования содержания.
Стилизуем слайдер
Следующим действием мы оформим наш дизайн и предусмотрим несколько вещей для тех пользователей, которые отключают JavaScript.
Для элемента с id #slidesContainer, мы назначим overflow в auto для того, чтобы общая высота блока растянулась до 263px.
Блок 2: CSS #slidesContainer
#slideshow #slidesContainer {
margin:0 auto;
width:560px;
height:263px;
overflow:auto; /* разрешаем прокрутку */
position:relative;
}
Нам необходимо немного уменьшить ширину блока с классом .slide на 20px для того, чтобы появилось место для области прокрутки слайдов для тех, у кого отключен JavaScript.
Блок 3: CSS класс .slide
#slideshow #slidesContainer .slide {
margin:0 auto;
width:540px;
height:263px;
}
С отключённым JavaScript, наш контент всё равно доступен для пользователей; благодаря прокрутке они могут просматривать слайды.
Вариант 2: Слайдер без JavaScript
В качестве альтернативы, вы можете добавить классу .slide дополнительное свойство float:left; для того чтобы пользователи без JavaScript могли прокручивать слайды горизонтально.
Стрелки вправо и влево
Для того чтобы добиться большей производительности, мы добавим элементы контроля над слайдером посредством изменения DOM при помощи jQuery.
Элементы будут представлять из себя span элемент, поэтому мы назначили свойству cursor значение pointer для создания эффекта наведения мыши на кнопку. Так же мы используем свойство text-indent для того, чтобы спрятать текст.
Блок 4: Элементы контроля
/**
* Slideshow controls style rules.
*/
.control {
display:block;
width:39px;
height:263px;
text-indent:-10000px;
position:absolute;
cursor: pointer;
}
#leftControl {
top:0;
left:0;
background:transparent url(img/control_left.jpg) no-repeat 0 0;
}
#rightControl {
top:0;
right:0;
background:transparent url(img/control_right.jpg) no-repeat 0 0;
}
Самое интересное… JavaScript
После того, как мы подготовили наш HTML и CSS, самое время заняться основным скриптом. Для создания анимации и прочих фишек мы будем использовать библиотеку jQuery.
Теория
Первое, что нам необходимо сделать, так это изменить значения свойств CSS посредством JavaScript скрипта. Нам необходимо сделать это для элемента #slidesContainer, чтобы устранить область прокрутки. Вдобавок нам необходимо изменить размер элементов с классом .slide на 20px. Также нам необходимо применить свойство float для того, чтобы слайды следовали друг за другом, а не один под другим.
Затем, благодаря манипуляции DOM, мы вставим блок div с id #slideInner, который будет содержать внутри себя все слайды с классом .slide.
В конце концов, мы вставим элементы контроля (с классом .control) для того, чтобы пользователи могли переключать слайды; это мы сделаем средствами JavaScript, чтобы тем, у кого он отключён, элементы контроля не отобразились.
Вашему вниманию я представляю код JavaScript детальное описание которого последует ниже.
Блок 5: Главный скрипт jQuery
$(document).ready(function(){
var currentPosition = 0;
var slideWidth = 560;
var slides = $('.slide');
var numberOfSlides = slides.length;
// Убираем прокрутку
$('#slidesContainer').css('overflow', 'hidden');
// Вставляем все .slides в блок #slideInner
slides
.wrapAll('<div id="slideInner"></div>')
// Float left to display horizontally, readjust .slides width
.css({
'float' : 'left',
'width' : slideWidth
});
// Устанавливаем ширину #slideInner, равную ширине всех слайдов
$('#slideInner').css('width', slideWidth * numberOfSlides);
// Вставляем элементы контроля в DOM
$('#slideshow')
.prepend('<span class="control" id="leftControl">Move left</span>')
.append('<span class="control" id="rightControl">Move right</span>');
// Прячем правую стрелку при загрузке скрипта
manageControls(currentPosition);
// Отлавливаем клик на класс .controls
$('.control')
.bind('click', function(){
// Определение новой позиции
currentPosition = ($(this).attr('id')=='rightControl')
? currentPosition+1 : currentPosition-1;
// Прячет / показывает элементы контроля
manageControls(currentPosition);
// Move slideInner using margin-left
$('#slideInner').animate({
'marginLeft' : slideWidth*(-currentPosition)
});
});
// manageControls: показывает или скрывает стрелки в зависимости от значения currentPosition
function manageControls(position){
// Спрятать левую стрелку, если это левый слайд
if(position==0){ $('#leftControl').hide() }
else{ $('#leftControl').show() }
// Спрятать правую стрелку, если это последний слайд
if(position==numberOfSlides-1){ $('#rightControl').hide() }
else{ $('#rightControl').show() }
}
});
Создаём объекты
В первую очередь, мы инициализируем некоторые переменные в самом начале скрипта.
currentPosition будет содержать текущую позицию. slideshow.slideWidth - это ширина каждого блока .slide, которая равна 560px. Я предпочёл объявить объект для селектора $('.slide'), для того чтобы код смотрелся немного чище, но вы можете поступить по-другому и в дальнейшем использовать запись ($('.slide')).
И наконец, мы определяем количество слайдов в нашем слайдере, используя метод .length.
Блок 6: Переменные и константы
var currentPosition = 0;
var slideWidth = 560;
var slides = $('.slide');
var numberOfSlides = slides.length;
Убираем прокрутку
Когда скрипт запустится для тех, у кого включён JavaScript, мы уберём элемент прокрутки, установив значение hidden элементу slidesContainer, и это будет заменять переполнение overflow:auto CSS (смотри Блок 3).
Блок 7: Изменения значения свойства CSS overflow на hidden
$('#slidesContainer').css('overflow', 'hidden');
Вставка div в DOM
Мы будем использовать свойство margin для перемещения слайдов влево и вправо (но чуть позже). Для этого нам необходимо создать специальный блок, в который будут вписаны все блоки с классом .slide, совпадающие с ним по ширине и высоте. Изменяя значение внешних отступов для этого элемента, мы создадим эффект перемещения в разные стороны.
Блок 8: Вставка #slideInner в DOM используя метод .wrapAll()
Нам также необходимо обозначить ширину #slideInner, новоиспечённого блока div, общему количеству элементов с классом .slide.
Блок 9: Вставка #slideInner в DOM используя метод .wrapAll()
$('#slideInner').css('width', slideWidth * numberOfSlides);
Утилизируем слайды при помощи JavaScript
Если JavaScript включён, мы хотим расположить слайды друг за другом. Также каждому из низ мы зададим фиксированную ширину в 560px – таков и будет размер нашего слайдера.
Мы можем совместить метод .css с методом .wrapAll(), который мы использовали в Блоке 8.
Блок 10: Присвоение .slide блокам overflow:hidden
slides
.css('overflow', 'hidden')
.wrapAll('')
Вставка стрелок в DOM
Мы вставим необходимые элементы, посредством манипулирования элементами DOM; таким образом, обеспечим пользователям, которые отключают JavaScript и другим устройствам простую картинку без всякого функционала. Так у них не появится никаких лишних вопросов.
Реализуем мы это при помощи методов .prepend() и .append(), которые предназначены для вставки HTML фрагментов внутри выбранных элементов (в нашем случае, это блок с id #slideshow). Текст внутри данных элементов не имеет никакого значения, т.к. он будет скрыт.
Блок 11: Вставка элементов контроля в DOM
$('#slideshow')
.prepend('Moves left')
.append('Moves right');
Управления стрелками посредством функций
Для того чтобы иметь возможность управлять элементами контроля, мы создадим функцию с именем manageControls, которая скрывает и показывает правую и левую стрелку в зависимости от того, в какой части слайдера мы сейчас находимся.
Если мы смотрим первый слайд, то нам необходимо, по понятным причинам, спрятать левую стрелку. Когда мы будем на правом слайде, то нам нет никакого резона отображать правую стрелку нашего слайдера. Показ и скрытие данных элементов мы осуществим при помощи jQuery методов .hide() и .show(), которые предназначены специально для подобных целей.
Блок 12: функция manageControls()
function manageControls(position){
// position==0 если это первый слайдер
if(position==0) { $('#leftControl').hide(); }
else { $('#leftControl').show(); }
// numberOfSlides-1 если последний
if(position==numberOfSlides-1) { $('#rightControl').hide(); }
else { $('#rightControl').show(); }
}
Вызываем manageControls(), когда DOM готов
Когда наш скрипт окончательно загрузится, мы должны вызывать метод manageControls(), для того чтобы спрятать левую стрелку контроля. Это просто, мы передаём аргумент currentPosition, который должен быть равен 0.
Блок 13: вызов manageControls() при полной загрузке документа
manageControls(currentPosition);
Отлавливаем события
Всё что нам осталось сделать для нашего jQuery слайдера, так это создать функционал для отлавливания кликов по элементам контроля. Этот функционал будет активироваться в том случае, если пользователь нажмёт на одну из стрелок: правую или левую.
Блок 14: Отлавливаем клик на класс .control
$('.control').bind('click', function(){
// сделать что-то при клике
});
Обновляем значение для currentPosition
Когда пользователь кликнет на элементы управления, то нам необходимо обновить значение переменной currentPosition: Если пользователь нажмёт на правую стрелку (с ID #rightControl), тогда нам нужно увеличить значение currentPosition; если пользователь кликнет на левую стрелку (с ID #lefControl), то нам надо отнять 1 из currentPosition. То, что вы увидите ниже, это тернарный оператор, который часто может здорово заменить условное выражение if/else.
Блок 15: Новое значение для currentPosition
currentPosition = ($(this).attr('id')=='rightControl')
? currentPosition+1 : currentPosition-1;
Вызов manageControls() после обновления значения currentPosition
После того, как мы определи значение переменной currentPosition, снова вызываем manageControls(), для того чтобы скрыть и отобразить инструменты контроля над слайдами.
Блок 16: Вызов manageControls() внутри метода .bind
manageControls(currentPosition);
Анимируем слайды
В конце мы переносим #slideInner влево или вправо, анимируя значение CSS свойства margin-left. Левый внешний отступ содержит отрицательное значение. К примеру, если мы сменяемся на третий слайд, то тогда наш левый отступ будет равен -1120px.
Блок 17: Используем метод .animate при смене CSS свойства margin-left
$('#slideInner').animate({
'marginLeft' : slideWidth*(-currentPosition)
});
Заключение
В этом уроке, мы создали простой слайдер при помощи HTML, CSS, и JavaScript (jQuery). Также мы использовали специальные техники, которые позволят слайдеру работать с отключёнными CSS и JavaScript. Спасибо за внимание.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/TNM0LVuv-SM/lessons.php
|
В этом уроке для веб разработчиков мы продемонстрируем создание слайдера на HTML, CSS, и JavaScript (jQuery) и добьёмся, чтобы он работал во всех браузерах (с активированным и дезактивированным |
РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2026-07-29 » «Адаптация бюджета» в Яндекс Директе: как автоматически масштабировать рекламу без потери эффективности
- 2026-07-29 » Overlay в РСЯ: новый формат мобильной рекламы, который не раздражает пользователей
- 2026-07-29 » «Панорама» в Яндекс Директе: новый уровень охватной рекламы для вашего бизнеса
- 2026-07-29 » Карточки товаров и отзывы на маркетплейсах: что по закону считается рекламой, а что нет
- 2026-07-29 » Комментарии в приватных каналах «Макс»: новый инструмент для бизнес-коммуникаций
- 2026-07-23 » Как ошибки в AI-ответах портят репутацию компании
- 2026-07-23 » Маркировка рекламы в 2026 году: фатальные ошибки, которые обойдутся вашему бизнесу в полмиллиона рублей
- 2026-07-23 » Нейросети в дизайне сайтов и графике: революция, эволюция или угроза?
- 2026-07-23 » РСЯ открыла инструмент авторасстановки рекламы для всех партнеров: как автоматизация меняет правила монетизации
- 2026-07-23 » Контент для стоматологических клиник: какими текстами наполнить сайт, чтобы пациенты записывались сами
- 2026-07-22 » Продающие анимированные баннеры для вашего бизнеса
- 2026-07-22 » Услуги таргетолога по настройке рекламы ВКонтакте (ВК)
- 2026-07-19 » GEO / AISEO / AEO для B2C
- 2026-07-19 » GEO / AISEO / AEO для B2B
- 2026-07-15 » ИИ-агент как сотрудник: права, журнал действий и управление доступом через BearPass
- 2026-07-15 » Как проверить юриста, адвоката или нотариуса онлайн: пошаговое руководство для бизнеса
- 2026-07-15 » Телефон в вашем кармане действительно следит: кто, зачем и как это остановить
- 2026-07-15 » Куки и трекеры: какую информацию о вас собирают сайты и как это отключить
- 2026-07-15 » Почему корпоративный мессенджер — это не роскошь, а необходимость для бизнеса
- 2026-07-15 » Реклама на Авито, которая реально работает
- 2026-07-15 » Реклама на Авито, которая реально работает
- 2026-07-10 » Корпоративный сайт, который показывает масштаб компании, укрепляет доверие и ведет клиента к целевому действию
- 2026-07-10 » Сайт бронирования, который превращает интерес клиента в прямую бронь, запись или заявку
- 2026-07-10 » Образовательный сайт под ключ
- 2026-07-03 » Аналитика нового поколения: как Яндекс Метрика превращает данные в управляемые конверсии
- 2026-07-03 » Прорыв в инфлюенс-маркетинге: Яндекс Директ научился оптимизировать рекламу в Telegram и MAX под реальные продажи
- 2026-07-03 » Нейросетевой дуэт: как Gorgona и Argus меняют правила игры в контекстной рекламе Яндекса
- 2026-07-03 » Рекламная революция в «Яндекс Директе»: с 14 июля текстово-графические объявления окончательно уступают место комбинаторным
- 2026-07-03 » Макс запустил тест комментариев в публичных каналах
- 2026-07-01 » Уникальность текста: когда копировать контент можно, а когда нельзя
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.

Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.