欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > HTML+CSS+JS實現(xiàn)圖片的瀑布流布局的示例代碼

HTML+CSS+JS實現(xiàn)圖片的瀑布流布局的示例代碼

熱門標簽:中國地圖標注城市的 通遼地圖標注app 高德地圖標注廁所 江西ai電銷機器人如何 地圖標注員工作內(nèi)容 智能語音電銷機器人客戶端 威海語音外呼系統(tǒng)平臺 西安金倫外呼系統(tǒng) 地圖標注沿海城市房價

前言

瀑布流布局簡而言之就是類似瀑布流的布局嘛,這么一講大家可能還是不是了解的很明白,來來來,那現(xiàn)在我給大家上一個常見的實例:

相信大家在百度上搜索圖片時的時候,網(wǎng)頁圖片的布局就是這樣子的吧,什么?你還是不清楚瀑布流,那咱就再我看一個那沒關(guān)系,淘寶大家應(yīng)該再熟悉不過了吧!

我們可以發(fā)現(xiàn)圖中每個商品框的高度不同的,因此導致我們的商品圖片的高度布局都不在一個高度上。在百度搜索圖片的時候我們發(fā)現(xiàn)每張圖片的寬度都是不一樣的那為什么所用圖片的寬度它能剛剛好的占滿一行呢?

這就是我今天今天教大家的布局方式——waterfall 布局,那該怎么實現(xiàn)呢?那我們就不多說啦,直接上干貨!

一、總體效果

瀑布流的搭建完的效果如下:

 

二、HTML+CSS簡單布局

首先大家在網(wǎng)上搜索一些圖片或者用一下自己喜歡的圖片均可,用html搭建好框架網(wǎng)頁的框架將圖片存放好,我們這里使用的了20張圖為例。其次使用html+css實現(xiàn)一個簡單的布局,這有個關(guān)鍵的步驟:我們對比上面百度和淘寶頁面的瀑布流布局就不難發(fā)現(xiàn),要實現(xiàn)瀑布流所有圖片都得有個相同的高度或者高度。因此我們這就給所用照片設(shè)置一個固定的寬度,但不限定的圖片的高度保證每圖片都按其原始比例完整展示出來。

HTML,CSS代碼如下:

css代碼

*{
          margin: 0;
          padding: 0;
      }
      #container{
          position: relative;
      }
      .box{
          float: left;/* 給每個存放照片box設(shè)置為浮動元素,讓所有的圖片浮動到網(wǎng)頁的第一行*/
          padding: 5px;
      }
      .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;
      }

html代碼

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>js 瀑布流</title>
 <link rel="stylesheet" href="./index.css">
</head>
<body>
  <div id="container">
    <div class="box">
      <div class="box-img">
        <img src="./img/1.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/2.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/3.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/4.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/5.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/6.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/7.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/8.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/9.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="box-img">
        <img src="./img/10.jpg" alt="">
      </div>
    </div>
    <div class="box">
        <div class="box-img">
          <img src="./img/1.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/2.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/3.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/4.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/5.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/6.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/7.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/8.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/9.jpg" alt="">
        </div>
      </div>
      <div class="box">
        <div class="box-img">
          <img src="./img/10.jpg" alt="">
        </div>
      </div>
  </div>
  <script src="./index.js"></script>
</body>
</html>

html和css修飾后的網(wǎng)頁的效果是怎樣的的呢?

我們給每個盒子都使用了一個float:left屬性,讓圖片脫離文檔來到網(wǎng)頁的最上端,但是圖片過多時有部分圖片被擠到了第二行,可是他們并沒有像我們設(shè)想的那樣像瀑布式的排列,那我們該怎么實現(xiàn)呢,這時我們的的JS就要派上用場啦。

三、JS實現(xiàn)后續(xù)布局

通過js實現(xiàn)將第一行后的圖片排列在緊湊的排列在每一列中

代碼如下代碼(附帶有詳細注釋):

window.onload = function() {
    imgLocation('container', 'box')
  }
  
  // 獲取到當前有多少張圖片要擺放
  function imgLocation(parent, content) {
    // 將containerd下所有的內(nèi)容全部取出
    var cparent = document.getElementById(parent)  //獲取container盒子的標簽
    var ccontent = getChildElemnt(cparent, content)//圖片時放在container盒子里的box盒子里的,因此我們還需要定義一個函數(shù)getChildElemnt()獲取出box里的圖片
    
    var imgWidth = ccontent[0].offsetWidth//獲取css中我們給每張圖片設(shè)置的固定寬度
    var num = Math.floor(document.documentElement.clientWidth / imgWidth) //獲取瀏覽器body的寬度計算最多能放幾張我們的圖片
    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 //這里我們通過BoxHeightArr[]數(shù)組存放每列的高度
      } else { //剩下的圖片我們依次次優(yōu)先選擇擺在高度最低的一列后面
        var minHeight = Math.min.apply(null, BoxHeightArr) //通過將Math.min()中求最小值的方法應(yīng)用到數(shù)組中,求出高度最低的列
        var minIndex = getMinHeightLocation(BoxHeightArr, minHeight) //確定了高度最低的列后我們就差求出列的位置了,我們通過編寫一個函數(shù)實現(xiàn)

        //最后將我們的圖片相對于container盒子進行定位放在每一列下就可以啦
        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) {
    const contentArr = []
    const allContent = parent.getElementsByTagName('*')//通過內(nèi)置函數(shù)getElementsByTagName()將container中的所有元素取出來
    // console.log(allContent);
    for (var i = 0; i < allContent.length; i++) {//但是container中所有的元素中我們只需要的是所有的img,為此我們寫個for循環(huán)將所用img篩選出來存放在一個數(shù)組中
      if (allContent[i].className == content) {
        contentArr.push(allContent[i])
      }
    }
    // console.log(contentArr);
    return contentArr
  }
  //獲取列最高度最小列的位置下標函數(shù)
  function getMinHeightLocation(BoxHeightArr, minHeight) {
    for (var i in BoxHeightArr) {
      if (BoxHeightArr[i] === minHeight) {
        return i
      }
    }
  }

JS算法思路及操作:

  • 將所有的需要排列的圖像獲取出來
  • 因為圖片時放在container盒子里的box盒子里的,因此我們定義了一個函數(shù)getChildElemnt()獲取出box的里的圖片,在這個函數(shù)中通過內(nèi)置函數(shù)getElementsByTagName()將container中的所有元素取出來,但是container中所有的元素中我們只需要的是所有的img,為此我們寫個for循環(huán)將所用img篩選出來存放在一個我們定義的content[]數(shù)組中。
  • 提取到所有圖片后我們就要需要確定圖片排列的位置,我們先將在第一行排滿,剩下的圖排列時依次排在在高度最小的列后面,為此我們在排列每張圖片的時候都需要求出高度最小列以及確定其位置

通過 ccontent[0].offsetWidth (每一張圖片的寬度都是一樣的,因此取數(shù)組中任意元素均可)獲取css中我們給每張圖片設(shè)置的固定寬度,其次利用 document.documentElement.clientWidth 獲取當前網(wǎng)頁比例下瀏覽器的寬度,求出一行最多能整存多少張圖片(即多少列),再使用for循環(huán)擺放圖片,先將第一行擺滿,創(chuàng)建BoxHeightArr[]數(shù)組存放每列的高度,將Math.min() 方法應(yīng)用于 BoxHeightArr[]數(shù)組中,求出高度最低的列,創(chuàng)建 getMinHeightLocatio()函數(shù)獲取列高度最小列的位置下標,與container div 絕對定位擺放,完成后更新每列列高,直至圖片擺放完成。

總結(jié)

到此這篇關(guān)于HTML+CSS+JS實現(xiàn)圖片的瀑布流布局的示例代碼的文章就介紹到這了,更多相關(guān)HTML瀑布流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標簽:河池 青海 晉中 崇左 營口 北海 眉山 阜陽

巨人網(wǎng)絡(luò)通訊聲明:本文標題《HTML+CSS+JS實現(xiàn)圖片的瀑布流布局的示例代碼》,本文關(guān)鍵詞  HTML+CSS+JS,實現(xiàn),圖片,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML+CSS+JS實現(xiàn)圖片的瀑布流布局的示例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML+CSS+JS實現(xiàn)圖片的瀑布流布局的示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩二区在线观看| 亚洲精品第二页| 真实乱视频国产免费观看| 在线观看亚洲a| 国产日韩欧美精品一区| 性做久久久久久免费观看欧美| 丁香激情综合五月| 国产一区二区三区精品在线| 欧美电影免费观看高清完整版 | 亚洲成a人片在线观看中文| 国产乱码精品一区二区三| 国产精品久久不卡| 欧美日韩高清一区二区三区| 亚洲精品va在线观看| 成人在线一区二区三区| 亚洲精品午夜视频| 欧美大黄免费观看| 天天综合色天天综合色h| 国产成人精品一区二区在线小狼| 色综合天天综合给合国产| 国产精品人妖ts系列视频| 国产一区在线视频| 黄色片在线观看免费| 精品久久国产字幕高潮| 日本一区中文字幕| 在线免费看黄色片| 色视频一区二区| 亚洲伦理在线精品| 91社区在线播放| 欧美性做爰猛烈叫床潮| 亚洲欧美aⅴ...| 91片在线免费观看| 91香蕉视频污在线观看| 国产亚洲精品aa| 美女免费视频一区| 午夜视频在线观看一区二区| 国产成人福利片| 国产极品国产极品| 亚洲天天做日日做天天谢日日欢| av综合在线播放| 日本久久一区二区| 一区二区三区在线高清| 黄色av电影网站| 欧美一区二区三区四区在线观看| 偷偷要91色婷婷| 久久亚洲无码视频| 精品日韩一区二区| 久久99深爱久久99精品| 五月天婷婷丁香网| 国产精品毛片a∨一区二区三区 | 婷婷中文字幕综合| 在线天堂www在线国语对白| 日韩久久免费av| 日韩在线播放一区二区| 波多野结衣av在线免费观看| 久久色在线视频| 丁香五精品蜜臀久久久久99网站| 性色av无码久久一区二区三区| 国产精品另类一区| 日本成人在线免费观看| 91精品久久久久久蜜臀| 极品少妇xxxx精品少妇偷拍| 在线观看福利片| 欧美国产成人在线| 99久久精品国产网站| 欧美妇女性影城| 精品一区二区三区久久久| 亚洲综合久久av一区二区三区| 日韩理论片在线| 理论片大全免费理伦片| 国产亚洲精品aa午夜观看| 一级黄色免费毛片| 日韩一区二区影院| 国产xxx精品视频大全| 欧美色综合网站| 免费视频最近日韩| 91日韩中文字幕| 亚洲午夜电影在线| 亚洲色图 激情小说| 亚洲视频综合在线| 麻豆国产精品一区| 亚洲欧洲精品成人久久奇米网| 99久久婷婷国产综合精品电影| 4438成人网| 国产大陆精品国产| 欧美精品日韩一区| 国产一区 二区 三区一级| 欧美无砖专区一中文字| 精品一区二区三区在线播放| 欧美在线视频不卡| 精品一区二区三区免费视频| 欧美日韩激情一区二区| 国内精品写真在线观看| 欧美嫩在线观看| 成人午夜私人影院| 日韩欧美一级精品久久| 99精品在线观看视频| 久久人人97超碰com| 又色又爽又黄18网站| 国产欧美一区二区精品婷婷| 国产精品91av| 欧美国产精品中文字幕| 800av在线播放| 亚洲色图19p| 综合五月激情网| 国产超碰在线一区| 国产视频亚洲色图| 久久亚洲无码视频| 久久97超碰色| 精品裸体舞一区二区三区| 日本一级片在线播放| 性做久久久久久| 欧美日韩久久一区| 久久久久久无码精品人妻一区二区| 日韩一区欧美小说| 日韩精品一级二级| 91精品国产一区二区三区蜜臀| 女王人厕视频2ⅴk| 亚洲精品国产第一综合99久久 | 日本成人在线网站| 9191国产精品| av电影在线播放| 亚洲国产精品嫩草影院| 欧美色窝79yyyycom| 在线观看你懂的视频| 一区二区三区高清在线| 欧洲精品视频在线观看| 男人的天堂免费| 亚洲成人av福利| 91精品国产综合久久久蜜臀粉嫩 | 久久久久国产精品麻豆ai换脸| 亚洲精品女人久久久| 视频在线观看91| 日韩丝袜情趣美女图片| 国产制服丝袜在线| 精品夜夜嗨av一区二区三区| 久久久国产精华| 国产人与禽zoz0性伦| 粉嫩高潮美女一区二区三区| 国产精品国产三级国产普通话三级| 777777国产7777777| 成人毛片视频在线观看| 亚洲精品少妇30p| 欧美日本一区二区三区| 亚洲最大的黄色网| 久久综合综合久久综合| 国产亚洲综合性久久久影院| 国产传媒免费在线观看| av电影在线观看一区| 亚洲一二三专区| 欧美xxxxxxxxx| 人与动物性xxxx| 99v久久综合狠狠综合久久| 亚洲小说春色综合另类电影| 日韩一区二区免费视频| www.99热| av中文字幕不卡| 亚洲国产精品综合小说图片区| 欧美一区二区三区视频在线 | 夜夜爽夜夜爽精品视频| 欧美精品日韩一本| 精品无码国产污污污免费网站| 国产成人aaa| 亚洲成人先锋电影| 26uuu亚洲综合色欧美| 欧美色图亚洲视频| 天天躁日日躁狠狠躁av| 国产在线国偷精品免费看| 亚洲视频在线观看一区| 91精品国产91久久久久久一区二区| 欧美三级视频网站| 91丝袜国产在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美激情一区二区三区不卡| 欧美日韩一二区| 亚洲av毛片基地| av在线播放一区二区三区| 三级欧美韩日大片在线看| 国产欧美一区二区三区在线看蜜臀 | 精品人妻伦九区久久aaa片| 97久久精品人人做人人爽| 秋霞午夜av一区二区三区| 中国色在线观看另类| 欧美老年两性高潮| 成人信息集中地| 精品视频站长推荐| 高清在线观看日韩| 日本成人超碰在线观看| 亚洲人妖av一区二区| 欧美www视频| 欧美三级视频在线播放| 亚洲第一视频区| 怡红院一区二区| 成人午夜av在线| 美日韩黄色大片| 亚洲黄一区二区三区| 久久久精品免费免费| 欧美疯狂做受xxxx富婆| 天天操天天操天天操天天操天天操| 国内精品免费视频|