麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 日韩av在线播放一区 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 欧美在线观看黄色 | 欧美一级毛片特黄黄 | 水多视频在线观看 | 成人在线观看免费视频 | 国产第一页精品 | 久草在线资源视频 | 日本黄色大片免费 | 中文字幕亚洲欧美 | 99视频有精品视频高清 | 国产亚洲高清在线精品不卡 | 奶子吧naiziba.cc免费午夜片在线观看 | 亚洲影院在线 | av电影网在线观看 | 91精品国产一区二区在线观看 | 免费观看欧美一级片 | 精品偷拍久久 | 欧美城网站地址 | 日韩av片在线免费观看 | 宅男噜噜噜66国产在线观看 | 久久欧美亚洲另类专区91大神 | 欧美大电影免费观看 | 国产精品久久久久国产精品三级 | 国产精品视频导航 | 亚洲视频黄 | 亚洲成人精品视频 | 日本教室三级在线看 | 成人在线视频播放 | 久色亚洲| 视频久久免费 | 亚洲国产成人一区 | 久久人人做 | 一级电影免费看 | 欧美特黄一级高清免费的香蕉 | www.guochanav.com | 色爱99| www.91视频com | 桥本有菜免费av一区二区三区 | 看免费黄色大片 |