利用jQuery簡單實現產品展示圖片左右滾動功能(範例程式碼)

來源:互聯網
上載者:User

最近要做一個產品展示功能,由於產品比較多,一屏展示不完,所以想要做一個通過點擊進行翻頁的效果,在網上找了幾個都不大好用,最後只能自己動手寫了。

效果如下所示:



原理比較簡單:將要滾動顯示的地區的CSS的override設為hidden,寬度設成一個比較大的值,如4000px,然後每次點擊上一頁或下一頁的按鈕時,計算當前頁數,如果已經到了最後一頁,則回到第一頁,滾動是通過控制div的left屬性實現的,需要兩個div,外面的div的position設為retative,裡面的DIV的position設為absolute。

主要代碼如下:

HTML:
複製代碼 代碼如下:
<div id="product">
 <h2><span class="arrow">arrow</span>產品展示</h2>
 <span class="prev"></span>
 <div id="content">
 <div id="content_list">
 <dl>
  <dt><img src="images/product1.jpg"/></dt>
  <dd>資料擷取移動終端</dd>
 </dl>
 <dl>
  <dt><img src="images/product2.jpg"/></dt>
  <dd>資料擷取移動終端</dd>
 </dl>
 <dl>
  <dt><img src="images/product3.jpg"/></dt>
  <dd>資料擷取移動終端</dd>
 </dl>
 <dl>
  <dt><img src="images/product3.jpg"/></dt>
  <dd>資料擷取移動終端</dd>
 </dl>
 <dl>
  <dt><img src="images/product1.jpg"/></dt>
  <dd>資料擷取移動終端1</dd>
 </dl>
 <dl>
  <dt><img src="images/product1.jpg"/></dt>
  <dd>資料擷取移動終端1</dd>
 </dl>
 <dl>
  <dt><img src="images/product1.jpg"/></dt>
  <dd>資料擷取移動終端1</dd>
 </dl>
 </div>
 </div>
 <span class="next"></span>
</div>

CSS:
複製代碼 代碼如下:
#product {
 width:720px;
 height:200px;
 border:1px solid #ccc;
 margin:0 5px 5px 0;
 float:left;
}
#product div#content {
 position:relative;
 width:690px;
 height:160px;
 display:inline-block;
 overflow:hidden;
 float:left;
}
#product div#content_list {
 position:absolute;
 width:4000px;
}
#product dl{
 width:160px;
 height:150px;
 float:left;
 margin:10px 4px;
 padding:2px 2px;
}
#product dl:hover {
 border:1px solid #333;
 background:#ccc;
}
#product dl dt {

}
#product dl dt img {
 width:160px;
 height:120px;
 border:none;
}
#product dl dd {
 text-align:center;
}
#product span.prev{
 cursor:pointer;
 display:inline-block;
 width:15px;
 height:150px;
 background:url(../images/arrow_l.gif) no-repeat left center;
 float:left;
}
#product span.next{
 cursor:pointer;
 display:inline-block;
 width:15px;
 height:150px;
 background:url(../images/arrow_r.gif) no-repeat left center;
 float:right;
}

js代碼
複製代碼 代碼如下:
$(function(){
    var page = 1;
    var i = 4; //每版放4個圖片
    //向後 按鈕
    $("span.next").click(function(){    //綁定click事件
   var content = $("div#content");
   var content_list = $("div#content_list");
   var v_width = content.width();
   var len = content.find("dl").length;
   var page_count = Math.ceil(len / i) ;   //只要不是整數,就往大的方向取最小的整數
   if( !content_list.is(":animated") ){    //判斷“內容展示框域”是否正在處於動畫
     if( page == page_count ){  //已經到最後一個版面了,如果再向後,必須跳轉到第一個版面。
    content_list.animate({ left : '0px'}, "slow"); //通過改變left值,跳轉到第一個版面
    page = 1;
     }else{
    content_list.animate({ left : '-='+v_width }, "slow");  //通過改變left值,達到每次換一個版面
    page++;
    }
   }
   });
    //往前 按鈕
    $("span.prev").click(function(){
      var content = $("div#content");
   var content_list = $("div#content_list");
   var v_width = content.width();
   var len = content.find("dl").length;
   var page_count = Math.ceil(len / i) ;   //只要不是整數,就往大的方向取最小的整數
   if(!content_list.is(":animated") ){    //判斷“內容展示框域”是否正在處於動畫
     if(page == 1 ){  //已經到第一個版面了,如果再向前,必須跳轉到最後一個版面。
     content_list.animate({ left : '-='+v_width*(page_count-1) }, "slow");
    page = page_count;
   }else{
    content_list.animate({ left : '+='+v_width }, "slow");
    page--;
   }
  }
    });
});

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.