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

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

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

瀏覽:35日期: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://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div></div></body><script src='http://m.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://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.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://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/show.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/cloth.jpg' alt='' /> </div> <div class='item'> <img src='http://m.b3g6.com/bcjs/banner.jpg' alt='' /> </div></div></body>

效果如下:

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

四、3種方式對比

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

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

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩不卡一区二区三区| 久久香蕉国产| 蜜臀va亚洲va欧美va天堂| 噜噜噜躁狠狠躁狠狠精品视频 | 国产亚洲欧美日韩精品一区二区三区| 日韩影片在线观看| 国产福利一区二区三区在线播放| 久久精品国产亚洲aⅴ| 久久99国产精品视频| 久久久777| 中文字幕一区二区三区四区久久 | 福利欧美精品在线| 欧美片第1页| 亚洲免费成人av在线| 久久影视三级福利片| 久久久蜜桃一区二区人| 99成人在线| 国产精品天天看天天狠| xxxxx性欧美特大| 国产视频一区在线观看一区免费| 综合日韩在线| 精品三区视频| 国产色综合网| 国产精品4hu.www| 久久久蜜桃一区二区人| 亚洲欧洲日韩| 成人影视亚洲图片在线| 亚洲一区国产一区| 欧美激情99| 欧美在线资源| 国产精品欧美日韩一区| 久久久精品五月天| 日本视频中文字幕一区二区三区| 国产精品yjizz视频网| 免费人成精品欧美精品| 国产私拍福利精品视频二区| 亚洲不卡av不卡一区二区| 日本不卡一区二区| 天堂中文av在线资源库| 日韩精品视频网站| 久久精品免费一区二区三区| 人人精品久久| 在线国产一区二区| 成人黄色av| 国产亚洲人成a在线v网站 | 精品国产精品久久一区免费式| 亚洲第一区色| 国产精品亚洲片在线播放| 国产99久久| 欧美激情久久久久久久久久久| 丝袜美腿亚洲一区二区图片| 伊人久久在线| 国产精品视频一区二区三区综合| 午夜久久一区| 色综合狠狠操| 欧美日本精品| 国产精品美女久久久| 福利一区和二区| 国产亚洲一区二区三区啪| 免费日韩精品中文字幕视频在线| 国产一区不卡| 国产美女久久| 综合国产视频| 伊人久久亚洲美女图片| 国产成人调教视频在线观看| 欧美日一区二区三区在线观看国产免| 91成人精品视频| 日韩一区三区| 精品国产麻豆| 国产欧美激情| 日本免费新一区视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美精品一区二区久久| 色偷偷色偷偷色偷偷在线视频| 国产精品视频一区二区三区| 婷婷视频一区二区三区| 免费看日韩精品| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩在线播放视频| 日本一二区不卡| 精品国产亚洲一区二区三区在线| 欧美午夜三级| 日韩二区三区在线观看| 天堂av一区| 日韩不卡手机在线v区| 亚洲精品少妇| 日韩精品成人在线观看| 亚洲毛片在线免费| 日韩一区二区三区四区五区| 日韩三级久久| 日本一区免费网站| 日韩av中文在线观看| 日韩1区2区3区| 日本 国产 欧美色综合| 亚洲欧洲美洲国产香蕉| 91成人在线| 国产精品久久亚洲不卡| 麻豆精品久久久| 国产一区精品福利| 97人人精品| 久久婷婷一区| aa亚洲婷婷| 性一交一乱一区二区洋洋av| 免费在线成人网| 亚州av日韩av| 久久久国产精品网站| 91青青国产在线观看精品| 美女av在线免费看| 91tv亚洲精品香蕉国产一区| 婷婷激情图片久久| 亚洲专区视频| 国产精品2区| 成人免费电影网址| 日韩中文字幕不卡| 久久精品 人人爱| 欧美激情国产在线| 五月综合激情| 日本a级不卡| 国产高潮在线| 99在线精品免费视频九九视| 日韩av网站在线免费观看| 你懂的亚洲视频| 91精品啪在线观看国产18| 九一精品国产| 日韩中文字幕无砖| 精品精品国产三级a∨在线| 不卡中文字幕| 清纯唯美亚洲综合一区| 三上亚洲一区二区| 久久亚洲色图| 久久香蕉网站| 精品在线播放| 国产精品网站在线看| 亚洲天堂久久| 日本少妇一区二区| 亚洲va中文在线播放免费| 中文字幕一区二区三区四区久久| 久久99精品久久久久久园产越南| 夜鲁夜鲁夜鲁视频在线播放| 日韩精品一区第一页| 久久精品一本| 午夜在线播放视频欧美| 久久av日韩| 香蕉久久久久久久av网站| 久久久久久亚洲精品美女| 中文在线不卡| 久久久久久一区二区| 亚洲免费成人av在线| 天堂√8在线中文| 亚洲精品欧美| 色综合www| 欧美精品三级在线| 91高清一区| 国产精品第一| 免费日韩视频| 免费高潮视频95在线观看网站| 亚洲精品观看| 亚洲一级二级| 欧美日韩亚洲三区| 午夜国产欧美理论在线播放| 麻豆国产欧美日韩综合精品二区| 欧美福利在线| 福利一区和二区| 日韩国产高清在线| 好看的av在线不卡观看| 国产福利91精品一区二区| 清纯唯美亚洲综合一区| 亚洲一区日韩| 欧美成人a交片免费看| 欧美日韩精品一区二区三区视频| 狠狠色狠狠色综合日日tαg| 91亚洲国产高清| 国产欧美高清视频在线| 亚洲影视一区二区三区| 亚洲91久久| 日本久久综合| 国产精品xvideos88| 亚洲欧美网站在线观看| 午夜电影亚洲| 久久一区二区三区喷水| 超碰在线99| 精品一区二区三区四区五区| 日韩免费精品| 免费一级片91| 欧美日韩国产亚洲一区| 私拍精品福利视频在线一区| 国产精品videossex| 日本亚洲欧洲无免费码在线| 亚洲一区国产一区| 91久久久精品国产| 四虎4545www国产精品| 女生影院久久| 四虎成人av| 精品久久97| 国语对白精品一区二区| 老牛国内精品亚洲成av人片| 国产精品高清一区二区| 国产情侣一区在线| 日韩不卡一区二区| 日韩精品第一|