Слайдеры на чистом css3 примеры. Легкий профессиональный javascript CSS3 слайдер. jQuery плагин «jSwitch»

Всё просто и классно работает!
НО!
Пытаюсь добавить 7 слайдов. Всё равно показывает только 4 слайда.

  • Текст для слайдера #1
  • Текст для слайдера #2
  • Текст для слайдера #3
  • Текст для слайдера #4
  • Текст для слайдера #5
  • Текст для слайдера #6
  • Текст для слайдера #7

Хммм!, Действительно, Павел, вы правы больше 4 слайдов добавить нельзя. Пытался исправить этот косяк, не получилось

Александр отвечает:
01.01.2016 в 15:52

Добавить еще слайдеры достаточно просто. Сейчас объясню для тех кто не знает и не понимает в CSS. Читайте внимательно!
Смотрим вот на этот код:

  • Текст для слайдера #1
  • Текст для слайдера #2
  • Текст для слайдера #3
  • Текст для слайдера #4
  • В нем всего 4 слайдера, но все они под порядковыми номерами. Добавляем пятый слайдер вот так

  • Текст для слайдера #5
  • Теперь чтобы он появился у нас, его нужно прописать в СSS стилях.
    Находим вот такие строчки в коде:

    /* css3 delays */ .slides ul li:nth-child(2), .slides ul li:nth-child(2) div { -webkit-animation-delay: 6.0s; -moz-animation-delay: 6.0s; } .slides ul li:nth-child(3), .slides ul li:nth-child(3) div { -webkit-animation-delay: 12.0s; -moz-animation-delay: 12.0s; } .slides ul li:nth-child(4), .slides ul li:nth-child(4) div { -webkit-animation-delay: 18.0s; -moz-animation-delay: 18.0s; }

    Обратите внимание на порядковые номера и время анимации.
    Каждый слайдер имеет свое время и этот интервал соответствует 6.0s. Значит чтобы появился пятый слайд нужно ко времени появления четвертого слайда прибавить 6.0s и обязательно поставить порядковый номер
    Вот код пятого слайдера:

    Slides ul li:nth-child(5), .slides ul li:nth-child(5) div { -webkit-animation-delay: 24.0s; -moz-animation-delay: 24.0s; }

    Вам просто не нужно забывать добавлять порядковый номер и время для нового слайда. Время можно менять как вам угодно. К примеру первый слайд появится через 6.0s, а второй мы хотим чтоб появился не через 6.0s а через 10.0s, тогда второй будет иметь время появления 16.0s

    Вот вроде и все. Сам проверял и все работает.

    А вот в IE действительно не хочет работать. Этот браузер не все CSS3 стили понимает. Могу сказать одно, можно наплевать на этот браузер и поставить данный слайдер, но для те 10% людей которые используют IE не будут видеть слайдер. Если он привязан к стилям вашего сайта то это конечно не очень хорошо если человек не увидит его. Короче смотрите сами.

    Слайдеры на CSS имеют некоторое преимущество перед слайдерами на Javascript. Одно из таких преимуществ — это скорость загрузки. Мало того что изображения для слайдеров используются больших размеров (если нет оптимизации под разные экраны), так еще и на загрузку скриптов тратится некоторое время. Но в статье Вы увидите только слайдеры на чистом CSS.

    Вот что я нашел на сайте на тему слайдеров:

    1. CSS3 слайдер изображений

    Слайдер на CSS, который использует для навигации по слайдам радиокнопки. Эти радиокнопки находятся под слайдеров. Также помимо радиокнопок навигация осуществляется с помощью стрелок слева и справа. Чтобы следить за тем, какое изображение сейчас отображать — используются псевдоклассы :checked .

    2. CSS3 слайдер изображений с миниатюрами

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

    3. Галерея на CSS

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

    4. Слайдер на CSS без ссылок

    Сразу хочу заметить что этот слайдер не использует ссылок! По умолчанию кроме главного изображения (слайда) видны еще 2 слайда. Они расположены позади основного. Смена слайдов происходит в красивом режиме: сначала раздвигаются два слайда и по центру становится тот слайд, который затем станет главным. Затем слайд увеличивается и помещается впереди остальных.

    5. Адаптивный слайдер на CSS3

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

    *** БОНУСНЫЙ СЛАЙДЕР ***

    Кроме всех слайдеров, которые представлены выше, я хочу порадовать Вас еще одним. Этот слайдер отлично подойдет для создания галереи изображений. Словами не объяснишь то что он делает, поэтому лучше смотрите всё на видео:

    Вывод

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

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

    Слыхали ли вы о плагине ? В нем упакована целая коллекция слайдшоу для использования в различных веб-проектах. Пакет содержит несколько профессиональных слайдов и 36 эффектов анимации при переходе от одной картинки к другой: cube, cubeRandom, block, cubeStop, cubeHide, cubeSize, horizontal, showBars, showBarsRandom, tube, fade, fadeFour, paralell, blind, blindHeight, blindWidth, directionTop, directionBottom, directionRight, directionLeft, cubeStopRandom, cubeSpread, cubeJelly, glassCube, glassBlock, circles, circlesInside, circlesRotate, cubeShow, upBars, downBars, hideBars, swapBars, swapBarsBack, random, randomSmart .

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

    Liquid Slider использует аппаратно-зависимые таблицы стилей CSS3 с эффектами переходов jQuery в качестве запасного варианта. Вы можете использовать любой HTML контент. Элементы навигации будут удобно размещены вокруг вашего контента, а слайдер адаптируется к ширине экрана. Убедитесь в том, что у вас есть четкое понимание, что такое адаптивный дизайн.

    Слайдер использует 3D анимацию/переходы, созданные на CSS-стилях. Работает на Javascript.

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

    Этот jQuery плагин представит любо контент - от видео, изображений до отдельных блоков HTML. Плагин поддерживает адаптивные шаблоны и имеет 35 эффектов перехода. Выбор немалый. Кроме того, iView Slider может использовать анимированные HTML заголовки.

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

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

    Здесь мы имеем в виду «Nivo Slider jQuery Script», поскольку это мощный и совершенно бесплатный инструмент. Данный скрипт имеет 16 эффектов перехода, он прост и имеет множество интересных особенностей.

    Этот адаптивный jQuery слайдер имеет ряд красивых визуальных эффектов (Rotate, Blur, Flip, Blast, Fly, Blinds, Squares, Slices, Basic, Fade, Ken Burns, Stack, Stack vertical и Basic linear).

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

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

    Для работы с этим уроком вам нужно иметь общее представление о CSS3 переходах и анимации по ключевым кадрам. Используя эту простую концепцию, мы увидим как сделать слайдер изображений. Пожалуйста, обратите внимание, что эти свойства будут работать только в современных браузерах (в частности IE10+).

    Слайдер на CSS3

    Базовые концепции CSS переходов

    Обычно, когда вы измените значение CSS, изменение происходит мгновенно. Теперь, благодаря универсальному CSS3 свойству transition , мы можем легко анимировать от старого к новому состоянию.

    Мы можем использовать четыре свойства перехода:

    1. transition-property - определяет CSS свойства, к которым должны быть применены переходы.
    2. transition-duration - определяет длительность переходов.
    3. transition-timing-function - определяет, как рассчитываются промежуточные значения перехода. Эффекты от функции времени задержки обычно называют реверсивными функциями.
    4. transition-delay - определяет когда начинается переход.

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

    A { color: #000; transition-property: color; transition-duration: 0.7s; transition-timing-function: ease-in; transition-delay: 0.3s; } a:hover { color: #fff; }

    При назначении анимации к элементу вы также можете использовать сокращенную запись:

    A { color: #000; transition: color 0.7s ease-in 0.3s; } a:hover { color: #fff; }

    Давайте посмотрим как применять простую анимацию в div .

    /* К этим элементам также применяем анимацию */ div { animation-name: move; animation-duration: 1s; animation-timing-function: ease-in-out; animation-delay: 0.5s; animation-iteration-count: 2; animation-direction: alternate; } /* Это код анимации */ @keyframes move { from { transform: translateX(0); } to { transform: translateX(100px); } }

    Но мы можем использовать сокращенную запись записав все свойства анимации сразу:

    Div { animation: move 1s ease-in-out 0.5s 2 alternate; }

    Ключевые кадры для CSS слайдера

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

    /* Анимация от 0% до 100% */ @keyframes move { 0% { transform: translateX(0); } 100% { transform: translateX(100px); } } /* Анимация с промежуточными ключевыми кадрами */ @keyframes move { 0% { transform: translateX(0); } 50% { transform: translateX(20px); } 100% { transform: translateX(100px); } }

    Структура CSS-слайдера

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

    Как функционирует анимация слайдера

    Как видите, наш слайдер - это контейнер, внутри которого отображаются изображения. Анимация здесь очень простая: изображение следует по предварительно определенному пути путем анимации свойства top и меняя свойства z-index и opacity когда изображение возвращается в исходное состояние. Давайте погрузимся в HTML-разметку для создания слайдера.

    • Пума

    • ...
    • Солнечные ванны

    HTML-разметка очень проста и SEO дружелюбна. Рассмотрим в деталях, как все работает:

    • div id="slider"

      Это главный контейнер слайдера. Он не имеет определенной функции, но мы должны приостановить его анимацию.

    • div id="mask"

      Мы будем использовать маску для CSS слайдера, чтобы скрыть все, что происходит за его пределами.

    • li id="first" class="firstanimation"

      Каждый элемент списка имеет идентификатор и класс. Идентификатор отвечает за подсказку, а класс привязан к анимации, которая должена произойти.

    • div class="tooltip"

      Блок для отображения названия изображения. Вы можете изменить его под свои нужды, например, сделав его интерактивными, и добавив краткое описание.

    • div class="progress-bar"

      Он содержит функцию, которая показывает ход анимации.

    Теперь пришло время для CSS стилей.

    CSS стили слайдера

    Давайте создадим базовую структуру слайдера. Он будет иметь тот же размер, что и изображение. CSS cвойство border будет полезно для создания рамки вокруг изображения.

    /* Структура слайдера */ .slider { background: #000; border: 5px solid #eaeaea; box-shadow: 1px 1px 5px rgba(0,0,0,0.7); height: 320px; width: 680px; margin: 40px auto 0; overflow: visible; position: relative; }

    Блок mask скроет все элементы, которые лежат за пределами слайдера; его высота должна быть равна высоте слайдера.

    /* Спрячем все */ .mask { overflow: hidden; height: 320px; }

    Наконец, чтобы отсортировать список изображений, мы зададим position: absolute и top: -325px , так что все изображения будут расположены за пределами слайдера.

    /* Список изображений */ .slider ul { margin: 0; padding: 0; position: relative; } .slider li { width: 680px; /* Ширина изображения */ height: 320px; /* Длина изображения */ position: absolute; top: -325px; /* Исходное положение - вне слайдера */ list-style: none; }

    С помощью этих нескольких строк кода мы создали наш слайдер без javascript, осталось только добавить анимацию.

    Ключевые кадры CSS анимации

    Анимация изображения для слайдера

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

    1. Общее количество изображений в слайдере - 5
    2. Продолжительность анимации для каждого изображения - 5 секунд
    3. Общая продолжительность анимации - 5 изображений × 5 секунд = 25 секунд
    4. Подсчитаем сколько ключевых кадров равны одной секунде, для этого разделим общее количество ключевых кадров на общую продолжительность анимации: 100 ключ. кадров / 25 сек. = 4 ключ. кадра

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

    Firstanimation { animation: cycle 25s linear infinite; } .secondanimation { animation: cycletwo 25s linear infinite; } .thirdanimation { animation: cyclethree 25s linear infinite; } .fourthanimation { animation: cyclefour 25s linear infinite; } .fifthanimation { animation: cyclefive 25s linear infinite; }

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

    /* Анимация на примере первых двух изображений */ @keyframes cycle { 0% { top: 0px; } /* При запуске слайда первое изображение уже видно */ 4% { top: 0px; } /* Исходное положение */ 16% { top: 0px; opacity:1; z-index:0; } /* От 4% до 16% = изображение видно 3 секунды */ 20% { top: 325px; opacity: 0; z-index: 0; } /* От 16% до 20% = 1 секунда на уход изображения */ 21% { top: -325px; opacity: 0; z-index: -1; } /* Вернуться в исходную позицию */ 92% { top: -325px; opacity: 0; z-index: 0; } 96% { top: -325px; opacity: 0; } /* От 96% до 100% = 1 секунда на появление изображения */ 100%{ top: 0px; opacity: 1; } } @keyframes cycletwo { 0% { top: -325px; opacity: 0; } /* Исходное положение */ 16% { top: -325px; opacity: 0; }/* Начинает двигаться на эту позицию после 16% */ 20% { top: 0px; opacity: 1; } 24% { top: 0px; opacity: 1; } /* От 20% до 24% = 1 секунда на появление изображения */ 36% { top: 0px; opacity: 1; z-index: 0; } / * От 24% до 36% = изображение видно 3 секунды * / 40% { top: 325px; opacity: 0; z-index: 0; } /* От 36% до 40% = 1 секунда на уход изображения */ 41% { top: -325px; opacity: 0; z-index: -1; } /* Вернуться в исходную позицию */ 100%{ top: -325px; opacity: 0; z-index: -1; } }

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

    Индикатор прогресса (прогресс-бар)

    Процесс создания анимации индикатора такой же, как и у слайдера. Во-первых, мы создаем сам индикатор:

    /* Индикатор прогресса слайдера */ .progress-bar { position: relative; top: -5px; width: 680px; height: 5px; background: #000; animation: fullexpand 25s ease-out infinite; }

    Не бойтесь синтаксиса, описанного ниже: он также задает состояние "from" и "to".

    /* CSS3 анимация индикатора прогресса слайдера */ @keyframes fullexpand { /* В этих ключевых кадрах индикатор находится в неподвижном состоянии */ 0%, 20%, 40%, 60%, 80%, 100% { width: 0%; opacity: 0; } /* В этих ключевых кадрах прогресс-бар начинает оживать */ 4%, 24%, 44%, 64%, 84% { width: 0%; opacity: 0.3; } /* В этих ключевых кадрах индикатор движется вперед в течение 3 секунд */ 16%, 36%, 56%, 76%, 96% { width: 100%; opacity: 0.7; } /* В этих ключевых кадрах прогресс-бар закончил свой путь */ 17%, 37%, 57%, 77%, 97% { width: 100%; opacity: 0.3; } /* В этих ключевых кадрах прогресс-бар исчезнет, а затем цикл возобновится */ 18%, 38%, 58%, 78%, 98% { width: 100%; opacity: 0; } }

    CSS3 анимация подсказки слайдера

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

    Вот CSS для всплывающих подсказок:

    Tooltip { background: rgba(0,0,0,0.7); width: 300px; height: 60px; position: relative; bottom: 75px; left: -320px; } .tooltip h1 { color: #fff; font-size: 24px; font-weight: 300; line-height: 60px; padding: 0 0 0 10px; }

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

    Анимация подсказки при наведении

    Мы видели, как применить CSS3 переходы элементов; Теперь давайте сделаем это в подсказках.

    Tooltip { … transition: all 0.3s ease-in-out; } .slider li:hover .tooltip { left: 0px; }

    Пауза и продолжение анимации слайдера

    Остановка анимации при наведении курсора мыши

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

    Slider: hover li, .slider:hover .progress-bar { animation-play-state: paused; }

    Заключение и бонусный CSS3 слайдер)

    Наконец, мы достигли конца урока. CSS3 слайдер теперь готов на 100%! Взгляните на демонстрационный пример CSS слайдера без Javascript . Он работает в Firefox 5+, Safari 4+, IE10+ и Google Chrome, а также iPhone и IPad..

    Эффект впечатляет, но по общему признанию, это слайдер не очень гибкий. Например, чтобы добавить больше изображений, вам придется редактировать все ключевые кадры. CSS3 имеет большой потенциал, но иногда лучше воспользоваться JavaScript, чем заморачиваться с ключевыми кадрами. А теперь, бонусный слайдер на CSS3 , как я и обещал.

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

    В общем что говорить, это нужно увидеть!

    Слайдер на CSS3 (без JS*), подстраивающийся под разрешение

    Поддержка браузеров:

    Лучшая по тестам: Firefox (производительность плавных переходов)
    Полная поддержка: Chrome, Firefox, Opera, Safari (последние версии)
    Частичная поддержка: IE9 (работает, но не поддерживает плавные переходы)

    *JS не нужен для функциональности самого слайдера, но есть 1 фикс для совместимости с его использованием

    Устройства на iOS не обрабатывают label-ы как надо. В смысле когда кликаешь на label, он должен активировать объект, на который указывает его атрибут for. Я добавил яваскриптовый фикс для этого. Я мог бы переделать всё решение с использованием:target вместо:checked, что тоже должно было бы «починить» проблему, но это значило бы, что я мог бы использовать лишь 1 слайдер на странице. Я еще покопаюсь с этим.

    Страничку без JS-фикса для iOS можно посмотреть .

    Как это работает?

    Слайдер во многом похож на все JS-слайдеры. Его контентные области (статьи) «плавают» рядом друг с другом. Излишки скрываются с помощью overflow. Потом мы можем анимировать margin внутреннего дива, так, если у нас 5 статей, левый маргин -100% покажет нам вторую статью.

    Чтобы сохранить наш выбор, мы используем радиокнопки. Как отмечено выше, можно использовать:target и ссылки с якорями, но это не дает полной замены яваскрипту, т.к. можно обработать лишь одно действие за раз, клики запоминаются в истории браузера и загаживают ее (кнопка «назад» браузера будет долго перематывать слайдер обратно), к тому же такое уже делали раньше.