jQuery實現(xiàn)輪播圖及其原理詳解
本文實例為大家分享了jQuery實現(xiàn)輪播圖及其原理的具體代碼,供大家參考,具體內(nèi)容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>JQuery輪播圖</title>
<style>
*{
padding:0;
margin:0;
}
.container{
width:600px;
height:400px;
overflow: hidden;
position:relative;
margin:0 auto;
}
.list{
width:3000px;
height:400px;
position:absolute;
}
.list>img{
float:left;
width:600px;
height:400px;
}
.pointer{
position:absolute;
width:100px;
bottom:20px;
left:250px;
}
.pointer>span{
cursor:pointer;
display:inline-block;
width:10px;
height:10px;
background: #7b7d80;
border-radius:50%;
border:1px solid #fff;
}
.pointer .on{
background: #28a4c9;
}
.arrow{
position:absolute;
text-decoration:none;
width:40px;
height:40px;
background: #727d8f;
color:#fff;
font-weight: bold;
line-height:40px;
text-align:center;
top:180px;
display:none;
}
.arrow:hover{
background: #0f0f0f;
}
.left{
left:0;
}
.right{
right:0;
}
.container:hover .arrow{
display:block;
}
</style>
</head>
<body>
<div class="container">
<div class="list" style="left:0px;">
<!--<img src="../static/image/photo1.jpg" alt="5"/>-->
<img src="../static/image/banner.jpg" alt="1"/>
<img src="../static/image/slide1.jpg" alt="2"/>
<img src="../static/image/slide1.jpg" alt="3"/>
<img src="../static/image/slide1.jpg" alt="4"/>
<img src="../static/image/photo1.jpg" alt="5"/>
<!--<img src="../static/image/banner.jpg" alt="1"/>-->
</div>
<div class="pointer">
<span index="1" class="on"></span>
<span index="2"></span>
<span index="3"></span>
<span index="4"></span>
<span index="5"></span>
</div>
<a href="#" rel="external nofollow" rel="external nofollow" class="arrow left">></a>
<a href="#" rel="external nofollow" rel="external nofollow" class="arrow right"><</a>
</div>
<script src="../static/js/jquery-3.2.1.min.js"></script>
<script>
var imgCount = 5;
var index = 1;
var intervalId;
var buttonSpan = $('.pointer')[0].children;//htmlCollection 集合
//自動輪播功能 使用定時器
autoNextPage();
function autoNextPage(){
intervalId = setInterval(function(){
nextPage(true);
},3000);
}
//當(dāng)鼠標(biāo)移入 停止輪播
$('.container').mouseover(function(){
console.log('hah');
clearInterval(intervalId);
});
// 當(dāng)鼠標(biāo)移出,開始輪播
$('.container').mouseout(function(){
autoNextPage();
});
//點擊下一頁 上一頁的功能
$('.left').click(function(){
nextPage(true);
});
$('.right').click(function(){
nextPage(false);
});
//小圓點的相應(yīng)功能 事件委托
clickButtons();
function clickButtons(){
var length = buttonSpan.length;
for(var i=0;i<length;i++){
buttonSpan[i].onclick = function(){
$(buttonSpan[index-1]).removeClass('on');
if($(this).attr('index')==1){
index = 5;
}else{
index = $(this).attr('index')-1;
}
nextPage(true);
};
}
}
function nextPage(next){
var targetLeft = 0;
//當(dāng)前的圓點去掉on樣式
$(buttonSpan[index-1]).removeClass('on');
if(next){//往后走
if(index == 5){//到最后一張,直接跳到第一張
targetLeft = 0;
index = 1;
}else{
index++;
targetLeft = -600*(index-1);
}
}else{//往前走
if(index == 1){//在第一張,直接跳到第五張
index = 5;
targetLeft = -600*(imgCount-1);
}else{
index--;
targetLeft = -600*(index-1);
}
}
$('.list').animate({left:targetLeft+'px'});
//更新后的圓點加上樣式
$(buttonSpan[index-1]).addClass('on');
}
</script>
</body>
</html>
效果圖:

原理:
頁面結(jié)構(gòu)方面:
將輪播圖容器設(shè)置成相對定位,寬度設(shè)置成圖片的寬度;容器中分為四部分:輪播的圖片;點擊的小按鈕;前一張;后一張
樣式方面:
- 輪播圖容器為相對定位,寬度/高度設(shè)置成圖片的寬度/高度,設(shè)置overflow為hidden;
- 容器中的每一部分都設(shè)置成絕對定位,放到相應(yīng)的位置;
- 輪播圖片的容器寬度設(shè)置成所有圖片的寬度和,left開始先設(shè)置為0;
- 每張圖片寬度一樣,都設(shè)成左浮動,左右圖片都在一行排列,所以輪播圖的實質(zhì)是裝有圖片的容器的移動,每次移動的距離為一張圖片的寬度,這樣每次就只顯示一張圖片;
- 前一張/后一張設(shè)置成display為none,當(dāng)鼠標(biāo)移入總?cè)萜鲿r,再設(shè)置成display為block
功能方面:
自動輪播為一個定時循環(huán)機制setInteval,鼠標(biāo)移入,循環(huán)停止,移除循環(huán)繼續(xù);
精彩專題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java框架SSH結(jié)合Easyui控件實現(xiàn)省市縣三級聯(lián)動示例解析
這篇文章主要為大家詳細介紹了Java框架SSH結(jié)合Easyui控件實現(xiàn)省市縣三級聯(lián)動示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06
jquery-easyui關(guān)閉tab自動切換到前一個tab
考慮到用戶體驗,當(dāng)用戶關(guān)閉tab時,自動切換到前一個tab不至于讓用戶看到空的界面。2010-07-07
jquery數(shù)組之存放checkbox全選值示例代碼
使用jquery數(shù)組可以存放checkbox全選值,下面有個不錯的示例,感興趣的朋友可以參考下2013-12-12
利用jquery正則表達式在頁面驗證url網(wǎng)址輸入是否正確
這篇文章主要介紹了關(guān)于利用jquery正則表達式在頁面驗證url網(wǎng)址輸入是否正確的相關(guān)資料,文中給出了完整的示例代碼,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04

