Проект "Україна незламна!": створення слайдеру на сторінці

 

Для створення анімованого слайдеру тільки на основі css потрібно створити відповідний html-код на веб сторінці. Слайдер буде розміщено в секції темного кольору .dark, стилізація цього блоку описана в попередніх публікаціях.

Конструктивно слайдер представляє собою блок-контейнер .container_slider_css, в якому  розміщуються зображення слайдеру, html-код  секції темного кольору уже був використаний раніше:

Блоки .dark-container, .dark-text  стилізовані  раніше, тому залишається стилізувати тільки блок з зображеннями.

Блок контейнера зображень .container_slider_css  розміром 600х600рх  потрібно розмістити по центру вікна браузера з верхнім зовнішнім відступом, так як блоку контейнера задано фіксований розмір (а у випадку  з реалізацією саме такого слайдера, розміри блоку контейнера  потрібно задавати чітко визначені), тому потрібно застосувати ще властивість overflow: hidden; на той випадок, коли вміст  блоку контейнера не поміщається по висоті і ширині, все зайве потрібно у контейнері приховати. Цю функцію і виконує властивість  overflow: hidden;

Також до блоку контейнера  потрібно застосувати  відносне позиціювання, щоб абсолютно позиціонувати самі зображення всередині блоку. В кінцевому результаті властивості блоку контейнера зображень .container_slider_css будуть  такими:

Для реалізації слайдеру будуть застосовані css властивості анімації 

 Правило @keyframes  

CSS keyframes дозволяє проводити зміни постійно і автоматично, а не тільки у відповідь на події миші, як у transition. За допомогою кейфреймів можна змінювати стилі CSS для заданого селектора в будь-якій точці в момент зміни стану або події. 

Це правило використовується в парі з властивістю animation, за допомогою якого можна встановити duration, timing function, delay і direction

Властивості типу transform, якщо вони входять до анімації, оголошуються всередині правила @keyframes.

Правило @keyframes встановлює ключові кадри під час анімації елемента.

Ключовий кадр - це властивості елемента (прозорість, колір, положення та ін.), які повинні застосовуватися до нього в певний момент часу. Таким чином, анімація це плавний перехід стильових властивостей від одного ключового кадру до іншого. Обчислення проміжних значень між такими кадрами робить браузер. Найпростіший варіант, коли є лише два ключові кадри - вихідний і кінцевий стан. 

Кожне правило @keyframe повинно мати унікальне ім'я.

Це ім'я використовується в стилях елемента як animation:

.element {
animation: animation-name;
}

У кейфреймі задаються правила, виражені у відсотках. Відсотки це точки вздовж тимчасової лінії анімації, всередині яких задаються стилі для рендерингу на елементі

@keyframes animation-name { 
  0% { 
 color: pink; 
  } 
  50% { 
 color: yellow; 
  } 
  100% {
 color: blue;
 }
}

У цьому прикладі елемент div з класом element змінює колір із рожевого на жовтий і в кінці на синій. Якщо точок лише дві, можна використовувати from і to:


@keyframes animation-name {
from {
color: black;
}
to {
color: white;
}
}


Приклад роботи кейфрейму

See the Pen CSS @keyframes Color-changing Background by kravets (@raisa69) on CodePen.

Властивість animation 

Сам по собі @keyframes без інструкцій, які визначають тривалість, тимчасову функцію та напрямок, нічого не робить. Всі ці інструкції працюють так само, як і у властивості transition

Всі ці властивості можна задати в одній властивості animation за допомогою наступного синтаксису:

animation: duration | timing-function | delay | iteration-count | direction | fill-mode | play-state | name;

Або їх можна задати окремо, додавши слово animation перед кожною підвластивістю:

animation-duration: 1s;
animation-timing-function: ease;
animation-delay: 2s;
animation-iteration-count: infinite;

Не всі властивості обов'язкові, але вони повинні бути записані в правильному порядку, щоб браузер міг правильно застосувати timing value і відрізнити ім'я анімації від інших ключових слів. 

Короткий опис властивостей: 

  • duration - задає тривалість анімації від початку до кінця; 
  • timing-function - задає спосіб пересування анімації вздовж тимчасового "треку", наприклад, ease, ease-in, linear тощо; 
  • delay – час затримки (якщо вона є) старту анімації; 
  • iteration-count – скільки разів грати анімацію, 
  • infinite - значення  для зациклювання 

Приклад застосування властивостей  анімації

See the Pen Animation Timing functions visualization by kravets (@raisa69) on CodePen.

За замовчуванням анімація проходить один цикл та завершується. Як animation-iteration-count можна вказати значення як числа, тобто. скільки разів має запуститися анімація. Також для зациклювання можна використати ключове слово infinite.

Отже, для реалізації анімації зображень в блоці-контейнері потрібно задати анімацію безпосередньо для самих зображень, які мають клас .photo_slider_css, зображення будуть позиційовані абослютно відносно контейнера, анімації буде присвоєно ім'я round, для  9 зображень у слайдері час на 1 цикл анімації 45с, щоб зображення були  адаптивними,  визначаємо  їх ширину у 100%, і задаємо початкову прозорість opacity: 0;

Далі потрібно визначити властивості для правила @keyframes для анімації round:

25% і 40% - це проміжки часу під час якого буде тривати анімація появи-зникнення зображення описаного властивістю opacity.

Наступним кроком буде визначення для кожного зображення слайдеру через скільки секунд  від початку воно буде з'являтись і скільки буде  затримуватись на екрані, щоб звернутись до кожного зображення, можна застосувати властивість псевдокласу  :nth-child(), яка знаходить один або більше елементів, виходячи з їхньої позиції серед групи сусідніх елементів і вказати  інтвервал часу в  секундах


Результат буде таким





Нові Старіші