Создание слайд шоу в html. Циклическое слайд-шоу на чистом CSS3. Подготовка изображений для слайдера

Запретив использование JavaScript, Вы не сможете видеть интересные примеры слайд-шоу!

Слайд-шоу для сайта

Создать и добавить на сайт слайд-шоу обязательно должен уметь каждый веб-мастер. Использование слайдеров чрезвычайно популярно, и их можно встретить, практически, на любом современном ресурсе.

И это не случайно!

**Примечание. В отличие от других страниц раздела jQuery , нужные скрипты прописал непосредственно в HTML-код самой этой страницы .
Кроме того, что очень важно(!) , они работают у меня от другой версии jQuery , более поздней, чем использую здесь.

Если там использую версию jquery v.1.10.1.min , то здесь v.1.8.3.min

Однако, подробнее об этом и обо всём остальном, по-порядку - дальше.

Подготовка слайд-шоу

Работа по созданию и установке слайд-шоу на сайте обычно состоит из 4-ёх основных этапов.

Подготовка изображений для слайдера

1. Подобрал фотографии. Главное - чтобы они были обязательно одного размера . Нужно их тщательно измерить.
В данном случае, взял готовые картинки из дополнительных материалов, приложенных к обучающему курсу. Какому? Об этом здесь: "Ссылки" (откроется в новом окне) .

2. Нарисовал в фотошоп графическое изображение слайдера в стиле "телевизор" . Пусть не оригинально, зато очень удобно.
Главное - размер просмотровой зоны нужен немного больше по ширине и высоте, чем у подготовленных рисунков.

Создание HTML+CSS каркаса для слайд-шоу

Картинки прописываются в HTML-коде именно в то место , где они в дальнейшем будут выводиться. Срипты же, можно прописать потом в любое удобное место. Я обычно оставляю место для них сразу под рисунками. Структура логичнее.

Разместил сами изображения внутри тэга p , для которого установил в стилях CSS ширину и высоту, и указал его class="slideshow" . А сам абзац с ними поместил внутрь общего тэга div , на фон которого повесил подготовленное графическое изображение слайдера (телевизор* ). Ему дал class="slider_fon" .
Причём, только для него , чтоб разгрузить страницу, подключил внешнюю таблицу стилей, а для рисунков всё делал внутри HTML-кода .

P.S.** Последнее действие вовсе НЕ обязательно. Просто, мне так удобнее. Структура страницы логичнее как-то выглядит.

В правилах CSS указал размер окна для изображений, которые потом будут появляться в слайдере (width - height ) . Естественно, у всех изображений должен быть одинаковый размер .
При желании, мог расширить CSS-параметры , добавив, скажем, рамки, фон, отступы и прочие элементы. Однако, думаю, это уже было бы лишним.

Если же, всё-таки, Вам захочется так сделать, то, размеры указывайте ОБЩИЕ , то есть: изображение + ВСЕ установленные отступы и границы .

Подключение скриптов

Рекомендую посетить справочную страницу , которую делал для себя во время изучения технологии jQuery. Очень поможет Вам разобраться.
Открыл к ней общий доступ: "ВЫБОРКА в jQuery" (откроется в новом окне) .

Как всегда, сначала создал папку js на сайте. Затем скачал нужные скрипты для слайд-шоу (архив ), и распаковал его в эту папку. В ней получилось два файла скриптов: ядро jquery-1.8.3.min.js и плагин jquery.cycle.all.min.js .

В неё же, на всякий случай, добавил и свой управляющий файл myscripts11.js . Однако, здесь он мне не пригодился для запуска и демонстрации слайд-шоу. Разве что, проверил им правильное подключение созданной папки.
Но... ..., пусть будет. Мало ли, что в дальнейшем захочу сделать с размещёнными здесь слайдерами. Короче, "... наш бронепоезд всегда на запасном пути" .

Дальше. Внутрь тэга ... вставил строчки, где прописал пути к скриптам. У меня они: , и к плагину: .
Свой ("запасной") управляющий файл закомментировал .

И последнее -

Зашедшие на мой сайт с отключённым в браузере интерпретатором JavaScript , наблюдать слайд-шоу , разумеется, не смогут .
Они увидят рисунки так, как те прописаны в HTML-коде , т.е. в столбик, друг за другом.
Для них сделал строчку-предупреждение и вставил её в тэг ... .

Ну вот! Слайд-шоу создано. Осталось настроить его параметры: скорость смены рисунков, способы их показа, и т.д..

Настройка параметров слайд-шоу

Как уже писал выше, (в примечании** ), нужные скрипты прописал непосредственно в HTML-код самой этой страницы.
В созданном у себя на сайте слайд-шоу, применил настройки "по умолчанию" .

Вообще же, легко установить различные, интересные типы переходов между картинками, изменяя javascript , размещённый в теле страницы.
Скажем, изменив в скрипте строчку sync: false на sync: true , можно убрать пробел при смене изображений.

Важное замечание!
Разные версии jQuery могут конфликтовать друг с другом, если они на одной странице.
Обязательно(!) проверяйте работу плагинов с установленной версией jQuery , поскольку не все версии сочетаются!

Пример**
На других страницах раздела jQuery , использующих библиотеку, установлена версия jquery v.1.10.1.min . Так вот, она более современная, чем v.1.8.3.min , от которой исправно(!) работают слайдеры слайд-шоу здесь.

Плагин jquery.cycle.all.min.js с ней НЕ РАБОТАЕТ!!!
(проверено )

Впрочем, не огорчайтесь. Всё в Ваших руках!
В разделе моего сайта "Полезное" (откроется в новом окне) найдёте испытанный(!) полный комплект нужных скриптов для создания такого слайд-шоу на своём сайте. (Разумеется, БЕСПЛАТНО!)

Другие виды слайд-шоу

Не буду в этом подразделе столь подробно описывать все действия по созданию слайд-шоу. В принципе, они абсолютно одинаковые.
Даже проще. Не нужно рисовать фоновую картинку слайдера в фотошоп. Даже отдельная таблица стилей CSS не понадобится.

Если хотите разместить различные варианты слайд-шоу на одной странице сайта, как я это сделал здесь (увидите ниже ), указывайте разные классы для каждого варианта в строчке скрипта $(".slideshow ").cycle({

P.S.* Не забудьте прописать в CSS размеры окна для каждого класса , если, всё же, будете использовать таблицу стилей . Мне она не понадобилась.

Посмотрите сначала на неподвижные рисунки, которые, аналогично, взял из обучающего курса (Какого? Повторю ссылку: "Ссылки" ) , и разместил их здесь для сравнения.

Вот они. Будущие участники 7-ми слайд-шоу!
Смотрите их "выступление" ниже.

Покажу несколько популярных видов слайдеров. Вставил их, для удобства просмотра, в общую таблицу.
Слева - название эффекта и краткое пояснение, если нужно. Справа - пример.

1. Растворение ("fade"):
Аналогичен верхнему примеру с мотоциклами.
2. Перетасовывание ("shuffle"):
3. Зум ("zoom"):
4. Переворот по осям ("curtainX" или Y):
Здесь установил "curtainX" .
5. Сворачивание по вертикали ("turnDown"):
Здесь сворачивается вниз, а можно установить и другие виды переходов: turnUP, Left, Right .
6. Скроллинг ("scrollDown"):
Смещение. Здесь установил вниз, а кроме этого можно
устанавливать: scrollUp, Left, Right .
1. Обалденное слайд-шоу на jQuery «Elastic Slideshow»

Слайд-шоу с миниатюрами и описанием слайдов. Различные эффекты смены изображений. Предусмотрено два варианта: с автоматической сменой слайдов и без.

2. Pure CSS3 Slider

Симпатичный слайдер изображений с описанием и автоматической сменой слайдов. При наведении курсора на изображение ротация останавливается. Остановка сопровождается CSS3 эффектом.

3. jQuery плагин «Фоторама»

Хорошая галерея-слайдер.

4. Текстовые эффекты «Typography Effects»

Интересные эффекты для работы с типографикой с помощью CSS3 и jQuery. 7 различных классных эффектов.

5. Плагин «Darkbox»

Небольшой легкий плагин для отображения изображений во всплывающем блоке.

6. Hover-эффект на jQuery

Круговой эффект при наведении.

7. Анимированные jQuery CSS3 кнопки

Много различных анимированных CSS3 эффектов для создания потрясающих кнопок для вашего сайта. Просто очень клевые эффекты при наведении.

8. HTML5 jQuery смена фоновых изображений

При нажатии на миниатюры фоновые изображения сменяют друг друга с эффектом размытия. При изменении размера окна браузера изменяется размер фонового изображения.

8. Interactive Typography Effects

Интересные текстовые эффекты с использованием HTML5 и jQuery (4 различных эффекта). Наведите курсор на текст, чтобы увидеть эффект.

9. Всплывающие подписи изображений

Много различных анимированных эффектов при наведении для реализации всплывающих подписей изображений.

10. Плагин «Portamento»

Плавающий блок на jQuery. Всегда остается в зоне видимости при прокрутки страницы вниз.

11. Скроллеры содержимого

jQuery плагин для отображения прокрутки в блоках фиксированных размеров. Несколько стилевых оформлений.

jQuery реализация горизонтальной и вертикальной прокрутки содержимого в блоке фиксированных размеров.

13. Плагин «Tiny Scrollbar»

jQuery плагин для реализации вертикальной и горизонтальной прокрутки контента.

14. Плагин «jScrollPane»

Кросс-браузерная прокрутка содержимого в блоке.

15. Плавающий блок «Scroll Follow»

Плагин для создания блока, который будет прокручиваться следом за прокруткой страницы. Есть возможность зафиксировать блок, по нажатию на ссылку.

16. Всплывающие панели «SideBar»

Выезжающие панели со всех сторон веб-страницы.

17. Эффектные CSS3 решения для оформления страницы-заглушки

Три варианта реализации анимированных эффектов для создания заглушки «Сайт в разработке».

17. Эффект при прокрутке страницы

Изумительный эффект при прокрутке страницы: элементы выезжают из области за экраном или наоборот прячутся за область экрана. Подобное решение отлично подойдет для применения на сайтах-портфолио, для эффектного представления выполненных проектов с кратким описанием.

19. Плагин «fancyBox 2»

Новая, полностью переписанная версия известного многим плагина fancybox, для отображения изображений и другого содержимого в модальных окнах.

20. Minimit Gallery

Функциональный плагин с большим набором возможностей: галерея, карусель, слайдер, меню, экспандер, анимированные кнопки.

21. jQuery News Ticker

Ротатор новостей на сайте. Сообщения сменяют друг друга и появляются с использованием интересного эффекта печатной машинки. Смену новостей можно остановить, нажав на кнопку «Пауза». Стрелочками можно переходить от одного сообщения к другому.

22. Adaptive Images

Масштабируемые изображения для отображения на мобильных устройствах. Размеры изображений зависят от размера окна. Используемые технологии: javascript и PHP5.

23. vScroller

Вертикальный jQuery, CSS3 скроллер. Настраивается скорость прокрутки и время задержек.

24. Многоуровневое выпадающее меню «jQSimpleMenu»

Свежий jQuery плагин для создания многоуровневых горизонтальных выпадающих меню на сайте.

25. «jsCarousel 2.0»

jQuery плагин для реализации вертикальных и горизонтальных каруселей.

26. Ротатор «Dynamic News»

jQuery плагин для симпатичного отображения последних новостей из RSS ленты.

27. Анимированное меню

Анимированный эффект при наведении на пункт меню.

28. Анимированный текстовый эффект

Три эффектных примера работы с CSS свойством «background-clip: text». CSS3 эффект не работает в старых браузерах.

29. CSS3 jQuery эффект размытия

При наведении курсора на блок он увеличивается, а остальные блоки с текстом размываются на заднем плане.

31. jQuery всплывающие подсказки при наведении

33. Записки CSS3 и HTML5

Реализация блоков, похожих на записки с текстом.

34. Rlightbox

Отображение медиаконтента во всплывающих блоках: изображения, видео, Flash.

35. jQuery зуммер

Увеличение квадратной области.

36. CSS3 jQuery описание изображений

Плагин «Based Sliding Door Content Gallery» для реализации всплывающих описаний изображений. При наведении курсора на какое-нибудь из представленных изображений появляется краткое описание со ссылкой на полную статью. При наведении: эффект поднятия гаражных дверей.

37. Эффект «До и после» jQuery плагин «uCompare»

Перетягивая шторку можно сравнить два наложенных друг на друга изображения. Идеально подойдет для тех случаев, когда необходимо оформить два варианта чего-либо на странице: до и после.

39. Интерактивные карты мира и Европы и США

Сегодня мы расскажем вам о том, как создать полноэкранный слайд-шоу с фоном, используя только лишь код CSS. Мы используем различные эффекты для переходов между изображениями, а также сделаем появляющийся заголовок посредством анимации, реализованной на CSS.

Изображения были любезно представлены Марком Себастьяном (), и распространяются они под лицензионным соглашением Creative Commons Attribution-ShareAlike 2.0 Generic.

Учтите, что данный эффект будет работать лишь в браузерах оснащенных .

Верстка

Здесь мы используем неупорядоченный список для слайд-шоу и также добавим span для каждого изображения и отделение с заголовком:



  • Image 01

    re·lax·a·tion





Span’ы будут являться элементами с установленным в слайд-шоу фоновым изображением.

CSS-код

Давайте для начала оформим неупорядоченный список. Он будет зафиксирован, и мы растянем его на все окно просмотра. Мы также используем псевдо-элемент:after для того, чтобы разместить текстуру в верхней части изображения:

Cb-slideshow,
.cb-slideshow:after {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
z-index: 0;
}
.cb-slideshow:after {
content: "";
background: transparent url(../images/pattern.png) repeat top left;
}
Мы будем использовать текстуру повторяющихся точек, но вы также можете использовать, к примеру, немного прозрачную градацию, реализованную с помощью CSS.

Span, содержащий изображение из слайд-шоу, будет иметь абсолютное позиционирование, а его параметры ширины и высоты будут выставлены на 100%. Так как у нас внутри есть некоторый дополнительный текст, мы сделаем его цвет немного прозрачным, так как нам не нужно обращать на него внимание. Значение параметра background-size будет выставлено на cover – это позволит нам быть уверенными в том, что фоновое изображение покрывает всю область элемента и, следовательно, окно просмотра. Уровень плотности выставлен на 0. Далее мы изменим данный параметр посредством анимации:

Cb-slideshow li span {
width: 100%;
height: 100%;
position: absolute;
top: 0px;
left: 0px;
color: transparent;
background-size: cover;
background-position: 50% 50%;
background-repeat: none;
opacity: 0;
z-index: 0;
animation: imageAnimation 36s linear infinite 0s;
}
Анимация для каждого span’а будет длиться 36 секунд и запускаться бесконечное число раз. Но давайте немного позже рассмотрим детали, а пока что оформим отделение с заголовком:

Cb-slideshow li div {
z-index: 1000;
position: absolute;
bottom: 30px;
left: 0px;
width: 100%;
text-align: center;
opacity: 0;
color: #fff;
animation: titleAnimation 36s linear infinite 0s;
}
.cb-slideshow li div h3 {
font-family: "BebasNeueRegular", "Arial Narrow", Arial, sans-serif;
font-size: 240px;
padding: 0;
line-height: 200px;
}
Анимация для отделения с заголовком также будет длиться 36 секунд.

Теперь мы определим фоновые изображения для всех span’ов, а также задержку в анимации, чтобы каждое изображение и заголовок в слайд-шоу появлялись через 6 секунд после предыдущего пункта:

Cb-slideshow li:nth-child(1) span {
background-image: url(../images/1.jpg)
}
.cb-slideshow li:nth-child(2) span {
background-image: url(../images/2.jpg);
animation-delay: 6s;
}
.cb-slideshow li:nth-child(3) span {
background-image: url(../images/3.jpg);
animation-delay: 12s;
}
.cb-slideshow li:nth-child(4) span {
background-image: url(../images/4.jpg);
animation-delay: 18s;
}
.cb-slideshow li:nth-child(5) span {
background-image: url(../images/5.jpg);
animation-delay: 24s;
}
.cb-slideshow li:nth-child(6) span {
background-image: url(../images/6.jpg);
animation-delay: 30s;
}

Cb-slideshow li:nth-child(2) div {
animation-delay: 6s;
}
.cb-slideshow li:nth-child(3) div {
animation-delay: 12s;
}
.cb-slideshow li:nth-child(4) div {
animation-delay: 18s;
}
.cb-slideshow li:nth-child(5) div {
animation-delay: 24s;
}
.cb-slideshow li:nth-child(6) div {
animation-delay: 30s;
}
Теперь давайте перейдем к анимации в слайд-шоу. У каждого span’а будет анимация, которая продлится 36 секунд. За эти 36 секунд мы изменим уровень плотности с 0 на 1 (это произойдет примерно на 8% прогресса анимации). А затем такое значение уровня плотности продержится вплоть до 17% прогресса. По достижении 25% прогресса, уровень плотности снова должен спуститься к 0, и оставаться таким до самого конца.

Почему именно такие значения? Нам нужно, чтобы каждое изображение было видно всего 6 секунд, и мы знаем, что в конце цикла нам нужно, чтобы снова было отображено первое изображение. У нас всего 6 изображений, и именно поэтому нам понадобится 36 секунд для всего цикла. Теперь нам нужно распределить уровни плотности соответствующим образом. Зная, что наше второе изображение начнет изменяться на 6 секунде, нам нужно узнать процентный показатель, который займет эта анимация в случае с первым изображением. Делим 6 на 36, и получаем 0.166… что означает, что наш порог в кадрах придется на 16%. Теперь, так как нам не нужно, чтобы изображение постоянно исчезало, мы определяем следующий порог – inbetween, который составит половину того, что мы высчитали, то есть – 8%. Это тот период, когда нам нужно отобразить полноценное изображение, а исчезать оно должно начать на 17%, и полное исчезновение должно произойти на 25%.

@keyframes imageAnimation {
0% { opacity: 0; animation-timing-function: ease-in; }
8% { opacity: 1; animation-timing-function: ease-out; }
17% { opacity: 1 }
25% { opacity: 0 }
100% { opacity: 0 }
}
То же самое нужно проделать с заголовком, только нужно сделать, чтобы исчезал он немного быстрее. Следовательно, уровень плотности должен прийти к 0 уже на 19% прогресса:

@keyframes titleAnimation {
0% { opacity: 0 }
8% { opacity: 1 }
17% { opacity: 1 }
19% { opacity: 0 }
100% { opacity: 0 }
}
Что касается браузеров без поддержки анимации, то в подобном случае мы просто отображаем последнее изображение из слайд-шоу за счет выставления уровня плотности span’а на 1:

No-cssanimations .cb-slideshow li span{
opacity: 1;
}
Класс no-cssanimations добавляется с помощью Modernizr.

Теперь давайте также позаботимся о размере шрифта для заголовков для тех случаев, когда размер окна просмотра будет меньше. Мы используем media queries для того, чтобы сделать шрифт меньше при определенной ширине:

@media screen and (max-width: 1140px) {
.cb-slideshow li div h3 { font-size: 140px }
}
@media screen and (max-width: 600px) {
.cb-slideshow li div h3 { font-size: 80px }
}
И на этом с разработкой упрощенной версии слайд-шоу закончено! Теперь давайте посмотрим, каким образом мы можем улучшить переходы.

Пример с альтернативной анимацией

Теперь мы можем немного обыграть анимацию для отображения изображения и заголовков.

Следующая анимация подразумевает под собой увеличение изображения и его последующее незначительное вращение:

@keyframes imageAnimation {
0% {
opacity: 0;
animation-timing-function: ease-in;
}
8% {
opacity: 1;
transform: scale(1.05);
animation-timing-function: ease-out;
}
17% {
opacity: 1;
}
25% {
opacity: 0;
transform: scale(1.1) rotate(3deg);
}
100% { opacity: 0 }
}
Заголовок будет выезжать с правой стороны (нам нужно будет изменить значение параметра text-align у заголовка на right), а затем исчезать, сдвигаясь влево:

@keyframes titleAnimation {
0% {
opacity: 0;
transform: translateX(200px);
}
8% {
opacity: 1;
transform: translateX(0px);
}
17% {
opacity: 1;
transform: translateX(0px);
}
19% {
opacity: 0;
transform: translateX(-400px);
}
25% { opacity: 0 }
100% { opacity: 0 }
}
Не забывайте, что вариантов может быть множество, главное не бояться экспериментировать!

Демо

Здесь можно видеть несколько вариантов применения анимации.

Обзор программ создания слайд-шоу Создание слайд-шоу для сайта

При создании слайд-шоу для размещения на сайте лучше всего воспользоваться готовыми программными решениями. На мой взгляд, оптимальный и самый простой вариант - использование jQuery, специальной бесплатной библиотеки скриптов (небольших программ на JavaScript ). В предыдущих статьях уже рассказывалось об этом замечательном инструменте веб-разработки. Например, смотрите статью Фотогалерея jQuery - просто и красиво! . Теперь применим jQuery для создания слайд-шоу на сайте, так называемого, слайдера.

Для этого воспользуемся плагином Slides , созданным программистом Натаном Салесом (Nathan Searles), техническим директором дизайн-студии "Бригада" ("The Brigade") в Портланде, штат Орегон, США. О другой его разработке рассказывалось в статье Фотогалерея для интернет магазина.

Плагин Slides - простой в установке, имеет несколько вариантов смены картинок в слайд-шоу и часто используется для шапки сайта. Пример работы этого слайдера с настройками по умолчанию показан на рисунке:



Установка слайд-шоу Slides

Как всегда, сначала создаем папку scripts на сайте. Затем надо скачать архив и распаковать его в созданную папку. В ней получится два скрипта jquery-1.8.3.min.js и jquery.cycle.all.min.js .

Далее, в заголовок страницы внутри тега ... вставляем следующие строчки, где указан путь к скриптам и небольшой javascript , определяющий параметры слайд-шоу:




$(".slideshow").cycle({
fx: "fade"
});
});


.slideshow {
width: 200px;
height: 135px;
margin: auto;
}

Как видим, здесь есть и простое правило CSS, в котором необходимо указать размер окна для изображений будущего слайд-шоу (ширина - высота). Естественно, все изображения должны иметь одинаковый размер. При желании вы можете расширить CSS-параметры, добавив, к примеру, границы, фон, отступы и другие элементы для изображений слайд-шоу. При этом размер надо указывать общий, то есть изображение плюс установленные вами отступы и границы по длине и ширине.

Важное замечание: если на вашем сайте используется несколько плагинов jQuery , то удобнее перенести файл jquery.js (желательно последней версии) в корневую папку, чтобы не загружать его несколько раз. В этом случае, строка обращения к нему будет выглядеть одинаково для всех плагинов. В частности, для нашего примера получается так:

Не рекомендуется использовать на одной странице несколько разных версий jQuery , чтобы они не конфликтовали друг с другом. При этом обязательно проверяйте работу плагинов с установленной версией jQuery , так как не все версии взаимозаменяемы.

Последний шаг - размещение изображений на странице. Здесь также всё просто. Размещаете изображения внутри тега или другого, для которого допустимо устанавливать ширину и высоту, и указываете его class="slideshow" . Для нашего примера HTML-код слайдера выглядит следующим образом:





На этом создание слайд-шоу почти закончено, и вы можете посмотреть его, открыв свою страницу в браузере.

Настройка параметров слайд-шоу Slides

В созданном слайд-шоу можно устанавливать разные виды переходов между кадрами, изменяя javascript , размещенный в заголовке страницы. Кроме того, заменив в скрипте строчку sync:false на sync:true , можно убирать пробел при смене изображений.

Длительность показа изображений регулируется параметром timeout , а скорость - параметром speed . Для примера привожу несколько распространенных вариантов слайд-шоу и соответствующие им скрипты, которые следует вставить в заголовок страницы.

1. Растворение (наш пример):

$(document).ready(function() {
$(".slideshow").cycle({
fx: "fade", //вид перехода
speed: 1000 , //скорость смены картинки
timeout: 1000 //длительность кадра
});
});

2. Перетасовывание:

$(document).ready(function() {
$(".slideshow").cycle({
fx: "shuffle",
sync: false,
speed: 500 ,
timeout: 5000
});
});

3. Зум:

$(document).ready(function() {
$(".slideshow").cycle({
fx: "zoom",
sync: false
});
});

4. Переворот по оси X или Y:

$(document).ready(function() {
$(".slideshow").cycle({
fx: "curtainX", // для поворота по оси Y - curtainY
sync: false
});
});

5. Сворачивание по вертикали:

$(document).ready(function() {
$(".slideshow").cycle({
fx: "turnDown", // направление можно задать turnUp, turnLeft, turnRight
sync: true
});
});

6. Скроллинг (смещение):

$(document).ready(function() {
$(".slideshow").cycle({
fx:"scrollDown", // направление смещения можно задать scrollUp, scrollLeft, scrollRight
sync: true
});
});

7. Наплыв справа:

$(document).ready(function() {
$(".slideshow").cycle({
fx: "cover
});
});

Иногда нужно разместить несколько вариантов слайд-шоу на одной странице сайта, как это сделано в данной статье. Для этого надо просто указывать разные классы для каждого варианта в строчке $(".slideshow").cycle({ (смотрите код в таблице выше), и не забудьте прописать в CSS размеры окна для каждого класса.

Вероятно, что вы уже слышали о новом элементе HTML5 canvas . Это специальный элемент, который позволяет создавать и модифицировать графику. К тому же, мы можем использовать его как любой другой элемент на странице - применять анимации jQuery для него, обрабатывать события для него и интегрировать его в шаблон.

Обычно использование элемента canvas ограничивается играми и концептуальными демонстрациями. В данном уроке мы будем использовать его практично - сделаем слайдшоу с отличным эффектом перехода, которое будет работать и в старых браузерах.

Идея

С помощью JavaScript сделаем специальный фильтр для каждого изображения в слайдшоу. Мы будем создавать новую версию изображения с более высоким контрастом и более яркими цветам, и сохранять ее в элементе canvas.


Когда пользователь хочет перейти к следующему слайду, элемент canvas выводится на экран с помощью анимации fadeIn , создавая плавный эффект перехода.

HTML

Начнем с создания разметки HTML.

html5-slideshow.html

Слайд шоу на основе элемента HTML5 сanvas и jQuery | Демонстрация для сайта сайт

Разметка для слайдшоу очень проста. Основной элемент div #slideshow содержит неупорядоченный список и стрелки на следующий и предыдущий слайды. Неупорядоченный список содержит слайды, которые определены как элементы li . На иллюстрации выше показано, что элемент canvas с модифицированным изображением будет вставляться сюда.

В конце включаются jQuery и наш файл script.js , который будет разбираться позже в данном уроке.

CSS

Все стили для слайдшоу содержатся в файле styles.css . Мы используем id основного элемента #slideshow в качестве определения пространства имен, поэтому можно просто добавить данные стили к вашему проекту без риска конфликта имен.

styles.css

#slideshow{ background-color:#F5F5F5; border:1px solid #FFFFFF; height:340px; margin:150px auto 0; position:relative; width:640px; -moz-box-shadow:0 0 22px #111; -webkit-box-shadow:0 0 22px #111; box-shadow:0 0 22px #111; } #slideshow ul{ height:320px; left:10px; list-style:none outside none; overflow:hidden; position:absolute; top:10px; width:620px; } #slideshow li{ position:absolute; display:none; z-index:10; } #slideshow li:first-child{ display:block; z-index:1000; } #slideshow .slideActive{ z-index:1000; } #slideshow canvas{ display:none; position:absolute; z-index:100; } #slideshow .arrow{ height:86px; width:60px; position:absolute; background:url("img/arrows.png") no-repeat; top:50%; margin-top:-43px; cursor:pointer; z-index:5000; } #slideshow .previous{ background-position:left top;left:0;} #slideshow .previous:hover{ background-position:left bottom;} #slideshow .next{ background-position:right top;right:0;} #slideshow .next:hover{ background-position:right bottom;}

Мы можем разделить наших посетителей, которые будут взаимодействовать со слайдшоу, на три группы:

  • Те, у кого отключен JavaScript . Такие пользователи будут видеть только первый слайд, у них не будет возможности переключиться на другие слайды.
  • Те, у кого включен JavaScript, но отсутствует поддержка элемента canvas . Для таких посетителей слайды будут переключаться мгновенно без эффекта перехода.
  • Те, у кого включена поддержка JavaScript и поддерживается элемент canvas . Эта группа использует последние версии Firefox, Safari, Chrome, Opera. Они будут видеть слайдшоу во всей красе.

Правила разработаны с учетом первых двух групп. С помощью селектора first-child будет выводиться только первый слайд по умолчанию.


JavaScript

Базовый принцип действия слайдшоу мы уже разобрали. Теперь рассмотрим практическую реализацию.

script.js - Часть 1

$(window).load(function(){ // Мы используем событие window.load, поэтому уверены, что // изображения слайдшоу загружены без ошибок. // Проверяем, поддерживает ли текущий браузер элемент canvas: var supportCanvas = "getContext" in document.createElement("canvas"); // Манипуляции с элементом canvas создают интенсивную нагрузку на процессор, // поэтому мы используем setTimeout, чтобы сделать работу асинхронной и улучшить // время отклика страницы var slides = $("#slideshow li"), current = 0, slideshow = {width:0,height:0}; setTimeout(function(){ window.console && window.console.time && console.time("Сгенерировано за:"); if(supportCanvas){ $("#slideshow img").each(function(){ if(!slideshow.width){ // Получаем размеры первого изображения: slideshow.width = this.width; slideshow.height = this.height; } // Выводим модифицированную версию изображения createCanvasOverlay(this); }); } window.console && window.console.timeEnd && console.timeEnd("Сгенерировано за:"); $("#slideshow .arrow").click(function(){ var li = slides.eq(current), canvas = li.find("canvas"), nextIndex = 0; // В зависимости от того, какая стрелка была нажата, // вычисляем индекс следующего слайда if($(this).hasClass("next")){ nextIndex = current >= slides.length-1 ? 0: current+1; } else { nextIndex = current