簡體   English   中英

如何在HTML中添加流暢的幻燈片

[英]How to add smooth slideshow in html

我是HTML,CSS和JavaScript的新手。 我想使用jQuery的JavaScript在網站中添加流暢的幻燈片。 目前,我的代碼是這樣的。 我不知道如何使用jQuery。

<div class="col-md-6">
    <div class="story_image wow slideInLeft" data-wow-duration="2s">
         <img src="images/1.jpg" alt="" class="mySlides">
         <img src="images/2.jpg" alt="" class="mySlides">
         <img src="images/3.jpg" alt="" class="mySlides">
         <img src="images/4.jpg" alt="" class="mySlides">
         <img src="images/5.jpg" alt="" class="mySlides">
    </div>
</div>

我像這樣使用JavaScript。

    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, 3000); // Change image every 2 seconds
}

您可以改用opacity ,並使用CSS過渡使其平滑。 盡管這需要絕對定位圖像,但是父對象將不再與圖像的高度匹配,因此您可以將容器高度設置為與當前圖像匹配,並進行過渡。

 var myIndex = 0, container = document.getElementsByClassName('story_image')[0]; carousel(); function carousel() { var i, el, x = document.getElementsByClassName("mySlides"); for (i = 0; i < x.length; i++) { x[i].style.opacity = "0"; } myIndex++; if (myIndex > x.length) { myIndex = 1 } el = x[myIndex - 1]; container.style.height = el.height + 'px'; setTimeout(function() { el.style.opacity = "1"; setTimeout(carousel, 3000); },500); } 
 .story_image { position: relative; transition: height .5s; background: #eee; } .mySlides { position: absolute; top: 0; left: 0; transition: opacity .5s; } 
 <div class="col-md-6"> <div class="story_image wow slideInLeft" data-wow-duration="2s"> <img src="http://kenwheeler.github.io/slick/img/fonz1.png" alt="" class="mySlides"> <img src="http://www.jqueryscript.net/images/Simplest-Responsive-jQuery-Image-Lightbox-Plugin-simple-lightbox.jpg" alt="" class="mySlides"> <img src="http://www.jqueryscript.net/images/Dynamic-Horizontal-Vertical-Image-Slider-Plugin-slideBox.jpg" alt="" class="mySlides"> </div> </div> 

您問題中的代碼已經可以正常工作,如添加到問題中的jsfiddle所示
這是您問題中的javascript,當我出於某種原因無法查看時,我去找它。

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, 3000); // Change image every 2 seconds
}

而且效果很好。

我建議您通讀ksylvest開發的carousel.js ,或者如果您想重構代碼或找到更強大的功能,則使用bootstrap 3示例 ,盡管您還算不錯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM