''推拉门''动效也可以称作"手风琴"效果,大多数效果实现的思路基本是一样的,下面介绍两种方法,一种是通过改变图片的偏移位置实现移动,另一种是通过遍历背景图片后改变图片的宽度实现变换。本文主要和分享两种方法实现''推拉门''动画效果也可以称作是手风琴效果,具体实现方法大家通过本文一起学习吧,希望能帮助到大家。
实现方法一:改变图片宽度
html+css代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <body>
<p class = "box" >
<ul>
<!-- <li></li> -->
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</p>
</body>
<style>
*{
padding: 0;
margin: 0;
}
.box{
width: 1200px;
height: 500px;
border:1px solid red;
margin: 50px auto;
}
.box ul{
list-style: none;
width: 1210px;
}
.box ul li{
width: 240px;
height: 500px;
float: left;
}
</style>
|
Salin selepas log masuk
jQuery实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <script src = 'jquery-3.2.1.js'></script>
<script>
$( function (){
var lis = $( 'li' );
lis.each( function (index, element){
var imgName = "images/slidepic" + (index + 2) + ".jpg " ;
$(element).css( 'background' , "url('" + imgName + "')" )
});
lis.mouseenter( function (){
$(this).stop().animate({width: 800});
$(this).siblings( 'li' ).stop().animate({width: 100});
});
lis.mouseout( function (){
lis.stop().animate({width: 240});
});
})
</script>
|
Salin selepas log masuk
jQuery精简后代码
1 2 3 4 5 6 7 8 9 10 | $( function (){
$( 'li' ).each( function (index, element){
$(element).css( 'backgroud' , "url('images/slidepic" +(index + 2)+.jpg')");
}).mouseenter( function (){
$(this).stop().animate({width: 800}).siblings().stop().aniamte(width: 100});
}).mouseout( function (){
$( 'li' ).stop().animate({width: 240});
});
})
|
Salin selepas log masuk
实现方法二:改变图片的偏移值
html+css代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <body>
<p class = "picList" >
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</p>
</body>
<style>
*{
background-color: #aaa;
padding: 0;
margin: 0;
}
ul{list-style: none;}
.picList{
width: 1000px;
height: 400px;
margin:100px auto;
position: relative;
overflow: hidden;
}
.picList ul li{
position: absolute;
width: 1000px;
height: 400px;
top: 0;
}
img{
width: 100%;
height: 400px;
cursor: pointer;
}
</style>
|
Salin selepas log masuk
jQuery实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <script src = 'jquery-3.2.1.js'></script>
<script >
$( function (){
var lis = $( 'li' );
for ( var i = 0; i < lis.length; i++){
lis.eq(i).css({left:i*200 + 'px' });
}
lis.hover( function (){
var index = $(this).index();
for ( var j = 0; j <= index; j++){
lis.eq(j).stop().animate({left: j*100 + 'px' },300);
}
for ( var j = index + 1; j < lis.length; j++){
lis.eq(j).stop().animate({left: 500+j*100 + 'px' },300);
}
}, function (){
for ( var i = 0; i < lis.length; i++){
lis.eq(i).stop().animate({left: i*200 + 'px' },300);
}
});
})
</script>
|
Salin selepas log masuk
注意:方法一在实现的过程中,注意宽度和图片命名的设置。
提示:这里使用的是jQuery代码实现,javaScript代码也是一样的可以实现,只是修改下遍历过程和内置函数方法,另外再重写动画函数(前面的笔记有封装好的animate函数,可以直接引入使用)。
相关推荐:
实例详解jQuery自动或手动图片切换效果
实例详解JS实现分页浏览横向图片
jQuery实现图片文件上传之前预览功能
Atas ialah kandungan terperinci 实例详解基于jQuery实现图片推拉门动画效果. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!