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

您的位置:首頁技術(shù)文章
文章詳情頁

如何用JS實現(xiàn)網(wǎng)頁瀑布流布局

瀏覽:208日期:2024-04-01 13:59:50
前言:

瀑布流 又稱瀑布流式布局,是比較流行的一種網(wǎng)站頁面布局方式。即多行等寬元素排列,后面的元素依次添加到其后,等寬不等高,根據(jù)圖片原比例縮放直至寬度達到我們的要求,依次按照規(guī)則放入指定位置。

什么是瀑布流布局:

先看效果:

如何用JS實現(xiàn)網(wǎng)頁瀑布流布局

圖片多行等寬元素排列,后面的元素依次添加到其后,等寬不等高,根據(jù)圖片原比例縮放直至寬度達到我們的要求,依次按照規(guī)則放入指定位置。 為了方便理解,在此先給上html、css代碼

不完整html代碼:

<div id='container'><div class='box'> <div class='box-img'><img src='http://m.b3g6.com/bcjs/img/1.jpg' alt=''> </div></div><div class='box'> <div class='box-img'><img src='http://m.b3g6.com/bcjs/img/2.jpg' alt=''> </div></div><div class='box'> <div class='box-img'><img src='http://m.b3g6.com/bcjs/img/3.jpg' alt=''> </div></div> </div> ......<!-- 省略了圖片,多少張圖片自行決定-->

完整的css代碼

*{padding: 0;margin: 0; } #container{position: relative; } .box{float: left;padding: 15px; } .box-img {width: 150px;padding: 5px;border: 1px solid #ccc ;box-shadow: 0 0 5px #ccc;border-radius: 5px; } .box-img img{width: 100%;height: auto; }如何實現(xiàn):

簡單地來說,如果要實現(xiàn)瀑布流布局,得完成這幾件事✍

1. 獲取圖片

function getChildElemnt() { const contentArr = []//定義數(shù)組準(zhǔn)備裝圖 const parent = document.getElementById(container)//得到整個頁面 const allContent = parent.getElementsByTagName(’*’)//得到整個標(biāo)簽 console.log(allContent); for (var i = 0; i < allContent.length; i++) { if (allContent[i].className == ’box’) {contentArr.push(allContent[i])//將class=’box’的標(biāo)簽裝入數(shù)組 } } console.log(contentArr); return contentArr//返回數(shù)組 }2. 設(shè)置圖片寬帶

var ccontent = getChildElemnt() var imgWidth = ccontent[0].offsetWidth//令所有圖片寬度等于第一張圖片3. 計算瀏覽器頁面一行最多能存放圖片的數(shù)量

var dWidth=document.documentElement.clientWidth//頁面寬度var num = Math.floor(dWidth/ imgWidth)//Math.floor()向下取整4. 比較圖片高度

因為在瀑布流布局中,當(dāng)?shù)谝恍袌D片已經(jīng)擺滿后,第二行的第一張圖片要放在第一行中高度最小的圖片的下面

var BoxHeightArr = []//定義一個數(shù)組,把每張圖片的高度依次放進去 for (var i = 0; i < ccontent.length; i++) { if (i < num) {BoxHeightArr[i] = ccontent[i].offsetHeight//將圖片的高度存入數(shù)組 } else {//當(dāng)?shù)谝恍幸呀?jīng)存放不了圖片后var minHeight = Math.min.apply(null, BoxHeightArr)//比較出上一行最小的高度 } }5. 得到上一行中最小高度圖片的位置

//定義一個getMinHeightLocation函數(shù),給它傳入BoxHeightArr上一行全部圖片,和minHeight上一行圖片的最小高度 function getMinHeightLocation(BoxHeightArr, minHeight) { for (var i in BoxHeightArr) { if (BoxHeightArr[i] === minHeight) {//當(dāng)圖片高度等于最小高度時,該圖片的位置為最小高度圖片的位置return i } } }6. 插圖

for (var i = 0; i < ccontent.length; i++) { if (i < num) { BoxHeightArr[i] = ccontent[i].offsetHeight } else { var minHeight = Math.min.apply(null, BoxHeightArr) var minIndex = getMinHeightLocation(BoxHeightArr, minHeight) ccontent[i].style.position = ’absolute’//將要插入的圖片絕對定位,即元素的位置通過 'left', 'top', 'right' 以及 'bottom' 屬性進行規(guī)定 ccontent[i].style.top = minHeight + ’px’//令插入的圖片到頂端的距離剛好等于要插其下面圖片的高度 ccontent[i].style.left = ccontent[minIndex].offsetLeft + ’px’//令插入的圖片到最左邊的距離剛好等于要插其下面圖片到最左邊的距離 BoxHeightArr[minIndex] = BoxHeightArr[minIndex] + ccontent[i].offsetHeight//插入圖片后,得將這位置的高度設(shè)為兩張圖片的高度和 } }完整代碼如下:

優(yōu)化代碼,提高性能

window.onload = function() { imgLocation(’container’, ’box’)//構(gòu)造函數(shù)imgLocation}//用window.onload = function() {}函數(shù)就不用等著body頁面中調(diào)用就可以執(zhí)行了// 獲取到當(dāng)前有多少張圖片要擺放function imgLocation(parent, content) {//令parent=’container’,content=’box’ // 將parent下所有的內(nèi)容全部取出 var cparent = document.getElementById(parent) var ccontent = getChildElemnt(cparent, content) var imgWidth = ccontent[0].offsetWidth var num = Math.floor(document.documentElement.clientWidth / imgWidth) cparent.style.cssText = `width: ${imgWidth * num} px` var BoxHeightArr = [] for (var i = 0; i < ccontent.length; i++) { if (i < num) { BoxHeightArr[i] = ccontent[i].offsetHeight } else { var minHeight = Math.min.apply(null, BoxHeightArr) var minIndex = getMinHeightLocation(BoxHeightArr, minHeight) ccontent[i].style.position = ’absolute’ ccontent[i].style.top = minHeight + ’px’ ccontent[i].style.left = ccontent[minIndex].offsetLeft + ’px’ BoxHeightArr[minIndex] = BoxHeightArr[minIndex] + ccontent[i].offsetHeight } } // console.log(BoxHeightArr);}function getChildElemnt(parent, content) {parent=’container’,content=’box’ const contentArr = [] const allContent = parent.getElementsByTagName(’*’) console.log(allContent); for (var i = 0; i < allContent.length; i++) { if (allContent[i].className == content) { contentArr.push(allContent[i]) } } console.log(contentArr); return contentArr}function getMinHeightLocation(BoxHeightArr, minHeight) { for (var i in BoxHeightArr) { if (BoxHeightArr[i] === minHeight) { return i } }}

以上就是如何用JS實現(xiàn)網(wǎng)頁瀑布流布局的詳細(xì)內(nèi)容,更多關(guān)于JS實現(xiàn)網(wǎng)頁瀑布流布局的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品在线网站观看| 伊人久久大香线蕉av超碰演员| 日韩午夜免费| 日韩中文在线电影| 国产精品美女在线观看直播| 一区二区三区网站| 成人美女视频| 亚洲91网站| 蜜桃久久av| 亚洲精品午夜av福利久久蜜桃| 成人国产精品久久| 卡一卡二国产精品| 人人爽香蕉精品| 伊人影院久久| 亚洲91视频| 中文字幕在线视频网站| 欧美交a欧美精品喷水| 亚洲综合三区| 欧美日韩国产免费观看| 亚洲成人不卡| 三上悠亚国产精品一区二区三区 | 99riav1国产精品视频| 亚洲小说欧美另类婷婷| 亚洲精品在线影院| se01亚洲视频| 日本欧美不卡| www.com.cn成人| 亚洲啊v在线| 日本国产精品| 91九色精品| 国产婷婷精品| 好吊日精品视频| 欧美中文字幕| 免费成人在线影院| 视频一区欧美精品| 亚洲九九精品| 西西人体一区二区| 一区二区三区四区在线观看国产日韩 | 国产精品香蕉| 九九九精品视频| 日韩亚洲一区在线| 亚洲二区免费| 亚洲欧洲日本mm| 国产婷婷精品| 日韩国产欧美视频| 国产精品成人国产| 老牛影视精品| 欧美1区免费| 91久久视频| 亚洲欧美日韩国产综合精品二区| 日韩中文欧美在线| 国产私拍福利精品视频二区| 欧美成人精品午夜一区二区| 国产高清精品二区| 福利一区和二区| 99久久久久久中文字幕一区| 亚洲一区黄色| 欧美久久一区二区三区| 国产精品白浆| 天堂网av成人| 亚洲另类av| 国产精品久一| 99视频精品视频高清免费| 99国产精品久久久久久久| 三级一区在线视频先锋| 国产精品亚洲人成在99www| 激情视频网站在线播放色| 亚洲欧洲一区二区天堂久久| 美女久久网站| 久久99久久久精品欧美| 久久蜜桃精品| 亚州精品视频| 精品高清久久| 麻豆91精品视频| 激情婷婷欧美| 91在线成人| 啪啪国产精品| 欧美亚洲综合视频| 美女视频黄免费的久久| 91看片一区| 偷拍亚洲精品| 欧美日韩视频网站| 欧美在线首页| 玖玖精品视频| 精精国产xxxx视频在线野外| 麻豆一区二区三区| 日韩av在线免费观看不卡| 99综合视频| 91精品啪在线观看国产18| 久久久久伊人| 欧美午夜三级| 偷拍亚洲精品| 综合国产精品| 亚洲一区欧美二区| 成人一区而且| 亚洲伦乱视频| 国产精选一区| 久久爱www.| 清纯唯美亚洲综合一区| 亚洲精品网址| 美女少妇全过程你懂的久久| 久久电影tv| 久久99高清| 国产日韩亚洲| 日本免费在线视频不卡一不卡二| 香蕉久久久久久久av网站| 欧美aa国产视频| 日本色综合中文字幕| 亚洲2区在线| 久热精品在线| 蜜臀久久99精品久久久久久9| 999国产精品| 在线日韩欧美| 欧美特黄一级大片| 久久精品亚洲人成影院| 久久国产日韩| 欧美sss在线视频| 成人久久一区| 亚洲高清二区| 黑丝一区二区三区| 亚洲一区免费| 美美哒免费高清在线观看视频一区二区| 伊人久久婷婷| 亚洲欧美不卡| 美女日韩在线中文字幕| 日韩影院免费视频| 亚洲理论在线| 欧美一区影院| 国产福利一区二区精品秒拍 | 麻豆精品视频在线| 麻豆免费精品视频| 国产极品模特精品一二| 麻豆成人av在线| 激情综合五月| 三上亚洲一区二区| 久久精品免费一区二区三区| 激情婷婷久久| 久久国产精品毛片| 视频国产精品| 国产精品v一区二区三区| 欧美aa在线视频| 国产一区二区三区久久 | 久久亚洲资源中文字| 国产一区二区三区不卡视频网站 | 免费黄网站欧美| 亚洲欧洲日韩| 国产精品videossex| 首页国产精品| 亚洲国产专区| 偷拍亚洲精品| 红杏一区二区三区| 91精品国产91久久久久久黑人| 最新日韩欧美| 日韩av影院| 国产自产自拍视频在线观看| 亚洲一级黄色| 日韩成人精品一区二区三区 | 久久久成人网| 亚洲激情欧美| 91嫩草精品| а√在线中文在线新版| 99精品综合| 亚洲区第一页| 精品日本视频| 免费av一区二区三区四区| 日韩在线观看一区二区| 国产精品一区二区三区www| 亚洲精品成人图区| 9久re热视频在线精品| 欧美视频久久| 性感美女一区二区在线观看| 亚洲视频国产| 精品免费在线| 婷婷综合在线| 欧美一区在线观看视频| 韩国精品主播一区二区在线观看| 亚洲乱码视频| 国产一区二区亚洲| 国产偷自视频区视频一区二区| 国产精品调教| 欧美日韩高清| 欧美成人aaa| 欧美一级专区| 久久伊人久久| 亚洲综合日本| av日韩中文| 日本中文字幕不卡| 国产v综合v| 日韩午夜视频在线| 久久久天天操| 国产精品对白| 日韩中文字幕91| 天堂а√在线最新版中文在线| 亚洲毛片一区| 蜜臀av免费一区二区三区| 国产精品亚洲片在线播放| 国产一区二区精品| 色黄视频在线观看| 日韩极品在线观看| 亚洲午夜久久久久久尤物|