" />
    
    日记
    
    
    

    基于jQuery实现推拉门动画效果的两种方法

    2023-11-15 16:45:08
    基于jQuery实现推拉门动画效果的两种方法

    ''推拉门''动效也可以称作"手风琴"效果,大多数效果实现的思路基本是一样的,下面介绍两种方法,一种是通过改变图片的偏移位置实现移动,另一种是通过遍历背景图片后改变图片的宽度实现变换。

    实现方法一:改变图片宽度

    html+css代码

    <body>  <div class="box">    <ul>      <!-- <li>![](images/slidepic2.webp)</li> -->      <li></li>      <li></li>      <li></li>      <li></li>      <li></li>    </ul>  </div></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.webp);*/      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) +".webp ";      $(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)+.webp')");  }).mouseenter(function(){    $(this).stop().animate({width: 800}).siblings().stop().aniamte(width: 100});  }).mouseout(function(){    $('li').stop().animate({width: 240});  });})

    实现方法二:改变图片的偏移值

    html+css代码

    <body>  <div class="picList">    <ul>      <li>![](images/slidepic8.webp)</li>      <li>![](images/slidepic3.webp)</li>      <li>![](images/slidepic4.webp)</li>      <li>![](images/slidepic5.webp)</li>      <li>![](images/slidepic7.webp)</li>    </ul>  </div></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实现图片推拉门动画效果的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

    tag:方法动画效果推拉门两种电脑软件

    相关内容

      QQ音乐如何列表循环 QQ音乐单曲循环在哪

      2023-11-15 16:43:54

      史上最全JavaScript数组去重的十种方法(推荐)

      2023-11-15 16:42:44

      IIS7.5 http 1.1 新建应用程序失败的解决方法

      2023-11-15 16:41:01

      git提交空目录的方法

      2023-11-15 16:39:25

      JavaScript中无法通过div.style.left获取值的解决方法

      2023-11-15 16:37:58

      受损的dll文件如何修复

      2023-11-15 16:36:53

      JS获取数组中出现次数最多及第二多元素的方法

      2023-11-15 16:35:13

      Excel表格中怎么运用函数求差

      2023-11-15 16:34:00

      正则表达式全局匹配模式 | g修饰符

      2023-11-15 16:32:10

      ps怎么设计由文字组成的立方体效果图?

      2023-11-15 16:30:42

      Win7/8修改本地连接DNS详解图文教程

      2023-11-15 16:29:18

      PS怎么在绿萝花瓶中合成一条小金鱼?

      2023-11-15 16:28:04

      访问网站出现403错误集锦

      2023-11-15 16:26:43

      Excel如何关闭受保护视图或取消启用编辑

      2023-11-15 16:25:37
    • 首页
    • cpu
    • 电源
    • 主板
    • 散热器
    • 设置
    • 硬盘
    • 内存条
    • 处理器
    • 主机
    • 方法
    ©2020-2023 软件日记 | 京ICP备19020253号-12