回覆列表
  • 1 # 錢布斯

    可以透過輸入程式碼來操作。

    這裡的圖片輪播方法是我從網上參考的方法,只是自己做了一些改進,先來貼一發程式碼:

    <!DOCTYPE HTML>

    <html>

    <head>

    <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>

    <script type="text/javascript" src="./js/test2.js"></script>

    </head>

    <body>

    <div>

    <header>

    <div>

    <ul>

    <li><img src="./img/s1.jpg"></li>

    <li><img src="./img/s2.jpg"></li>

    <li><img src="./img/s3.jpg"></li>

    </ul>

    </div>

    </header>

    </div>

    </body>

    </html>

    在這個html的目錄下有三個同級的資料夾,img中放圖片,css和js分別存放這個網頁的css檔案和js檔案,這裡用到了jquery,記得引入順序,jquery一定要放在其他js前面。html程式碼很簡單,不做過多解釋。

    看一下引入的css,init2.css

    *{

    margin: 0px ;

    padding: 0px ;

    }

    #layout{

    width: 960px ;

    margin: 0 auto ;

    }

    #banner{

    position: relative;

    overflow: hidden;

    width: 600px;

    height: 200px;

    border-radius: 10px ;

    border: 2px solid black;

    }

    #banner_img li{

    float: left;

    list-style-type: none;

    }

    #index{

    position: absolute;

    right: 8px ;

    bottom: 8px ;

    }

    #index li{

    float: left;

    width: 16px ;

    height: 16px ;

    text-align: center;

    line-height: 16px ;

    border-radius: 5px ;

    border:1px solid #FF7300 ;

    background: white;

    list-style: none;

    margin-left: 8px ;

    cursor: pointer;

    }

    .clearfix:after{

    content: "" ;

    height: 0px ;

    display: block;

    clear:both ;

    }

    .on

    {

    background:#FF7300 ;

    }

    css基本上和前面的html中的類對應,claerfix來清除浮動,on是代表輪播圖片的索引中當前的正播放的圖片的索引,其實就改個背景,這裡的索引是後面動態加上去的,索引在html中看不到。主要思路就是把裝圖片的容器設定成overfl;hidden;下面是一種比較簡單的實現,利用jquery的fadeIn和fadeOut效果來實現。

    //fadeIn and fadeOut

    var time ;

    var index = 1 ;

    var tolnum = 3 ;

    $(function(){

    <span> </span>setInterval("showBanner("+tolnum+")",3000);

    });

    function showBanner(n)

    {

    <span> </span>var ul = $("#banner_img") ;

    <span> </span>ul.children().fadeOut("slow") ;

    <span> </span>ul.children().eq(index).fadeIn("slow") ;

    <span> </span>index = index+1>n-1 ? 0 : index+1 ;

    }

    恩,不知道為什麼到最後一張圖片的時候會產生沒有淡出的bug,不太懂,請大家指教。第二種方法是利用jquery的animation來實現margin屬性的過渡。

    init();

    function init()

    {

    $(function(){

    var index = 0 ;

    var adTime ;

    var len = $("#banner_img li").length ;

    addIndex(len) ;

    var bannerLi = $("#index li");

    //handle index

    $("#index li").mouseover(function() {

    index = $("#index li").index(this) ;

    showImgs(index) ;

    });

    //toggleInterval

    $("#banner").hover(function(){

    clearInterval(adTimer);

    },function(){

    adTimer=setInterval(function(){

    //alert(index) ;

    showImgs(index);

    index++;

    if(index==len){

    index=0;

    }

    },2000)

    }).trigger("mouseleave");

    });

    }

    //auto add index

    function addIndex(n)

    {

    var ul = $("<ul id=\"index\"></ul>") ;

    for(var i=1;i<=n;i++)

    {

    var li = $("<li></li>") ;

    li.append(function(num){

    return num

    }(i)) ;

    ul.append(li) ;

    }

    ul.children().first().addClass("on") ;

    $("#banner_img").append(ul);

    }

    function showImgs(index)

    {

    var adwidth=$("#banner_img>li:first").width();

    $("#banner_img").stop(true, false) ;

    //$("#banner_img").css("margin-left", -index*adwidth+"px");

    $("#banner_img").animate({

    "marginLeft":-adwidth*index+"px"

    },1000);

    $("#index li").removeClass("on").eq(index).addClass("on") ;

    }

    hover()是一種代替mouseenter和mouseleave的方法,聽說比較好用。trigger()來觸發當前物件的一個狀態,這裡要先觸發一次mouseleave的狀態來初始化計時器,因為這裡的設定是當滑鼠移到$("#banner")上就銷燬定時器,鎖定當前圖片,移開滑鼠就重新新增定時器。<pre name="code"> $("#banner_img").animate({

    "marginLeft":-adwidth*index+"px"

    },1000);

    這了就是對jquery中animation方法的使用,透過傳進來的index來改變banner_img的margin,這裡是margin-left,所以圖片就會從右往左刷(需要設定浮動),如果需要從下往上刷就設定margin-top就好了,還有我發現js中動態新增margin是不能觸發css的transition的。

  • 中秋節和大豐收的關聯?
  • 舉什麼度日(成語)?