日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript實現瀑布流布局的3種方式

瀏覽:34日期:2023-06-12 08:33:18

前言

今天逛閑魚的時候觀察到每一行的高度不是相同的,經了解才知道原來這是一種瀑布流布局,感覺挺有意思,于是決定研究一下,在網上也找了一些方案,實現瀑布流大概有3種方式。

一、JS 實現瀑布流

思路分析

1、瀑布流布局的特點是等寬不等高。2、為了讓最后一行的差距最小,從第二行開始,需要將圖片放在第一行最矮的圖片下面,以此類推。3、父元素設置為相對定位,圖片所在元素設置為絕對定位。然后通過設置 top 值和 left 值定位每個元素。

代碼實現

<!DOCTYPE html><html><head> <style> .box { width: 100%; position:relative; } .item { position: absolute; } .item img{ width: 100%; height:100%; } </style></head><body><div class='box'> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div></div></body><script src='http://www.b3g6.com/bcjs/jquery.min.js'></script><script> function waterFall() { // 1 確定圖片的寬度 - 滾動條寬度 var pageWidth = getClient().width-8; var columns = 3; //3列 var itemWidth = parseInt(pageWidth/columns); //得到item的寬度 $('.item').width(itemWidth); //設置到item的寬度 var arr = []; $('.box .item').each(function(i){ var height = $(this).find('img').height(); if (i < columns) { // 2 第一行按序布局 $(this).css({ top:0, left:(itemWidth) * i+20*i, }); //將行高push到數組 arr.push(height); } else { // 其他行 // 3 找到數組中最小高度 和 它的索引 var minHeight = arr[0]; var index = 0; for (var j = 0; j < arr.length; j++) { if (minHeight > arr[j]) { minHeight = arr[j]; index = j; } } // 4 設置下一行的第一個盒子位置 // top值就是最小列的高度 $(this).css({ top:arr[index]+30,//設置30的距離 left:$('.box .item').eq(index).css('left') }); // 5 修改最小列的高度 // 最小列的高度 = 當前自己的高度 + 拼接過來的高度 arr[index] = arr[index] + height+30;//設置30的距離 } }); } //clientWidth 處理兼容性 function getClient() { return { width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight } } // 頁面尺寸改變時實時觸發 window.onresize = function() { //重新定義瀑布流 waterFall(); }; //初始化 window.onload = function(){ //實現瀑布流 waterFall(); }</script></html>

效果如下

JavaScript實現瀑布流布局的3種方式

二、column 多行布局實現瀑布流

思路分析:

column 實現瀑布流主要依賴兩個屬性。一個是 column-count 屬性,是分為多少列。一個是 column-gap 屬性,是設置列與列之間的距離。

代碼實現:

<!DOCTYPE html><html><head> <style> .box { margin: 10px; column-count: 3; column-gap: 10px; } .item { margin-bottom: 10px; } .item img{ width: 100%; height:100%; } </style></head><body><div class='box'> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div></div></body>

效果如下:

JavaScript實現瀑布流布局的3種方式

三、flex 彈性布局實現瀑布流

思路分析:

flex 實現瀑布流需要將最外層元素設置為 display: flex,即橫向排列。然后通過設置 flex-flow:column wrap 使其換行。設置 height: 100vh 填充屏幕的高度,來容納子元素。每一列的寬度可用 calc 函數來設置,即 width: calc(100%/3 - 20px)。分成等寬的 3 列減掉左右兩遍的 margin 距離。

代碼實現:

<!DOCTYPE html><html><head> <style> .box { display: flex; flex-flow:column wrap; height: 100vh; } .item { margin: 10px; width: calc(100%/3 - 20px); } .item img{ width: 100%; height:100%; } </style></head><body><div class='box'> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://www.b3g6.com/bcjs/banner.jpg' alt='' /> </div></div></body>

效果如下:

JavaScript實現瀑布流布局的3種方式

四、3種方式對比

如果只是簡單的頁面展示,可以使用 column 多欄布局和 flex 彈性布局。如果需要動態添加數據,或者動態設置列數,就需要使用到 JS + jQuery。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美日本国产| 91亚洲精品在看在线观看高清| 国产劲爆久久| 国产在线不卡一区二区三区| 成人在线黄色| 久久亚洲成人| 国产欧美在线| 美日韩一区二区三区| 精品日韩一区| 婷婷激情一区| 九九综合九九| 亚洲无线观看| 国产精品一区二区免费福利视频| 国产中文欧美日韩在线| 欧美丝袜一区| 日韩精品成人| 成人亚洲精品| 尤物网精品视频| 久久精品97| 成人午夜精品| 综合激情婷婷| 国产一区二区精品久| 亚洲一级影院| 日韩国产一二三区| av中文资源在线资源免费观看| 欧美日韩国产探花| 91精品国产自产观看在线 | 国产麻豆一区二区三区 | 欧美国产亚洲精品| 久久久久久久久久久9不雅视频| 日韩亚洲在线| 欧美a一区二区| 99国产精品久久久久久久 | 亚洲深夜福利在线观看| 麻豆视频久久| 中文久久精品| 电影91久久久| 亚洲一区导航| 美女网站视频一区| 国产亚洲欧美日韩在线观看一区二区| 伊人久久视频| 69堂精品视频在线播放| 亚洲91视频| 免费在线成人| 免费日韩视频| 92国产精品| 日本亚洲视频在线| 精品国模一区二区三区| 国产亚洲观看| 99热精品在线观看| 97精品在线| 国产午夜精品一区在线观看| 免费不卡中文字幕在线| 九九九精品视频| 亚洲ab电影| 99国产精品久久久久久久| 成人国产精品久久| 国产色噜噜噜91在线精品| 鲁大师影院一区二区三区| 中文字幕在线视频久| 日本午夜精品视频在线观看| 在线精品小视频| 免费一区二区三区在线视频| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美日韩在线二区| 国产96在线亚洲| 国产精品激情电影| 日韩av在线免费观看不卡| 亚洲激情偷拍| 91精品啪在线观看国产18| 精品日韩一区| 欧美激情综合| 91欧美精品| 亚洲影视一区| 久久国产精品99国产| 国产国产精品| 久久久精品久久久久久96| 给我免费播放日韩视频| 久久爱www成人| 日韩黄色在线观看| 亚洲不卡视频| 四虎成人精品一区二区免费网站| 鲁大师成人一区二区三区| 午夜国产欧美理论在线播放| 久久久精品日韩| 日本午夜大片a在线观看| 麻豆精品久久久| 免费观看亚洲天堂| 久久香蕉精品香蕉| 精品中文字幕一区二区三区四区| 国产麻豆精品| 国产精品日本一区二区不卡视频 | 亚洲精品四区| 亚洲男人在线| 日本a级不卡| 国产无遮挡裸体免费久久| 欧美亚洲一区二区三区| 国产三级一区| 精品国产一级| 在线人成日本视频| 动漫av一区| 日韩一区亚洲二区| 久久人人99| 在线亚洲精品| 亚洲精品日本| 91综合久久爱com| 国产精品亚洲欧美一级在线| 久久av综合| 精品国产亚洲一区二区三区在线 | 亚洲资源网站| 久久精品99久久久| 精品一区二区三区中文字幕视频| 色乱码一区二区三区网站| 深夜视频一区二区| 欧美手机在线| 男女男精品网站| 国产欧美大片| 桃色av一区二区| 亚洲精品91| 日韩不卡在线观看日韩不卡视频| 久久成人av| 久久精选视频| 麻豆成人在线| 麻豆一区二区三| 婷婷激情综合| 91麻豆精品激情在线观看最新| 国产中文欧美日韩在线| 九九在线精品| 国产亚洲一区二区三区不卡 | 成人在线免费观看网站| 91精品国产福利在线观看麻豆| 亚洲综合丁香| 另类综合日韩欧美亚洲| 一区二区小说| 人人爱人人干婷婷丁香亚洲| 国产色播av在线| 香蕉成人久久| 国产中文字幕一区二区三区| 亚洲激情二区| 久久精品国产精品亚洲毛片| 蜜桃tv一区二区三区| 欧美日韩一区自拍| 久久一区二区三区喷水| 日韩精品成人| 91精品综合| 国产视频一区二| 激情久久中文字幕| 日韩av中文在线观看| 韩国三级一区| 国产免费播放一区二区| 午夜久久免费观看| 麻豆精品国产91久久久久久| 日韩一级欧洲| 综合日韩av| 欧美一区成人| 国产高清一区| 国产一区二区精品久| 蜜桃视频一区二区| 日韩中文在线电影| 日韩高清电影一区| 欧美午夜不卡影院在线观看完整版免费| 国产精品第十页| 蜜臀久久99精品久久久久宅男| 日韩中文首页| 乱一区二区av| 亚洲欧美久久精品| 亚洲性色视频| 黑人精品一区| 麻豆视频观看网址久久| 涩涩涩久久久成人精品| 在线日韩视频| 国产成人精品999在线观看| 日韩欧美中文字幕在线视频| 中文另类视频| 精品一区不卡| 欧美片第1页综合| 色狠狠一区二区三区| 9色国产精品| 久久影视一区| 日本不良网站在线观看| 久久99久久人婷婷精品综合| 日韩精品久久理论片| 久久先锋影音| 在线综合亚洲| 亚洲欧洲日本mm| 亚洲午夜黄色| 欧美sss在线视频| 久久久男人天堂| 黄色精品视频| 精品一区二区三区四区五区| 国产精品一区2区3区| 婷婷视频一区二区三区| 久热综合在线亚洲精品| 亚洲二区三区不卡| 一区二区三区视频免费观看| 深夜福利视频一区二区| 国产成人精品亚洲线观看| 国产一区二区亚洲| 精品国产乱码久久久久久1区2匹| 国产极品久久久久久久久波多结野|