ホームページ  >  記事  >  ウェブフロントエンド  >  jQueryで絵引き戸のアニメーション効果を実現する2つの方法を共有

jQueryで絵引き戸のアニメーション効果を実現する2つの方法を共有

小云云
小云云オリジナル
2017-12-31 09:33:051759ブラウズ

「スライディング ドア」のダイナミック エフェクトは、「アコーディオン」エフェクトとも呼ばれます。ほとんどのエフェクトを実現するための考え方は基本的に同じです。1 つは、画像のオフセット位置を変更することで移動する方法です。 、もう 1 つは、画像のオフセット位置を変更することで動きを実現する方法です。1 つは、背景画像を横断して画像の幅を変更することによって変換する方法です。この記事で紹介する 2 つの方法は、アコーディオン効果とも呼ばれる「引き戸」アニメーション効果を実現します。この記事を通じて具体的な実装方法を学びましょう。

実装方法1:画像の幅を変更する

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 = &#39;jquery-3.2.1.js&#39;></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});
  });
})

実装方法2:画像のオフセット値を変更する

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 = &#39;jquery-3.2.1.js&#39;></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>

注: 方法 1 の実装中、幅と画像名の設定に注意してください。

ヒント: ここでは jQuery コードが使用されていますが、JavaScript コードも同じ方法で実装できます。トラバーサル プロセスと組み込み関数のメソッドを変更し、アニメーション関数を書き直すだけです (前のノートにはカプセル化されたアニメーション関数が含まれています)。を使用して直接導入できます)。

関連する推奨事項:

jQuery に基づいて絵引き戸アニメーション効果を実装する方法の詳細な例

jQuery と HTML5 を使用して WebGL の高性能花火が咲くアニメーション効果を実装する方法の詳細な例

Dreamweaver を使用してオープニングアニメーション効果のある Web ページを作成する方法

以上がjQueryで絵引き戸のアニメーション効果を実現する2つの方法を共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。