100行js代码搞定瀑布流插件 zx-waterfall

本文介绍了如何使用100行JavaScript代码创建一个名为zx-waterfall的瀑布流布局插件。提供了GitHub源码链接及Demo,便于读者理解和实践。
摘要由CSDN通过智能技术生成

效果图

100行js代码搞定瀑布流插件

GitHub源码&Demo: https://github.com/capricorncd/zx-waterfall

waterfall.js

/**
 * Created by Capricorncd.
 * Date: 2018/12/14 16:00
 * https://github.com/capricorncd
 */
import App from './app.js'
// 默认配置文件
const DEFAULT_OPTS = {
   
  // 外容器
  wrapper: null,
  // 子元素选择器
  itemSelector: '',
  // 元素间距
  gutter: 20,
  itemWidth: 300
}

class ZxWaterfall {
   
  constructor (opts) {
   
    this.opts = Object.assign({
   }, DEFAULT_OPTS, opts)
    // 数据列表
    this.list = []
    this.init()
    // 监听window.onresize
    App.addEvent(window, 'resize', this.resetPosition.bind(this))
  }

  init () {
   
    let opts = this.opts
    if (!App.isElement(opts.wrapper)) {
   
      throw new Error(`瀑布流外容器非DOM元素`)
    }
    // 获取容器Rect信息
    let wrapperBox = opts.wrapper.getBoundingClientRect()
    // console.log(wrapperBox.width)
    // 可列数
    let columnNum = Math.floor(wrapperBox.width / (opts.itemWidth + opts.gutter))
    // 元素实际宽度
    this.itemWidth = (wrapperBox.width - (columnNum + 1) * opts.gutter) / columnNum
    // 列数组
    this.columns = Array
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值