您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

jQuery实现图片推拉门动画效果的两种方法分享

2024/10/24 20:46:06发布42次查看
''推拉门''动效也可以称作手风琴效果,大多数效果实现的思路基本是一样的,下面介绍两种方法,一种是通过改变图片的偏移位置实现移动,另一种是通过遍历背景图片后改变图片的宽度实现变换。本文两种方法实现''推拉门''动画效果也可以称作是手风琴效果,具体实现方法大家通过本文一起学习吧,希望能版助到大家。
实现方法一:改变图片宽度
html+css代码
<body>   <p class="box">     <ul>       <!-- <li>![](images/slidepic2.jpg)</li> -->       <li></li>       <li></li>       <li></li>       <li></li>       <li></li>     </ul>   </p> </body> <style>     *{       padding: 0;       margin: 0;     }     .box{       /*收缩状态:缩放时每个图片的大小240px 所以总大小1200px*/       /*展开状态:当前图片宽度800px 其他图片宽度100px*/       width: 1200px;       height: 500px;       border:1px solid red;       margin: 50px auto;     }     .box ul{       list-style: none;       width: 1210px;     }     /*设置每一张图片的大小和float: left*/     .box ul li{       width: 240px;       height: 500px;       /*background: url(images/slidepic2.jpg);*/       float: left;     }   </style>
jquery实现
<script src = 'jquery-3.2.1.js'></script> <script>   $(function(){     //1遍历每一张li 获取每个元素设置对应的图片     var lis = $('li');     lis.each(function(index, element){       //通过设置背景图片名称改变图片的显示       var imgname = images/slidepic + (index + 2) +.jpg ;       $(element).css('background', url('+ imgname +'))     });     //2.展开状态     //鼠标滑入改变对应图片宽度800 其他图片(兄弟)改为100     lis.mouseenter(function(){       // console.log(this); 当前的li dom元素       //当前的图片的宽度变为800       $(this).stop().animate({width: 800});       //其他图片的宽度变为100       $(this).siblings('li').stop().animate({width: 100});     });     //3鼠标滑出是全部显示为收缩状态     lis.mouseout(function(){       lis.stop().animate({width: 240});     });   }) </script>
jquery精简后代码
//精简代码 $(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});   }); })
实现方法二:改变图片的偏移值
html+css代码
<body>   <p class="piclist">     <ul>       <li>![](images/slidepic8.jpg)</li>       <li>![](images/slidepic3.jpg)</li>       <li>![](images/slidepic4.jpg)</li>       <li>![](images/slidepic5.jpg)</li>       <li>![](images/slidepic7.jpg)</li>     </ul>   </p> </body> <style>     *{       background-color: #aaa;       padding: 0;       margin: 0;     }     ul{list-style: none;}     .piclist{       width: 1000px;       height: 400px;       /*border:1px solid #eee;*/       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>
jquery实现
<script src = 'jquery-3.2.1.js'></script> <script >   $(function(){     //1获取所有的图片 设置初始的收缩状态left:i*200     var lis = $('li');     for(var i = 0; i < lis.length; i++){       lis.eq(i).css({left:i*200 + 'px' });     }     //2.设置hover内置函数,实现鼠标滑入展开滑出收缩效果     lis.hover(function(){       var index = $(this).index(); //dom对象转换jquery对象       //2.1鼠标滑入后,当前图片的前面图片偏移位置减小到 j*100位置       for(var j = 0; j <= index; j++){         lis.eq(j).stop().animate({left: j*100 + 'px'},300);       }       //2.2鼠标滑入后,当前图片的后面图片偏移位置扩大到 500+j*100位置       for(var j = index + 1; j < lis.length; j++){         lis.eq(j).stop().animate({left: 500+j*100 + 'px'},300);       }     },function(){ //2.3鼠标滑出后,所有图片恢复到原来的位置 i*200       for(var i = 0; i < lis.length; i++){         lis.eq(i).stop().animate({left: i*200 + 'px'},300);       }     });   }) </script>
注意:方法一在实现的过程中,注意宽度和图片命名的设置。
提示:这里使用的是jquery代码实现,javascript代码也是一样的可以实现,只是修改下遍历过程和内置函数方法,另外再重写动画函数(前面的笔记有封装好的animate函数,可以直接引入使用)。
相关推荐:
实例详解基于jquery实现图片推拉门动画效果
实例详解jquery和html5实现webgl高性能烟花绽放动画效果
dreamweaver怎么制作一个开场动画效果的网页
以上就是jquery实现图片推拉门动画效果的两种方法分享的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product