ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery は単純に画像のウォーターフォール フローを実装します。

jQuery は単純に画像のウォーターフォール フローを実装します。

小云云
小云云オリジナル
2018-01-22 13:49:581705ブラウズ

これまでにウォーターフォール フローに関する記事を多数紹介しましたが、この記事では主に jQuery イメージ ウォーターフォール フローの簡単な実装コードを詳しく紹介します。興味のある方は参考にしていただければ幸いです。みんな。

注: この記事は、各画像の実際のサイズを知ることに基づいています
特徴: 適応列番号、固定画像幅

既知のバグ:

この場合、5 枚の画像がループで表示されるのと同じように、列が 5 つしかない場合、解決策はスタイルを指定するときに順序に従うのではなく、一番上の値が小さい列に最初に配置することです

1. 基本的な HTML1.

<p id="main">
  <p class="img-item"><img src="images/img1.png" data-size="398*636" alt=""></p>
  <p class="img-item"><img src="images/img2.png" data-size="560*381" alt=""></p>
  <p class="img-item"><img src="images/img3.png" data-size="338*537" alt=""></p>
  <p class="img-item"><img src="images/img4.png" data-size="599*507" alt=""></p>
  <p class="img-item"><img src="images/img5.png" data-size="532*535" alt=""></p>
</p>

新しい HTML ファイルを作成し、#main の次のレイヤーのコードを数回コピーします。結局のところ、より多くの画像にウォーターフォール フローの効果が反映されます


基本 CSS

#main{
  width: 90%;
  background-color: #dab;
  text-align: center;
  margin:0 auto;
  position: relative;
}
img{
  width: 100%;
  box-sizing:border-box;
  box-shadow: 2px 0 3px #ddd,0 2px 3px #ddd;
}
.img-item{
  position: absolute;
  padding: 3px;
  box-sizing:border-box;
  height: auto;
  display: inline-block;
}

2. 開始

1. ステートメント

//获取图片列表包裹层
var $main = $(&#39;#main&#39;);
//获取窗口,用于自适应
var $mainWidth = $(window).width();
//定义图片宽度
var imgWidth = 150;
//可显示的列数
var columnNumber = Math.floor($mainWidth/imgWidth);
//存储top信息
var data = [];
//初始化,比如当前可以显示6列,那么这里就初始化6个空间
for (var i = 0; i < columnNumber; i++) {
  data[i] = 0;
}

2. 本文


//
var wall = function() {
  //获取相册图片集合
  var $imgs = $(&#39;.img-item&#39;);
  //遍历图片集合修改top值
  $.each($imgs, function(index, el) {
    //计算当前列数
    var currColumn = index % columnNumber;

    //获取需要显示的高度
    var size = $(&#39;img&#39;, el).data(&#39;size&#39;);
    var height = imgWidth / parseInt(size.split(&#39;*&#39;)[0]) * parseInt(size.split(&#39;*&#39;)[1])

    $(el).css({
      width: imgWidth,
      left: currColumn * imgWidth,
      top: data[currColumn]
    });

    //如果需要动画可以使用$(el).animate
    data[currColumn] += height;
    //本来这里只需要+=$(el).height()就可以解决,但是初始化时有些问题未解决
  });
};

3. ウィンドウサイズ変更イベント


$(window).resize(function(event) {
   //重置窗口宽度
   $mainWidth = $(window).width();
   //重置可显示的列数
   columnNumber = Math.floor($mainWidth / imgWidth);
   //动态修改#main相册包裹层的宽度,使整个相册看起来一直居中
   $main.css({
     width: imgWidth * columnNumber
   });
   //重置top信息
   for (var i = 0; i < columnNumber; i++) {
     data[i] = 0;
   }
   wall();
 });

関連する推奨事項:


Macyの使い方の詳しい説明.js、純粋にネイティブな JS ウォーターフォール プラグイン

jQuery Masonry ウォーターフォール フロー レイアウトの詳細な説明

ウォーターフォール フロー レイアウトのサンプルの JS 実装

以上がjQuery は単純に画像のウォーターフォール フローを実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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