CSS3 Fade слайдер ( С эффектом затемнения)

Сегодня мы разберёмся как создать красивый и плавный слайдер на CSS3. Он использует эффект затухания для перехода между слайдами. Кроме того, вы можете использовать любой рекламный текст или просто описание для каждого слайда. Мы будем использовать основной UL-LI неупорядоченный список, чтобы сделать этот слайдер. Для смены изображений нет необходимости в ручном управлении, CSS3 анимация переключает слайды автоматически.

Итак, давайте начнём.


Шаг 1. HTML

Гипертекстовая разметка слайдера очень проста. Есть четыре слайда, каждый состоит из изображения (в качестве фона) и рекламного текста в DIV. Если вам нужно – вы всегда можете добавить дополнительные слайды.

<div class="slides">
    <ul> <!-- slides -->
        <li><img src="images/pic1.jpg" alt="image01" />
            <div>Promo text #1</div>
        </li>
        <li><img src="images/pic2.jpg" alt="image02" />
            <div>Promo text #2</div>
        </li>
        <li><img src="images/pic3.jpg" alt="image03" />
            <div>Promo text #3</div>
        </li>
        <li><img src="images/pic4.jpg" alt="image04" />
            <div>Promo text #4</div>
        </li>
    </ul>
</div>

 

Шаг 2. CSS

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

/* fade slider */
.slides {
    height:300px;
    margin:50px auto;
    overflow:hidden;
    position:relative;
    width:900px;
}
.slides ul {
    list-style:none;
    position:relative;
}

/* keyframes #anim_slides */
@-webkit-keyframes anim_slides {
    0% {
        opacity:0;
    }
    6% {
        opacity:1;
    }
    24% {
        opacity:1;
    }
    30% {
        opacity:0;
    }
    100% {
        opacity:0;
    }
}
@-moz-keyframes anim_slides {
    0% {
        opacity:0;
    }
    6% {
        opacity:1;
    }
    24% {
        opacity:1;
    }
    30% {
        opacity:0;
    }
    100% {
        opacity:0;
    }
}

.slides ul li {
    opacity:0;
    position:absolute;
    top:0;

    /* css3 animation */
    -webkit-animation-name: anim_slides;
    -webkit-animation-duration: 24.0s;
    -webkit-animation-timing-function: linear;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-direction: normal;
    -webkit-animation-delay: 0;
    -webkit-animation-play-state: running;
    -webkit-animation-fill-mode: forwards;

    -moz-animation-name: anim_slides;
    -moz-animation-duration: 24.0s;
    -moz-animation-timing-function: linear;
    -moz-animation-iteration-count: infinite;
    -moz-animation-direction: normal;
    -moz-animation-delay: 0;
    -moz-animation-play-state: running;
    -moz-animation-fill-mode: forwards;
}

/* 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;
}
.slides ul li img {
    display:block;
}

/* keyframes #anim_titles */
@-webkit-keyframes anim_titles {
    0% {
        left:100%;
        opacity:0;
    }
    5% {
        left:10%;
        opacity:1;
    }
    20% {
        left:10%;
        opacity:1;
    }
    25% {
        left:100%;
        opacity:0;
    }
    100% {
        left:100%;
        opacity:0;
    }
}
@-moz-keyframes anim_titles {
    0% {
        left:100%;
        opacity:0;
    }
    5% {
        left:10%;
        opacity:1;
    }
    20% {
        left:10%;
        opacity:1;
    }
    25% {
        left:100%;
        opacity:0;
    }
    100% {
        left:100%;
        opacity:0;
    }
}

.slides ul li div {
    background-color:#000000;
    border-radius:10px 10px 10px 10px;
    box-shadow:0 0 5px #FFFFFF inset;
    color:#FFFFFF;
    font-size:26px;
    left:10%;
    margin:0 auto;
    padding:20px;
    position:absolute;
    top:50%;
    width:200px;

    /* css3 animation */
    -webkit-animation-name: anim_titles;
    -webkit-animation-duration: 24.0s;
    -webkit-animation-timing-function: linear;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-direction: normal;
    -webkit-animation-delay: 0;
    -webkit-animation-play-state: running;
    -webkit-animation-fill-mode: forwards;

    -moz-animation-name: anim_titles;
    -moz-animation-duration: 24.0s;
    -moz-animation-timing-function: linear;
    -moz-animation-iteration-count: infinite;
    -moz-animation-direction: normal;
    -moz-animation-delay: 0;
    -moz-animation-play-state: running;
    -moz-animation-fill-mode: forwards;
}

 

Вы могли заметить, что здесь использованы две CSS3 анимации: anim_slides и anim_titles. Первый для изображений, второй – текста. Для того, чтобы переключаться между слайдами – мы меняем их непрозрачность. Для заголовков – мы меняем положение и так же непрозрачность.


See the Pen CSS3 Fade slider by vavik (@vavik96) on CodePen.


Вывод

Это все на сегодня. Мы только что создали новый классный слайдер на чистом CSS3 с эффектом затухания (Fade). Мы надеемся, что вам он понравится. Удачи!

 

script-tutorials.com

3 thoughts on “CSS3 Fade слайдер ( С эффектом затемнения)

  • 17/10/2017 в 16:16
    Permalink

    Добрый день.

    Подскажите, если элементов не 4 а 8, или более.
    И я меняю delay и duration, например 8 элементов, каждый отображается по 3 секунды.
    Значит duration так же 24, delay по 3сек – 3-6-9-12 и тд.
    Будет так же работать?
    Можете объяснить почему вот такой алгоритм:
    0% {
    opacity:0;
    }
    6% {
    opacity:1;
    }
    24% {
    opacity:1;
    }
    30% {
    opacity:0;
    }
    100% {
    opacity:0;
    }
    ???
    У меня ваш вариант начинается с последней картинки, потом первая, вторая и тд.
    Убрал тайтлы и их анимацию, + вместо связки div-ul-li-im у меня figure с background.

    Ответ
    • 17/10/2017 в 16:20
      Permalink

      Так же заметил что из 8 слайдов отображается 7, 1-6 и 8.

      Ответ
  • 19/10/2017 в 18:04
    Permalink

    Здравствуйте,
    Алгоритм мне тоже не понятен, поигравшись с кодом, я оставил попытки подогнать его под себя. На своём сайте (http://www.script-tutorials.com/css3-fade-slider/), автор на похожий вопрос ответил примерно так:

    “в случае 7 изображений – это 42 секунды (6 секунд для каждого изображения).
    После этого вам нужно будет добавить задержки. обратите внимание на строки 120-131
    Есть задержки для элементов 2, 3 и 4. Вам нужно будет добавить дополнительные задержки здесь.
    Наконец, вам нужно будет изменить ключевые кадры. Сейчас моя логика: непрозрачность 0 в начале, после – быстрый переход к непрозрачности = 1 на 5-6%, затем сохранить эту непрозрачность (1) до ~ 20%, затем мы можем вернуться к 0 (в течение ~ 5 %). и в следующий раз мы можем сохранить непрозрачность = 0.
    Как видите, целое расстояние разделено четырьмя основными сегментами (для 4 изображений).”

    Может Вам повезёт больше, удачи.

    Ответ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.