亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

3種方式實現瀑布流布局小結

2024-09-05 07:23:01
字體:
來源:轉載
供稿:網友

前言

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

一、JS 實現瀑布流

思路分析

  • 瀑布流布局的特點是等寬不等高。
  • 為了讓最后一行的差距最小,從第二行開始,需要將圖片放在第一行最矮的圖片下面,以此類推。
  • 父元素設置為相對定位,圖片所在元素設置為絕對定位。然后通過設置 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="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div></div></body><script src="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>

效果如下
 

圖片是

二、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="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div></div></body>

效果如下:
 

在這里插入圖片描述

三、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="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="show.jpg" alt="" />    </div>    <div class="item">        <img  src="cloth.jpg" alt="" />    </div>    <div class="item">        <img  src="banner.jpg" alt="" />    </div></div></body>

效果如下:
 

在這里插入圖片描述

四、3種方式對比

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久国产精品99gif| 久久精品99国产精品酒店日本| 一区二区三区www| 久久久噜噜噜久久中文字免| 欧美日韩裸体免费视频| 欧美中文字幕在线播放| 日韩欧中文字幕| 亚洲国产精品久久久久| 国产丝袜一区二区| 国产激情综合五月久久| 久久亚洲精品一区| 日韩久久免费电影| 精品国偷自产在线视频| 热草久综合在线| 中文字幕综合在线| 97在线视频国产| 亚洲日韩第一页| 亚洲精品免费一区二区三区| 韩国v欧美v日本v亚洲| 日韩毛片在线看| 成人中文字幕在线观看| 久久这里只有精品视频首页| 国产亚洲福利一区| 日韩av中文字幕在线播放| 亚洲欧美日本伦理| 欧美理论电影在线播放| 综合欧美国产视频二区| 日韩视频免费在线观看| 亚洲a区在线视频| 高清欧美性猛交xxxx黑人猛交| 日韩av中文字幕在线| 国产精品成人av性教育| 久久久97精品| 国产97在线亚洲| 国产黑人绿帽在线第一区| 在线视频欧美日韩| 国产精品狼人色视频一区| 国产精品永久免费视频| 日韩最新在线视频| 夜夜躁日日躁狠狠久久88av| 国产日韩精品在线播放| 成人在线国产精品| 日韩视频―中文字幕| 国产xxx69麻豆国语对白| 97色在线播放视频| 成人精品久久av网站| 日本19禁啪啪免费观看www| 最新国产精品拍自在线播放| 亚洲综合在线播放| 青青久久av北条麻妃海外网| 日韩中文字幕不卡视频| 久久人人爽亚洲精品天堂| 日韩在线视频导航| 伦伦影院午夜日韩欧美限制| 丝袜亚洲欧美日韩综合| 久久亚洲春色中文字幕| 久久人人爽亚洲精品天堂| 久久不射电影网| 中文字幕自拍vr一区二区三区| 国产美女搞久久| 欧美在线免费看| 亚洲一区制服诱惑| 成人免费观看网址| 欧美一级片在线播放| 国产香蕉97碰碰久久人人| 国产日韩精品在线观看| 91国产精品视频在线| 欧美激情免费在线| 久久久久久久国产精品视频| 亚洲精美色品网站| 欧美成人一区在线| 国产福利精品av综合导导航| 韩国视频理论视频久久| 日韩一区av在线| 欧美裸体xxxx| 在线观看免费高清视频97| 狠狠做深爱婷婷久久综合一区| 亚洲人午夜精品免费| www.亚洲免费视频| 91精品视频专区| 自拍偷拍亚洲精品| 亚洲v日韩v综合v精品v| 久久深夜福利免费观看| 精品视频—区二区三区免费| 国产精欧美一区二区三区| 日本精品在线视频| 在线成人激情黄色| 国产精品99久久久久久白浆小说| 国产精品久久久久久久久久尿| 91老司机精品视频| 国产大片精品免费永久看nba| 茄子视频成人在线| 欧美午夜激情在线| 日本欧美一二三区| 欧美激情在线视频二区| 成人xvideos免费视频| 日韩欧美一区视频| 亚洲2020天天堂在线观看| 日韩av免费在线看| 亚洲国产精品人人爽夜夜爽| 国产成人精品久久二区二区| 中文字幕亚洲天堂| 欧美激情欧美狂野欧美精品| 亚洲韩国欧洲国产日产av| 久国内精品在线| 欧美一级bbbbb性bbbb喷潮片| 久国内精品在线| xvideos国产精品| 精品综合久久久久久97| 国产精品成久久久久三级| 欧美激情videos| 久久99视频精品| 亚洲最大中文字幕| 最近的2019中文字幕免费一页| 国产成人一区二区在线| 精品夜色国产国偷在线| 久久久久久久成人| 国产精品444| 中文字幕日韩av综合精品| 91中文字幕在线观看| 国产一区玩具在线观看| 久青草国产97香蕉在线视频| 国产69精品99久久久久久宅男| 97视频在线播放| 一区二区三区久久精品| 成人伊人精品色xxxx视频| 亚洲精品720p| 日本道色综合久久影院| 岛国视频午夜一区免费在线观看| 国产日本欧美视频| 久青草国产97香蕉在线视频| 九九精品视频在线| 欧美男插女视频| 91成人国产在线观看| 欧美性在线视频| 欧美性受xxxx黑人猛交| 热99精品里视频精品| 午夜精品久久久久久久99热| 日韩经典一区二区三区| 国产精品视频xxxx| 国产精品久久一区主播| 北条麻妃久久精品| 色噜噜久久综合伊人一本| 国产视频亚洲精品| 欧美国产日韩xxxxx| 色噜噜亚洲精品中文字幕| 国产精品高精视频免费| 国产精品亚洲视频在线观看| 久久九九国产精品怡红院| 亚洲免费电影一区| 97高清免费视频| 91久久精品国产91久久性色| 精品伊人久久97| 亚洲精品美女免费| 欧美日韩一区二区精品| 国产精品久久久久7777婷婷| 人人澡人人澡人人看欧美| 精品欧美国产一区二区三区| 欧美激情a在线| 欧美最猛性xxxxx(亚洲精品)| 懂色av中文一区二区三区天美| 国产精品扒开腿做爽爽爽的视频| 亚洲香蕉伊综合在人在线视看| 91美女片黄在线观|