亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

原生JS實現響應式瀑布流布局

2019-11-20 12:47:31
字體:
來源:轉載
供稿:網友

原生JS實現的瀑布流布局,代碼及demo代碼地址:https://github.com/leozdgao/responsive_waterfall

Demo:http://leozdgao.github.io/demo/responsive_waterfall/

演示圖:

核心代碼:

responsive_waterfall.js

(function() {  var Waterfall = function(opts) {    var minBoxWidth;    Object.defineProperty(this, 'minBoxWidth', {      get: function() { return minBoxWidth; },      set: function(value) {        if(value < 100) value = 100;        if(value > 1000) value = 1000;                 minBoxWidth = value;      }    });     opts = opts || {};    var containerSelector = opts.containerSelector || '.wf-container';    var boxSelector = opts.boxSelector || '.wf-box';     // init properties    this.minBoxWidth = opts.minBoxWidth || 250;    this.columns = [];    this.container = document.querySelector(containerSelector);    this.boxes = this.container ?       Array.prototype.slice.call(this.container.querySelectorAll(boxSelector)) : [];     // compose once in constructor    this.compose();     // handle the image or something which might change size after loaded    var images = this.container.querySelectorAll('img'), that = this;    var clr;    for (var i = 0; i < images.length; i++) {      var img = images[i];      img.onload = function() {        if(clr) clearTimeout(clr);         clr = setTimeout(function() {          that.compose(true);        }, 500);      }    }     window.addEventListener('resize', function() {      that.compose();    });  }   // compute the number of columns under current setting  Waterfall.prototype.computeNumberOfColumns = function() {    var num = Math.floor(this.container.clientWidth / this.minBoxWidth);    num = num || 1; // at least one column     return num;  }   // init enough columns and set the width  Waterfall.prototype.initColumns = function(num) {    if(num > 0) {      // create column div      this.columns = [];      var width = (100 / num) + '%';      while(num--) {        var column = document.createElement('div');        column.className = 'wf-column';        column.style.width = width;        this.columns.push(column);        this.container.appendChild(column);      }    }  }   // get the index of shortest column  Waterfall.prototype.getMinHeightIndex = function() {    if(this.columns && this.columns.length > 0) {      var min = this.columns[0].clientHeight, index = 0;      for (var i = 1; i < this.columns.length; i++) {        var columnElem = this.columns[i];        if(columnElem.clientHeight < min) {          min = columnElem.clientHeight;          index = i;        }      }      return index;    }    else return -1;  }   // compose core  Waterfall.prototype.compose = function(force) {    var num = this.computeNumberOfColumns();    var cols = this.columns.length;         if(force || num != cols) {      // remove old column      for (var i = 0; i < this.columns.length; i++) {        var columnElem = this.columns[i];        columnElem.remove();      }       // init new column      this.initColumns(num);       // compose      for (var i = 0, l = this.boxes.length; i < l; i++) {        var box = this.boxes[i];        this.addBox(box);      }    }  }   // add a new box to grid  Waterfall.prototype.addBox = function(elem) {    // push if new box    if(this.boxes.indexOf(elem) < 0) this.boxes.push(elem);     var columnIndex = this.getMinHeightIndex();    if(columnIndex > -1) {      var column = this.columns[columnIndex];      column.appendChild(elem);    }  }   window.Waterfall = Waterfall;})()

以上所述就是本文給大家分享的全部內容了,希望能夠對大家熟練使用javascript有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩福利电影| 欧美成人第一页| 国产日韩欧美视频| 欧美黑人一区二区三区| 久久九九国产精品怡红院| 一本一道久久a久久精品逆3p| 久久久久久国产精品| 精品视频一区在线视频| 97超级碰碰人国产在线观看| 日韩一区二区三区在线播放| 国产精品美女免费视频| 成人性生交xxxxx网站| 欧美激情久久久| 深夜福利91大全| 国产精品成人国产乱一区| 国产综合视频在线观看| 久精品免费视频| 91精品国产综合久久香蕉的用户体验| 亚洲精品456在线播放狼人| 91九色蝌蚪国产| 欧美激情videoshd| 国内精品中文字幕| 色综合久久中文字幕综合网小说| 亚洲一区二区三区xxx视频| 日韩电影免费观看中文字幕| 亚洲精品国精品久久99热| 亚洲精品视频在线播放| 亚洲最大的成人网| 欧美资源在线观看| 亚洲国产中文字幕在线观看| 欧美性xxxxx极品| 欧美综合在线第二页| 国产视频福利一区| 国产精品海角社区在线观看| 国产欧美一区二区三区四区| 欧美精品久久久久久久久久| 国产欧美中文字幕| 欧美一区二区影院| 日韩精品视频免费专区在线播放| 欧美猛交ⅹxxx乱大交视频| 国产激情久久久久| 懂色av中文一区二区三区天美| 欧美老少做受xxxx高潮| 亚洲成人黄色网址| 国产精品成人v| 亚洲福利视频网| 国产综合在线观看视频| 国产亚洲在线播放| 日韩欧美国产黄色| 91黑丝高跟在线| 欧美激情在线一区| 国产精国产精品| 久久久女人电视剧免费播放下载| 亚洲精品乱码久久久久久按摩观| 精品国产乱码久久久久久天美| 国内精品久久久久伊人av| 一区二区三区视频免费在线观看| 国产免费久久av| 国产在线精品成人一区二区三区| 久久人人爽人人| 国产在线日韩在线| 91免费高清视频| 欧美激情日韩图片| 欧美福利视频在线| 91九色单男在线观看| 欧美极品少妇xxxxx| 亚洲加勒比久久88色综合| 中文字幕在线成人| 精品成人av一区| 亚洲天堂av网| 亚洲人成电影在线观看天堂色| 日韩精品免费观看| 性夜试看影院91社区| 91久久久久久久久久久久久| 日韩有码在线视频| 91精品国产综合久久香蕉最新版| 日韩最新av在线| 亚洲国产天堂网精品网站| 亚洲美女黄色片| 亚洲欧美日韩图片| 色偷偷av亚洲男人的天堂| 欧美视频在线视频| 欧美日韩国产成人在线观看| 日韩av免费看网站| 欧美午夜精品在线| 亚洲欧美国产一区二区三区| 一本一本久久a久久精品综合小说| 久久久久久97| 亚洲欧美日韩国产成人| 久久国产精品偷| 国产精品丝袜久久久久久高清| 奇米四色中文综合久久| 色综合亚洲精品激情狠狠| 亚洲乱码一区av黑人高潮| 国产精品丝袜高跟| 九九九久久国产免费| 欧美高清videos高潮hd| 国产狼人综合免费视频| 青青在线视频一区二区三区| 97视频在线观看亚洲| 日韩欧美成人免费视频| 91精品国产91久久久久久不卡| 国产一级揄自揄精品视频| 欧美日韩国产专区| 97婷婷涩涩精品一区| 国产精品久久久久免费a∨大胸| 欧美在线视频免费| 欧美人在线视频| 日韩在线视频中文字幕| 久久久精品影院| 77777少妇光屁股久久一区| 亚洲天堂成人在线| 国产日韩在线视频| 久久成人综合视频| 欧美人成在线视频| 欧美激情2020午夜免费观看| 亚洲欧洲xxxx| 亚洲天堂色网站| 国内精品久久久久伊人av| 91久久国产精品91久久性色| 国产精品国产三级国产aⅴ浪潮| 亚洲毛片在线观看.| 国产精品无码专区在线观看| 91在线观看免费高清完整版在线观看| 亚洲国产成人久久综合一区| 日韩美女写真福利在线观看| 精品国产电影一区| 午夜精品美女自拍福到在线| 国产一区二区久久精品| 久久久精品国产网站| 这里只有精品视频| 亚洲无亚洲人成网站77777| 国产精品美女免费| 久久久www成人免费精品张筱雨| 成人中心免费视频| 55夜色66夜色国产精品视频| 欧美在线视频免费播放| 综合国产在线观看| 亚洲国产欧美一区二区丝袜黑人| 亚洲奶大毛多的老太婆| 日韩中文在线中文网在线观看| 亚洲最大福利视频网站| 亚洲最大的av网站| 成人精品视频久久久久| 国产精品久久久久久久久久| 欧美国产亚洲视频| 国产视频在线一区二区| 精品女同一区二区三区在线播放| 夜夜狂射影院欧美极品| 亚洲欧美综合另类中字| 日韩视频精品在线| 久久影视免费观看| 久久精品99无色码中文字幕| 久久九九国产精品怡红院| 亚洲精品白浆高清久久久久久| 精品国产一区二区三区在线观看| 秋霞av国产精品一区| 欧美激情综合亚洲一二区| 亚洲精品ady| 亚洲国产女人aaa毛片在线| 一色桃子一区二区| 日韩av免费在线播放| 精品久久久久久中文字幕| 成人写真视频福利网|