成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

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

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

什么是瀑布流布局:

先看效果:

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

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

不完整html代碼:

<div id='container'><div class='box'> <div class='box-img'><img src='http://www.piao2010.com/bcjs/img/1.jpg' alt=''> </div></div><div class='box'> <div class='box-img'><img src='http://www.piao2010.com/bcjs/img/2.jpg' alt=''> </div></div><div class='box'> <div class='box-img'><img src='http://www.piao2010.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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
男女视频一区二区| 欧美日韩午夜影院| 在线播放国产精品二区一二区四区| 一区二区三区成人在线视频| 亚洲一级影院| 中文字幕乱码亚洲精品一区| www.亚洲免费av| 日韩一区国产二区欧美三区| 国产成人精品亚洲777人妖 | 国产精品亚洲一区二区三区妖精 | 日韩电影在线看| 久久蜜桃精品| 视频一区在线播放| 色香蕉成人二区免费| 亚洲电影视频在线| 久久激情婷婷| 午夜精品久久久久久久99水蜜桃 | 老司机精品视频在线| 色综合久久88色综合天天6 | 亚洲国产综合人成综合网站| 国产伦精品一区二区三区照片91| 亚洲欧美视频一区| 国产欧美一区二区三区另类精品| 亚洲一二三区在线观看| 亚洲专区欧美专区| 日日骚欧美日韩| 色综合久久久网| 日一区二区三区| 欧美性色综合网| 国产精品亚洲专一区二区三区| 日韩欧美一二三区| av午夜精品一区二区三区| 久久嫩草精品久久久久| 欧美精品一区在线| 亚洲欧美另类图片小说| 香蕉久久久久久久av网站| 日韩不卡一区二区| 欧美久久久久久久久| 岛国精品一区二区| 国产网站一区二区| 99精品视频免费| 免费观看久久久4p| 欧美人狂配大交3d怪物一区| 懂色av一区二区在线播放| 国产欧美日韩视频在线观看| 亚洲深夜影院| 老司机精品视频在线| 欧美性极品少妇| 99视频在线观看一区三区| 国产精品理论片在线观看| 中文亚洲字幕| 美日韩一区二区| 精品成人a区在线观看| 好看不卡的中文字幕| 亚洲第一福利一区| 日韩一区二区视频| 韩国在线一区| 奇米四色…亚洲| 欧美v国产在线一区二区三区| 欧美成人综合| 亚洲一区二区三区四区五区中文 | 777欧美精品| 色综合视频一区二区三区高清| 一区二区三区在线免费视频| 欧美日韩精品是欧美日韩精品| 97精品久久久午夜一区二区三区 | 欧美电视剧在线观看完整版| 欧美精品播放| 五月激情六月综合| 精品va天堂亚洲国产| 国产亚洲在线| 国产精品自产自拍| 18欧美亚洲精品| 欧美日韩1234| 亚洲第一黄网| 国产精品自拍一区| 中文字幕亚洲成人| 欧美久久久久久蜜桃| 影院欧美亚洲| 国产又黄又大久久| 日韩一区在线播放| 欧美日韩精品一区二区天天拍小说| 欧美午夜不卡| 久久精品国产第一区二区三区| 国产免费观看久久| 在线观看日韩av先锋影音电影院| 91在线观看美女| 日韩理论片一区二区| 精品视频1区2区3区| 一区在线观看| 国产成人亚洲综合色影视| 亚洲男女毛片无遮挡| 欧美男男青年gay1069videost| 国产一区自拍视频| 久久99精品视频| 亚洲视频一区在线观看| 91麻豆精品国产91久久久使用方法 | 亚洲靠逼com| 欧美一级二级在线观看| 亚洲一区免费| 91丝袜高跟美女视频| 日韩精品欧美精品| 中文字幕 久热精品 视频在线| 欧美视频一二三区| 国内精品久久久久久久影视麻豆 | 亚洲高清在线播放| 国产精品亚洲一区二区三区在线 | 亚洲一区日韩精品中文字幕| 日韩一区二区精品在线观看| 先锋影音久久久| 欧美精品97| 国产成人精品免费在线| 香蕉成人啪国产精品视频综合网| 国产亚洲欧美日韩日本| 在线播放欧美女士性生活| 麻豆精品传媒视频| 亚洲午夜极品| 成人av免费网站| 精品一区二区三区影院在线午夜| 亚洲黄色免费网站| 久久久久久久久蜜桃| 欧美日韩国产精品成人| 中文久久精品| 狠狠色狠狠色综合人人| www.欧美色图| 久久国产麻豆精品| 天天综合日日夜夜精品| 国产精品久久看| 精品国产制服丝袜高跟| 欧美日韩在线直播| 91国产丝袜在线播放| 欧美精品一卡| 99re热视频精品| 国产99久久久国产精品免费看 | 一级女性全黄久久生活片免费| 久久精品一区二区三区四区| 欧美一区二区三区人| 色婷婷狠狠综合| 国产精品一区二区在线观看| 黄色国产精品| 91性感美女视频| 丰满少妇在线播放bd日韩电影| 精品一区二区国语对白| 日韩精品乱码免费| 亚洲影视在线播放| 日韩理论片网站| 国产精品欧美经典| 国产亚洲女人久久久久毛片| 欧美mv和日韩mv的网站| 91精品国产综合久久精品图片| 欧美午夜精品久久久久久超碰| 久久字幕精品一区| 久久av一区二区| 亚洲一区国产一区| 亚洲综合激情| 中文精品视频| 国产日韩欧美三区| 在线一区欧美| 国产一区二区三区成人欧美日韩在线观看| 国产精品国产三级国产专区53| 欧美在线免费| 亚洲欧美伊人| 欧美日韩成人一区二区三区| 欧美三区美女| 精品9999| 99在线|亚洲一区二区| 国产偷国产偷亚洲高清97cao| 亚洲夫妻自拍| 亚洲色图自拍| 久久国产精品久久久久久电车| 亚洲一区三区在线观看| 亚洲一区二区三区午夜| 男女精品视频| 久久国产精品久久久久久电车| 久久久久国产精品一区三寸 | 激情久久综合| av不卡免费看| 国产农村妇女毛片精品久久莱园子 | 成人免费在线视频观看| 国产精品久久久久国产精品日日| 国产精品人妖ts系列视频| 中文字幕亚洲精品在线观看| 亚洲色图欧美在线| 一区二区三区四区亚洲| 亚洲综合视频在线观看| 亚洲成人免费看| 日本视频在线一区| 国内欧美视频一区二区| 国产99久久久久| 91视频www| 亚洲欧洲在线一区| 国产精品区一区| 老司机午夜精品视频| 欧美日本国产视频| 欧美电影免费观看高清完整版在| 精品粉嫩超白一线天av| 久久精品亚洲国产奇米99| 中文字幕亚洲电影| 亚洲国产中文字幕| 奇米精品一区二区三区四区|