原生實現(xiàn)瀑布流的簡單Demo

一、Html布局
<div id="main">
    <div class="box">
      <div class="pic">
        ![](images.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](mingo.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](ace.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](images.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](mingo.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](ace.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](mingo.jpg)
      </div>
    </div>
    <div class="box">
      <div class="pic">
        ![](ace.jpg)
      </div>
    </div>
  </div>
二阶祭、Css樣式
<style>
  *{
    margin:0;
    padding: 0;
  }
  #main{
    position: relative;
  }
  .box{
    padding: 15px 0 0 15px;
    float: left;
  }
  .pic{
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    box-shadow:0 0 5px #ccc;
  }
  .pic img{
    width: 320px;
    height: auto;
  }
</style>
三犀农、Js部分
window.onload=function(){
    waterfall('main','box');
    window,onscroll = function(){
      var oParent = document.getElementById("main");
      //模擬后臺動態(tài)添加的json數(shù)據(jù)塊
      var dataInt = {"data":[{"src":"images.jpg"},{"src":"ace.jpg"},{"src":"mingo.jpg"}]}
      
      if(checkScrollSlide){
        //將數(shù)據(jù)塊渲染到當前頁面的尾部
        for(var i = 0;i < dataInt.data.length;i++){
          var oBox = document.createElement("div");
          oBox.className = "box";
          oParent.appendChild(oBox);
          var oPic = document.createElement("div");
          oPic.className = "pic";
          oBox.appendChild(oPic);
          var oImg = document.createElement("img");
          oImg.src = dataInt.data[i].src;
          oPic.appendChild(oImg);
        }
        waterfall('main','box');
      }
    }
  }

  //設置Box所在位置寒锚,實現(xiàn)瀑布流效果
  function waterfall(parent,box){
    var oParent = document.getElementById(parent);
    var oBoxs = getByClass(oParent,box);//將main下所有class為box的元素取出來

    //計算整個頁面顯示的列數(shù)cols(頁面寬/固定盒子寬)
    var oBoxW = oBoxs[0].offsetWidth;
    var cols = Math.floor(document.documentElement.clientWidth/oBoxW)||Math.floor(document.body.clientWidth/oBoxW);

    //設置main的寬度
    oParent.style.cssText = 'width:'+oBoxW*cols+'px;margin:0 auto';
    var heightArr = [];//存放每一列高度的數(shù)組
    for(var i = 0;i < oBoxs.length;i++){
        if(i < cols){//完成第一行盒子后存儲它們的高度
          heightArr.push(oBoxs[i].offsetHeight);
        }else{
          //處理剩下的盒子的擺放位置
          //借助apply()方法求出數(shù)組中的最小值
          var minH = Math.min.apply(null,heightArr);
          var index = getMinhIndex(heightArr,minH);
          oBoxs[i].style.position = 'absolute';
          oBoxs[i].style.top = minH + 'px';
          // oBoxs[i].style.left = index*oBoxW + 'px';
          oBoxs[i].style.left = oBoxs[index].offsetLeft + 'px';
          //更新oBoxs位置信息
          heightArr[index] += oBoxs[i].offsetHeight;
        }
    }
  }
  function getByClass(parent,clsName){
    var oElements = parent.getElementsByTagName("*");
    var boxArr = [];
    for(var i = 0;i<oElements.length;i++){
      if(oElements[i].className == clsName){
        boxArr.push(oElements[i]);
      }
    }
    return boxArr;
  }
  //取出oBoxs小值的索引
  function getMinhIndex(arr,val){
    for(var i = 0;i < arr.length;i++){
      if(arr[i] == val){
        return i;
      }
    }
  }
  //檢測是否具備了滾動加載數(shù)據(jù)塊的條件
  function checkScrollSlide(){
    var oParent = document.getElementById('main');
    var oBoxs = getByClass(oParent,'box');//取出所有圖片盒子
    var lastBoxH = oBoxs[oBoxs.length-1].offsetTop+Math.floor(oBoxs[oBoxs.length-1].offsetHeight/2);
    var scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
    var height = document.body.clientHeight||document.documentElement.clientHeight;
    return (lastBoxH<scrollTop+height)?true:false;
  }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宠哄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子禽最,更是在濱河造成了極大的恐慌杠茬,老刑警劉巖月褥,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓢喉,居然都是意外死亡宁赤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門栓票,熙熙樓的掌柜王于貴愁眉苦臉地迎上來决左,“玉大人,你說我怎么就攤上這事走贪》鹈停” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵坠狡,是天一觀的道長继找。 經(jīng)常有香客問我,道長逃沿,這世上最難降的妖魔是什么婴渡? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮凯亮,結果婚禮上边臼,老公的妹妹穿的比我還像新娘。我一直安慰自己假消,他們只是感情好柠并,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著富拗,像睡著了一般臼予。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啃沪,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天瘟栖,我揣著相機與錄音,去河邊找鬼谅阿。 笑死,一個胖子當著我的面吹牛酬滤,可吹牛的內(nèi)容都是我干的签餐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼盯串,長吁一口氣:“原來是場噩夢啊……” “哼氯檐!你這毒婦竟也來了?” 一聲冷哼從身側響起体捏,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤冠摄,失蹤者是張志新(化名)和其女友劉穎糯崎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體河泳,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡沃呢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拆挥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薄霜。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纸兔,靈堂內(nèi)的尸體忽然破棺而出惰瓜,到底是詐尸還是另有隱情,我是刑警寧澤汉矿,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布崎坊,位于F島的核電站,受9級特大地震影響洲拇,放射性物質(zhì)發(fā)生泄漏奈揍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一呻待、第九天 我趴在偏房一處隱蔽的房頂上張望打月。 院中可真熱鬧,春花似錦蚕捉、人聲如沸奏篙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秘通。三九已至,卻和暖如春敛熬,著一層夾襖步出監(jiān)牢的瞬間肺稀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工应民, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留话原,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓诲锹,卻偏偏與公主長得像繁仁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子归园,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案黄虱? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,728評論 1 92
  • 一:在制作一個Web應用或Web站點的過程中,你是如何考慮他的UI庸诱、安全性捻浦、高性能晤揣、SEO、可維護性以及技術因素的...
    Arno_z閱讀 1,138評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,513評論 25 707
  • 女生小文和男友小方相戀10年,小文7次懷孕6次墮胎母剥,第7次剛懷孕2個月滞诺,男友背著她和別的女人閃婚。 小文痛苦不已环疼,...
    堅持行動家安小小閱讀 351評論 0 2
  • 剛開始買思思大王的這本書炫隶,緣于竟有這么一本書“廢話連篇”的前言的書可以賣的這么火淋叶,我也瞅瞅。果然“廢話連篇”的地方...
    蔣景堂閱讀 887評論 0 2