анимация исчезновения на слайдере не работает (только CSS3 и html5) - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в CSS3 и HTML5, и сейчас я пытаюсь создать веб-сайт HTML5 и CSS3, чтобы кодировать макет PSD.

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

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

Затем в моем файле CSS я создал @keyframes с эффектом непрозрачности, чтобы продолжитьзатухающая анимация.К сожалению, это не работает, как я думал, только стрелки, но не анимация затухания.

Может ли кто-нибудь помочь мне и взглянуть на мой код?Я действительно ценю это!

ЗДЕСЬ МОЙ КОД HTML5:

@keyframes click{
0%{	opacity:.4;}
100%{opacity:1;}
}

@keyframes fade{
0%  {opacity:1}
45% { opacity: 1}
50% { opacity: 0}
95% {opacity:0}
100% { opacity: 1}
}

@keyframes fade2{
0%   {opacity:0}
45% { opacity: 0}
50% { opacity: 1}
95% { opacity: 1 }
100% { opacity:0}
}


 
#i1, #i2{ display: none;}

.slider{
width: 100%;
height: 550px;
margin: 20px auto;
position: rela
}

#first, #second{
position: absolute;
width: 100%;
height: 100%;
}
      
.previous{
width: 35px;
height: 70px;
position: absolute;
top:40%;
left:0;
background-color: rgba(70, 70, 70,0.6);
border-radius: 0px 50px 50px 0px;
}

.next{
width: 35px;
height: 70px;
position: absolute;
top:40%;
right: 0;
background-color: rgba(70, 70, 70,0.6);
border-radius: 50px 0px 0px 50px;
}

.prev:hover, .next:hover{
transition: .3s;
background-color: rgba(99, 99, 99, 1);
}

.fas.fa-chevron-left{
position: absolute;
left : 0;
top: 30%;
margin-left: 5px;
color: #fff;
font-size: 30px;
}

.fas.fa-chevron-right{
position: absolute;
right: 0;
top: 30%;
margin-right: 5px;
color: white;
font-size: 30px;
}


.slider div#first {
background: url('img1.jpg') no-repeat center;
background-size: cover;
animation:fade 30000s infinite linear;
-webkit-animation:fade 30000s infinite linear;
}

.slider div#second{
background: url('img2.jpg') no-repeat center;
background-size: cover;
animation: fade2 30000ms infinite linear;
-webkit-animation: fade2 30000ms infinite linear;
}

.slide{z-index:-1;}

#i1:checked ~ #first,
#i2:checked ~ #second
{z-index: 10; animation: click 1s ease-in-out;}
<body>
  <div class="slider">
    <input type="radio" id="i1" name="images" checked />
    <input type="radio" id="i2" name="images" />
    <div class="slide" id="first">
      <h1>WEBAGENCY: L'AGANCE DE TOUS <br> VOS PROJETS !</h1>
      <p>Vous avez un projet ? La WebAgency vous aide à les realiser !</p>
      <label class="previous" for="i2"><i class="fas fa-chevron-left"></i></label>
      <label class="next" for="i2"><i class="fas fa-chevron-right"></i></label>
    </div>
    <div class="slide" id="second">
      <label class="previous" for="i1"><i class="fas fa-chevron-left"></i></label>
      <label class="next" for="i1"><i class="fas fa-chevron-right"></i></label> </div>
  </div>
</body>

1 Ответ

0 голосов
/ 30 мая 2018

К сожалению, я не уверен, возможно ли объединить:

  • Ход внизу
  • Рабочие кнопки по бокам
  • Автовыбор

Просто с помощью CSS / HTML.Вы должны сохранить свое состояние в виде переключателей, но если вы продвинетесь с использованием линейной анимации, что произойдет, если пользователь захочет вернуться назад?Как вы синхронизируете состояние?

Вы МОЖЕТЕ иметь как кнопки прогресса, так и рабочие.Я сделал пример, основанный на вашем коде о том, как этого добиться, с возможностью добавления 2+ слайдов.

.radio {
  display: none;
}

.slider {
  width: 100%;
  height: 175px;
  position: absolute;
  left: 0;
  top: 0;
}

.slider__slide {
  position: absolute;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  transition: 1s opacity;
}

.slider__slide:nth-of-type(1) {
  background: IndianRed;
}

.slider__slide:nth-of-type(2) {
  background: Cornsilk;
}

.slider__slide:nth-of-type(3) {
  background: PaleTurquoise;
}

.button {
  width: 35px;
  height: 70px;
  position: absolute;
  top: 40%;
  background-color: rgba(70, 70, 70, 0.6);
}

.button--previous {
  left: 0;
  border-radius: 0px 50px 50px 0px;
}

.button--next {
  right: 0;
  border-radius: 50px 0px 0px 50px;
}

.button:hover {
  transition: 0.3s;
  background-color: rgba(99, 99, 99, 1);
}

.radio:nth-of-type(1):checked ~ .slider__slide:nth-of-type(1),
.radio:nth-of-type(2):checked ~ .slider__slide:nth-of-type(2),
.radio:nth-of-type(3):checked ~ .slider__slide:nth-of-type(3){
  opacity: 1;
  pointer-events: auto;
}

.progress {
  margin: 0;
  padding: 0;
  position: absolute;
  top: 175px;
  left: 0;
  right: 0;
  text-align: center;
  list-style-type: none;
}

.progress__item {
  position: relative;
  display: inline-block;
  margin: 1px;
  border: 3px solid black;
  width: 16px;
  height: 16px;
}

.radio:nth-of-type(1):checked ~ .progress .progress__item:nth-of-type(1):before,
.radio:nth-of-type(2):checked ~ .progress .progress__item:nth-of-type(2):before,
.radio:nth-of-type(3):checked ~ .progress .progress__item:nth-of-type(3):before{
  position: absolute;
  top: 2px;
  right: 2px;
  bottom: 2px;
  left: 2px;  
  content: '';
  background: black;
}


.fas.fa-chevron-left {
  position: absolute;
  left: 0;
  top: 30%;
  margin-left: 5px;
  color: #fff;
  font-size: 30px;
}

.fas.fa-chevron-right {
  position: absolute;
  right: 0;
  top: 30%;
  margin-right: 5px;
  color: white;
  font-size: 30px;
}
<body>
  <div class="slider">
    <input id="i1" class="radio" name="images" type="radio" checked />
    <input id="i2" class="radio" name="images" type="radio" />
    <input id="i3" class="radio" name="images" type="radio" />
    <div class="slider__slide">
      <h1>FIRST SLIDE</h1>
      <p>First Subtitle</p>
      <label class="button button--previous" for="i3"><i class="fas fa-chevron-left"></i></label>
      <label class="button button--next" for="i2"><i class="fas fa-chevron-right"></i></label>
    </div>
    <div class="slider__slide">
      <h1>SECOND SLIDE</h1>
      <p>Second Subtitle</p>
      <label class="button button--previous" for="i1"><i class="fas fa-chevron-left"></i></label>
      <label class="button button--next" for="i3"><i class="fas fa-chevron-right"></i></label>
    </div>
    <div class="slider__slide">
      <h1>THIRD SLIDE</h1>
      <p>Third Subtitle</p>
      <label class="button button--previous" for="i2"><i class="fas fa-chevron-left"></i></label>
      <label class="button button--next" for="i1"><i class="fas fa-chevron-right"></i></label>
    </div>
    <div class="progress">
      <label class="progress__item" for="i1"></label>
      <label class="progress__item" for="i2"></label>
      <label class="progress__item" for="i3"></label>
    </div>
  </div>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...