jquery實(shí)現(xiàn)百葉窗效果(利用li的定位)
本文實(shí)例為大家分享了jquery實(shí)現(xiàn)百葉窗效果的具體代碼,供大家參考,具體內(nèi)容如下
大概思路:
一個(gè)div(寬度為800px),里面包含ul和li,li的寬高分別設(shè)置為560px,300px(li里的圖片也是這個(gè)寬高)。li設(shè)置絕對定位,div設(shè)置相對定位。
.no0{ left:0; }
.no1{ left:160px; }
.no2{ left:320px; }
.no3{ left:480px; }
.no4{ left: 640px; }
不動(dòng)畫的時(shí)候,每個(gè)li寬高為160px。(800/5=160 div的寬度/圖片個(gè)數(shù))
動(dòng)畫的時(shí)候,被鼠標(biāo)進(jìn)入的li寬高為560px,300px,把圖片完全顯示出來。其他未被鼠標(biāo)進(jìn)入的圖片,寬度為(800-560)/4=160px
當(dāng)鼠標(biāo)出去box框的話,各個(gè)圖片回復(fù)最初的位置。
代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
*{
margin:0;
padding:0;
overflow: hidden;
}
.box{
width:800px;
height:300px;
border:5px solid gray;
margin:100px auto;
position: relative;
}
li{
list-style: none;
float: left;
position:absolute;
/*width:160px;*/
height:300px;
width:560px;
}
.no0{ left:0; }
.no1{ left:160px; }
.no2{ left:320px; }
.no3{ left:480px; }
.no4{ left: 640px; }
img{
width:560px;
height:300px;
}
</style>
<body>
<div class="box">
<ul>
<li class="no0"> <img src="img/0.jpg" alt=""> </li>
<li class="no1"> <img src="img/1.jpg" alt=""> </li>
<li class="no2"> <img src="img/2.jpg" alt=""> </li>
<li class="no3"> <img src="img/3.jpg" alt=""> </li>
<li class="no4"> <img src="img/4.jpg" alt=""> </li>
</ul>
</div>
<script src="js/jquery-1.12.3.min.js"> </script>
<script>
// 最初的位置 0 160 320 480 640
// 最左邊的位置 0 60 120 180 240
//最右邊位置:0 560 620 680 740
$lis = $("li");
//當(dāng)鼠標(biāo)進(jìn)入圖1的時(shí)候,圖1到圖4往右邊動(dòng)畫
$lis.eq(0).mouseenter(function(){
$lis.stop(true);
$lis.eq(1).animate({left:560},1000);
$lis.eq(2).animate({left:620},1000);
$lis.eq(3).animate({left:680},1000);
$lis.eq(4).animate({left:740},1000);
});
//當(dāng)鼠標(biāo)進(jìn)入圖2的時(shí)候,圖2往左邊動(dòng)畫,圖3到圖4往右邊動(dòng)畫
$lis.eq(1).mouseenter(function(){
$lis.stop(true);
$lis.eq(1).animate({left:60},1000);
$lis.eq(2).animate({left:620},1000);
$lis.eq(3).animate({left:680},1000);
$lis.eq(4).animate({left:740},1000);
});
$lis.eq(2).mouseenter(function(){
$lis.stop(true);
$lis.eq(1).animate({left:60},1000);
$lis.eq(2).animate({left:120},1000);
$lis.eq(3).animate({left:680},1000);
$lis.eq(4).animate({left:740},1000);
});
$lis.eq(3).mouseenter(function(){
$lis.stop(true);
$lis.eq(1).animate({left:60},1000);
$lis.eq(2).animate({left:120},1000);
$lis.eq(3).animate({left:180},1000);
$lis.eq(4).animate({left:740},1000);
});
$lis.eq(4).mouseenter(function(){
$lis.stop(true);
$lis.eq(1).animate({left:60},1000);
$lis.eq(2).animate({left:120},1000);
$lis.eq(3).animate({left:180},1000);
$lis.eq(4).animate({left:240},1000);
});
//鼠標(biāo)離開box的時(shí)候,各個(gè)圖片返回原來的位置
$(".box").mouseleave(function(){
$lis.stop(true);
$lis.eq(1).animate({left:160},1000);
$lis.eq(2).animate({left:320},1000);
$lis.eq(3).animate({left:480},1000);
$lis.eq(4).animate({left:640},1000);
})
</script>
</body>
</html>
運(yùn)行結(jié)果:


代碼簡化:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
*{
margin:0;
padding:0;
overflow: hidden;
}
.box{
width:800px;
height:300px;
border:5px solid gray;
margin:100px auto;
position: relative;
}
li{
list-style: none;
float: left;
position:absolute;
width:560px;
height:300px;
}
.no0{ left:0; }
.no1{ left:160px; }
.no2{ left:320px; }
.no3{ left:480px; }
.no4{ left: 640px; }
img{
width:560px;
height:300px;
}
</style>
<body>
<div class="box">
<ul>
<li class="no0"> <img src="img/0.jpg" alt=""> </li>
<li class="no1"> <img src="img/1.jpg" alt=""> </li>
<li class="no2"> <img src="img/2.jpg" alt=""> </li>
<li class="no3"> <img src="img/3.jpg" alt=""> </li>
<li class="no4"> <img src="img/4.jpg" alt=""> </li>
</ul>
</div>
<script src="js/jquery-1.12.3.min.js"></script>
<script>
// 最初的位置 0 160 320 480 640
// 最左邊的位置 0 60 120 180 240
//最右邊位置:0 560 620 680 740
$lis = $("li");
$lis.mouseenter(function(){
$lis.stop(true);
console.log( $(this).index());
var index = $(this).index();
// 當(dāng)圖片在被鼠標(biāo)進(jìn)入圖片的左側(cè)的時(shí)候,往左邊動(dòng)畫。在右邊是,往右邊動(dòng)畫
$lis.each(function(i){
if(i <= index){
$(this).animate({left:60*i},1000);
}else{
$(this).animate({left:560+60*(i-1)},1000);
}
})
})
//鼠標(biāo)離開box的時(shí)候,各個(gè)圖片返回原來的位置
$(".box").mouseleave(function(){
$lis.stop(true);
$lis.each( function(i){
$(this).animate({left:160*i},1000);
});
});
</script>
</body>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JQuery頁面圖片切換和新聞列表滾動(dòng)效果的具體實(shí)現(xiàn)
這篇文章介紹了JQuery頁面圖片切換和新聞列表滾動(dòng)效果的具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-09-09
Jquery+CSS3實(shí)現(xiàn)一款簡潔大氣帶滑動(dòng)效果的彈出層
此Jquery特效是一款Jquery+CSS3實(shí)現(xiàn)簡潔大氣帶滑動(dòng)效果的彈出層,在消息提示、彈出層顯示內(nèi)容、彈出層登錄等,帶遮罩效果,感興趣的朋友可以參考下哈,希望可以幫助到你2013-05-05
基于jquery實(shí)現(xiàn)的圖片在各種分辨率下未知的容器內(nèi)上下左右居中
這篇文章主要介紹了基于jquery實(shí)現(xiàn)的圖片在各種分辨率下未知的容器內(nèi)上下左右居中的方法,需要的朋友可以參考下2014-05-05

