用法:
html:
<div class="wf-container"></div>
// 初始化
var waterfallObj = new Waterfall({
containerSelector: '.wf-container',
minBoxWidth: 250
});
// 添加元素
var elem = document.createElement('h2');
elem.textContent = '一汽股份不履行承诺或早有预兆 律师称中小股东可起诉公司控股股东'
waterfallObj.addBox(elem)
源码:
(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; })()
相关推荐
微信小程序源码 瀑布流布局(学习版)微信小程序源码 瀑布流布局(学习版)微信小程序源码 瀑布流布局(学习版)微信小程序源码 瀑布流布局(学习版)微信小程序源码 瀑布流布局(学习版)微信小程序源码 瀑布流布局(学习版)...
微信小程序 瀑布流布局 (源码)微信小程序 瀑布流布局 (源码)微信小程序 瀑布流布局 (源码)微信小程序 瀑布流布局 (源码)微信小程序 瀑布流布局 (源码)微信小程序 瀑布流布局 (源码)微信小程序 瀑布流布局 (源码)微信...
微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+...
瀑布流布局,也被称为Masonry布局或Pinterest布局,是一种常用于网页和移动应用中的展示大量图像或内容的方式。它的特点是内容以多列的形式排列,每一列的高度不固定,随着页面滚动,新内容会自然地填充到列的底部,...
本教程将通过一个具体的实例——“微信小程序-实现瀑布流布局demo”来探讨如何在微信小程序中实现瀑布流布局和无限下拉加载功能。 首先,我们要理解瀑布流布局。这是一种常见的网页设计布局方式,其特点是以多列...
瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在展示图片或者商品时非常流行。这种布局的特点是每个元素(通常是图片)的宽度不固定,但它们的左侧边缘会对齐,形成一种自适应的错落效果,类似于...
在这个“微信小程序图片瀑布流布局demo”中,我们将会探讨如何在微信小程序中实现图片的瀑布流展示,这是一种常见的网页和移动应用设计模式,尤其适用于图片分享和展示类应用。 瀑布流布局,又称为无限滚动或荷叶边...
瀑布流布局,也被称为Masonry布局,是一种常用于图片展示或商品列表的网页设计模式,它的特点是元素在页面上自适应地垂直排列,形成一种类似瀑布倾泻的效果。这种布局方式能够有效地利用屏幕空间,使得视觉效果更加...
移动端H5瀑布流布局技术 移动端H5瀑布流布局是一种流行的网页布局方式,视觉上呈现出一种像瀑布一样垂直落下的排版。每张图片并不是显示的正正方方的,而是有的长有的短,呈现出一种不规则的形状。但是它们的宽度...
瀑布流布局,又称Masonry布局,是一种常见的网页和移动应用界面设计方式,尤其在展示图片或者商品信息时非常流行。这种布局方式模仿了瀑布流水的效果,使得内容在屏幕上以不规则的多列形式自上而下排列,每列的高度...
瀑布流布局,又称为Pinterest布局,是Android应用中一种常见的图片展示方式,因其效果类似瀑布倾泻而下,且图片可以交错排列,视觉效果独特,故得名。这种布局方式在展示图片分享、商品列表等场景中非常流行,能够...
瀑布流布局,也被称为Masonry布局,是一种网页设计布局方式,常见于图片分享网站和电商产品展示页面。这种布局的特点是元素逐行排列,每行中的元素宽度不固定,但高度自适应,使得整体视觉效果像瀑布一样从上至下...
Android 瀑布流布局,这个演示例子定义了一个3列的图片瀑布流布局,每次加载15张图片,根据屏幕大小计算每列大小,判断操作是否滚动到最顶端和最底端,根据判断加载所有图片路径,并考虑防止内存溢出,获取真实宽高...
瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在图片展示、电商产品列表等场景中广泛应用。它的特点是每个元素(如图片)在垂直方向上排列,如同瀑布一样一泻而下,同时在水平方向上保持一定的对齐...
小程序源码 瀑布流布局 (代码+截图)小程序源码 瀑布流布局 (代码+截图)小程序源码 瀑布流布局 (代码+截图)小程序源码 瀑布流布局 (代码+截图)小程序源码 瀑布流布局 (代码+截图)小程序源码 瀑布流布局 (代码+截图)小...
瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在展示图片或者商品列表时应用广泛。这种布局的特点是每个元素(如图片)在页面上自上而下垂直排列,当一行排列满后,下一行会自然地向左偏移,形成一...
瀑布流是今年流行的一种页面布局方式,淘宝哇喔,蘑菇街,点点等都采用了瀑布流布局。花瓣主题集成了日志一键分享功能,对于提升网站流量非常有用。另外petal对于浏览器的兼容也是不错的,支持目前所有主流浏览器,...
瀑布流布局是一种常见的网页设计模式,它以一种不规则的方式排列元素,使页面看起来像瀑布一样自上而下流动。这种布局方式常用于图片展示、社交媒体应用和电子商务网站,因为它可以提供良好的视觉体验,使用户在浏览...
瀑布流布局,又称为Masonry布局,是一种在iOS应用中常用的设计模式,特别是在展示大量图片或者商品信息时,能够提供良好的用户体验。这种布局方式模仿了真实世界中瀑布流水的效果,使得屏幕上的元素自上而下排列,每...
瀑布流布局在Android应用开发中是一种常见的展示方式,尤其在电商、社交等应用中用于商品或图片的展示。它的特点是视图元素不均匀分布,像瀑布一样从上至下流淌,每一行的列数可能不同,形成一种错落有致的效果。在...