Изображения не смешиваются во время перехода CSS - PullRequest
0 голосов
/ 29 августа 2018

Моя конкретная проблема заключается в том, что изображения внезапно исчезают до перехода следующего изображения во время переключения изображений в стиле слайд-шоу.

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

Я новичок, и у меня нет опыта работы с JQuery, поэтому мне интересно, стоит ли мне использовать что-то отличное от анимации webkit.

Html:

<div class="pimgSlideshow"; style="max-width:500px">
<img class="mySlides fade" src="../images/pic1.jpg" style="width:100%">
<img class="mySlides fade" src="../images/pic2.jpg" style="width:100%">
<img class="mySlides fade" src="../images/pic3.jpg" style="width:100%">
</div> 

CSS:

.mySlides {display:none;
}

.fade {
  -webkit-animation-name: fade;
  -webkit-animation-duration: 1.5s;
  -webkit-animation-timing-function: ease-in-out;
  animation-name: fade;
  animation-duration: 1.5s;
}

@-webkit-keyframes fade {
  from {opacity: .5} 
  to {opacity: 1}
}

@keyframes fade {
  from {opacity: .5} 
  to {opacity: 1}
}

JS:

var myIndex = 0;
carousel();

function carousel() {
var i;
var x = document.getElementsByClassName("mySlides");
for (i = 0; i < x.length; i++) {
   x[i].style.display = "none";  
}
myIndex++;
if (myIndex > x.length) {myIndex = 1}    
x[myIndex-1].style.display = "block";  
setTimeout(carousel, 5000);
}

1 Ответ

0 голосов
/ 30 августа 2018

Вместо использования CSS-анимации лучше использовать вместо этого переход CSS, заменив отображение: нет; в JavaScript с непрозрачностью = "0" и непрозрачностью = "1" соответственно.

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

Обновлено JS:

var myIndex = 0;
carousel();

function carousel() {
    var i;
    var x = document.getElementsByClassName("mySlides");
    for (i = 0; i < x.length; i++) {
        x[i].style.opacity = "0";  
    }
    myIndex++;
    if (myIndex > x.length) {myIndex = 1}    
    x[myIndex-1].style.opacity = "1";  
    setTimeout(carousel, 5000);
}

CSS

.pimgSlideshow {
    position: relative;
}

.mySlides {
    display:block;
    transition: ease all 1s;
    position: absolute;
    left: 0;
    top: 0;
}

См. Эту скрипку, чтобы продемонстрировать: http://jsfiddle.net/c8uaqk31/19/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...