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

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

如何用JS實現網頁瀑布流布局

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

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

什么是瀑布流布局:

先看效果:

如何用JS實現網頁瀑布流布局

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

不完整html代碼:

<div id='container'><div class='box'> <div class='box-img'><img src='http://www.b3g6.com/bcjs/img/1.jpg' alt=''> </div></div><div class='box'> <div class='box-img'><img src='http://www.b3g6.com/bcjs/img/2.jpg' alt=''> </div></div><div class='box'> <div class='box-img'><img src='http://www.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; }如何實現:

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

1. 獲取圖片

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

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

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

因為在瀑布流布局中,當第一行圖片已經擺滿后,第二行的第一張圖片要放在第一行中高度最小的圖片的下面

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)//比較出上一行最小的高度 } }5. 得到上一行中最小高度圖片的位置

//定義一個getMinHeightLocation函數,給它傳入BoxHeightArr上一行全部圖片,和minHeight上一行圖片的最小高度 function getMinHeightLocation(BoxHeightArr, minHeight) { for (var i in BoxHeightArr) { if (BoxHeightArr[i] === minHeight) {//當圖片高度等于最小高度時,該圖片的位置為最小高度圖片的位置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' 屬性進行規定 ccontent[i].style.top = minHeight + ’px’//令插入的圖片到頂端的距離剛好等于要插其下面圖片的高度 ccontent[i].style.left = ccontent[minIndex].offsetLeft + ’px’//令插入的圖片到最左邊的距離剛好等于要插其下面圖片到最左邊的距離 BoxHeightArr[minIndex] = BoxHeightArr[minIndex] + ccontent[i].offsetHeight//插入圖片后,得將這位置的高度設為兩張圖片的高度和 } }完整代碼如下:

優化代碼,提高性能

window.onload = function() { imgLocation(’container’, ’box’)//構造函數imgLocation}//用window.onload = function() {}函數就不用等著body頁面中調用就可以執行了// 獲取到當前有多少張圖片要擺放function imgLocation(parent, content) {//令parent=’container’,content=’box’ // 將parent下所有的內容全部取出 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實現網頁瀑布流布局的詳細內容,更多關于JS實現網頁瀑布流布局的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩电影| 精品国产欧美日韩| 精品视频国内| 欧美精品国产一区| 综合在线一区| 亚洲男女av一区二区| 不卡福利视频| 久久影视三级福利片| 免费看欧美美女黄的网站| 亚洲无线一线二线三线区别av| 欧美亚洲三区| 日本亚洲不卡| 9国产精品视频| 亚洲精品成人| 国产综合视频| 蜜桃一区二区三区在线观看| 视频一区中文字幕国产| 欧美久久香蕉| 国产麻豆一区二区三区| 性感美女一区二区在线观看| 日韩在线不卡| 欧美午夜不卡影院在线观看完整版免费| 99久久99久久精品国产片果冰 | 美日韩精品视频| 亚洲精品2区| 免费av一区二区三区四区| 麻豆精品视频在线观看视频| 久久久久免费av| 狠狠干成人综合网| 成人精品国产亚洲| 在线亚洲成人| 亚洲欧洲另类| 久久av一区二区三区| 1024精品久久久久久久久| 欧美 日韩 国产一区二区在线视频 | 亚洲午夜免费| 四虎在线精品| 国产精品magnet| 五月激情久久| 久久精品二区三区| 精品国产一区二| 精品久久久中文字幕| 精品视频自拍| 超碰99在线| 欧洲av不卡| 99久精品视频在线观看视频| 国产欧美一区二区三区精品酒店| 红杏一区二区三区| 成人福利视频| 亚洲成人va| 国产精品美女| 日本一不卡视频| 国产高清日韩| 成人看片网站| 999在线观看精品免费不卡网站| 视频一区欧美精品| 日韩av不卡在线观看| 久久免费精品| 黑森林国产精品av| 91精品高清| 亚洲一区二区av| 久久精品72免费观看| 国产精品99视频| 欧美69视频| 中文字幕一区二区三区日韩精品| 国产精品亚洲产品| 日韩欧美二区| 日韩一区精品字幕| 欧美1区二区| 国产精品久久久久av电视剧| 天使萌一区二区三区免费观看| 91精品视频一区二区| 天堂а√在线最新版中文在线| 中文字幕一区日韩精品| 久久精品一区| 2023国产精品久久久精品双| 亚洲欧洲日韩| 国产成人久久| 免费中文字幕日韩欧美| 老司机免费视频一区二区三区| 免费av一区| 国产欧美日韩精品高清二区综合区| 美女福利一区二区三区| 亚洲精品无播放器在线播放| 欧美少妇精品| 日本亚洲最大的色成网站www | 国产一区日韩欧美| 尤物tv在线精品| 久久永久免费| 综合色就爱涩涩涩综合婷婷| 色老板在线视频一区二区| 国产精品xvideos88| 日韩一区精品字幕| 国产综合精品| 欧美日韩视频免费观看| 国产福利一区二区三区在线播放| 日韩精品一级二级 | 久久精品av麻豆的观看方式| 秋霞影院一区二区三区| 麻豆一区二区三| 亚洲精品影视| 99视频在线精品国自产拍免费观看| 成人在线视频区| 国产精品久久久久久模特 | 亚洲福利一区| 午夜久久中文| 一区免费视频| 亚洲大片在线| 视频二区不卡| 日韩毛片视频| 日韩一区精品视频| 国产第一亚洲| 日韩国产一区二| 久久亚洲精品伦理| а√天堂8资源在线| 中文字幕免费一区二区| 香蕉久久久久久久av网站| 日韩高清不卡| 香蕉人人精品| 伊人久久大香伊蕉在人线观看热v| 日韩成人亚洲| 亚洲电影在线一区二区三区| 99久久精品网站| 国产亚洲高清视频| 久久久久久夜| 欧美+亚洲+精品+三区| 在线国产一区二区| 手机在线电影一区| 日韩av中文在线观看| 男人的天堂久久精品| 午夜国产欧美理论在线播放| 亚洲电影有码| 亚洲一级网站| 亚洲成人日韩| 激情五月综合| 红桃视频亚洲| 国产手机视频一区二区| 99国产精品视频免费观看一公开 | 国产精品一区二区精品| 久久国产精品免费精品3p| 蜜臀精品久久久久久蜜臀| 亚洲欧美日韩视频二区| 欧美日韩一区二区国产| 日韩一区二区三区在线看| 国产精品多人| 欧美色图国产精品| 午夜av成人| 亚洲一级二级| 美女黄网久久| 奇米777国产一区国产二区| 国产精品久久久久久久久久白浆| 麻豆成人综合网| 日韩免费久久| 欧美不卡视频| 亚洲精品中文字幕乱码| 亚洲综合欧美| 日韩久久一区| 国产精品美女久久久久久不卡| 精品亚洲成人| 欧美日韩在线播放视频| 天堂av在线一区| 国产亚洲一卡2卡3卡4卡新区| 久久久久黄色| 国产99亚洲| 亚洲免费一区三区| 久久69成人| 婷婷综合激情| 欧美亚洲自偷自偷| 福利精品在线| 亚洲v在线看| 性色一区二区| 国产精品1区在线| 久久久久午夜电影| 亚洲五月综合| 成人在线免费观看网站| 婷婷亚洲综合| 国产日韩免费| 久久久久久久久久久9不雅视频| 亚洲一区二区日韩| 国产在线不卡一区二区三区| 亚州av乱码久久精品蜜桃| 91伊人久久| 99久久www免费| 欧美日韩1区2区3区| 成人高清一区| 一区二区三区四区日韩| 成人一二三区| 天堂精品久久久久| 国产精品欧美在线观看| 日韩视频免费| 高清一区二区| 日本aⅴ亚洲精品中文乱码| 久久三级视频| 国产精品99精品一区二区三区∴| 日韩视频中文| 日韩深夜视频| 国产免费av一区二区三区| 国产精品日本欧美一区二区三区| 美女在线视频一区| 国产农村妇女精品一二区|