最近要做一個產品展示功能,由於產品比較多,一屏展示不完,所以想要做一個通過點擊進行翻頁的效果,在網上找了幾個都不大好用,最後只能自己動手寫了。
效果如下所示:
原理比較簡單:將要滾動顯示的區域的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--;
}
}
});
});