Переход слайдера @keyframes

У меня есть слайд-шоу css keyframes, которое слишком быстро переключилось с 5-го элемента на 1-й. Я не уверен, почему это происходит, но вы заметите, что когда на экране отображается проект 5 слайдов, он быстро переключается на проект 1. Я бы хотел, чтобы это отображалось в течение того же времени, что и другие. Если есть какой-нибудь способ продолжить этот последний проект, я был бы очень признателен за помощь.

<div id = "slider">
<figure>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 1</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 2</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 3</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 4</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 5</div>
</div>
</div>
</figure>
</div>

@keyframes slidy {
0% { left: 0%; }
20% { left: 0%; }
25% { left: -100%; }
45% { left: -100%; }
50% { left: -200%; }
70% { left: -200%; }
75% { left: -300%; }
95% { left: -300%; }
100% { left: -400%; }
}

body { margin: 0; } 

div#slider { overflow: hidden; }

div#slider figure .page { width: 100vw; float: left; }

div#slider figure { 
position: relative;
width: 500vw;
margin: 0;
left: 0;
text-align: left;
font-size: 10;
animation: 30s slidy infinite; 
}

.page {
display: flex; 
justify-content: center; 
}

.project {
display: flex; 
align-items: center; 
}

конечно сделал, спасибо вам большое

Travis Martin 06.09.2018 17:32
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
1
472
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

@keyframes slidy {
0% { left: 0%; }
15% { left: 0%; }
20% { left: -100%; }
35% { left: -100%; }
40% { left: -200%; }
55% { left: -200%; }
60% { left: -300%; }
75% { left: -300%; }
80% { left: -400%; }
95% { left: -400%; }
}

Добро пожаловать в StackOverflow. Отвечая на вопросы с помощью кода, постарайтесь иметь в виду, что OP, а также другие люди, которые могут прийти в поисках аналогичной проблемы, гораздо больше выиграют от объяснения того, как работает код, а не от простого кода.

FilipRistic 01.09.2018 17:36
Ответ принят как подходящий

Это связано с тем, что при циклическом прохождении элементов разница между 100 и 0 процентами составляет всего 1 процент, поэтому анимация должна происходить всего за 1 процент продолжительности. Простое разделение продолжительности (в процентах) поровну решает проблему.

@keyframes slidy {
0% { left: 0%; }
10% { left: 0%; }
20% { left: -100%; }
30% { left: -100%; }
40% { left: -200%; }
50% { left: -200%; }
60% { left: -300%; }
70% { left: -300%; }
80% { left: -400%; }
90% { left: -400%; }
}

body { margin: 0; } 

div#slider { overflow: hidden; }

div#slider figure .page { width: 100vw; float: left; }

div#slider figure { 
position: relative;
width: 500vw;
margin: 0;
left: 0;
text-align: left;
font-size: 10;
animation: 30s slidy infinite; 
}

.page {
display: flex; 
justify-content: center; 
}

.project {
display: flex; 
align-items: center; 
}
<div id = "slider">
<figure>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 1</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 2</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 3</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 4</div>
</div>
</div>
<div class = "page">
<div class = "project">
  <div class = "col project-img">
    <img src = "https://via.placeholder.com/350x350">
  </div>
  <div class = "col project-info">info 5</div>
</div>
</div>
</figure>
</div>

Другие вопросы по теме