1.2.0 • Published 3 years ago

v-poppers v1.2.0

Weekly downloads
28
License
-
Repository
-
Last release
3 years ago

popper

Chinse Version

给定一个元素(比如一个按钮)和一个描述它的工具提示元素,Popper会自动将弹框提示放在元素附近的正确位置。

它将定位从文档流中“弹出”并浮动在目标元素附近的任何UI元素。最常见的例子是工具提示,但它也包括弹出窗口、下拉菜单等。所有这些都可以泛称为“popper”元素。

npmUrl

https://www.npmjs.com/package/v-poppers

为什么使用Popper库?

  • 在任何数量的滚动容器中滚动时, 确保与被跟踪元素保持在一起

  • 无需手动设置CSS, Popper会自动设置到相应的位置

  • 灵活配置弹出位置, 大大减少了开发生产力

安装

# Using npm 
npm i v-poppers -S


# Using yarn 
yarn add v-poppers

通过script标签引入

<script src="*/index.umd.min.js"></script>

以Vue项目为例, 当然你可以在你的任何项目中使用

使用

<div class="popper" ref="popper"></div>
<div class="target" ref="target"></div>

<script>
import Popper from 'v-poppers'

export default {
  data() {
    return {
      s: null,
    }
  },
  mounted() {
    this.s = new Popper(this.$refs.popper, this.$refs.target)
    this.s.show()
  }
}

</script>

new Popper(el, trackNode, options)

属性类型说明默认值
el(必传)HTMLElementpopper 元素节点null
trackNode(必传)HTMLElementpopper 要跟踪的元素节点null
options(可选)object配置选项{}
  • 当 new 的时候, Popper会初始化配置, 你必须使用show()方法, 来使Popper到达指定的位置。

  • Popper 默认采用绝对定位, 当然你可以通过下面的配置来修改它

  • Popper默认会将 popper 元素自动添加到 body 上, 计算默认也将是以body为基准, 如果需要加入到 popper 元素的父级上, 请看下面的配置选项。

传入配置

可以通过传入配置来使Popper更灵活

<div ref="wrap">
  <div class="popper" ref="popper"></div>
  <div class="target" ref="target"></div>
</div>

<button @click="update">改变配置</button>

<script>
import Popper from 'v-poppers'

export default {
  data() {
    return {
      s: null,
      options: {
        position: 'absolute',
        trackPosition: 'bottom-start',
        offset: {
          y: 0
        },
        exceed: {
          y: 30,
          x: 30
        },
        appendParentNode: null,
        className: {
          top: ['top-class']
        },
        styles: {
          color: 'red'
        }
      }
    }
  },
  mounted() {
    this.options.appendParentNode = this.$refs.wrap
    this.s = new Popper(this.$refs.popper, this.$refs.target, this.options)
    this.s.show()
  },
  beforeDestroy() {
    this.s.destroy()
  },
  methods: {
    update() {
      this.options.offset.y = 20
      this.s.setOptions(this.options).update()
    }
  }
}

</script>

配置属性

名称类型说明可选值默认值
positionstringpopper元素定位方式css可用的定位值absolute
trackPositionstringpopper元素所有跟踪的位置见表格下文bottom-start
offsetobjectpopper元素偏移量任何有用数值{x: 0, y: 0}
exceedobjectpopper元素被隐藏多少开始计算位置任何有用数值{x: 0, y: 0}
appendParentNodeHTMLElementpopper元素所需要被追加到的父元素, 不传会被默认加载body上DOMnull
isAppendParentNodeboolean如果不明确父级元素, 可指定此属性为true, 会将popper追加到里被跟踪元素最近的一个滚动父级容器上--false
classNameobjectpopper元素所在相对于跟踪元素节点位置的class样式见表格下文--
stylesobjectpopper元素 的styles样式任何可用的style样式{}
  • trackPosition 的可能值: bottom-start | bottom-center | bottom-end | top-start | top-center | top-end | left-center | right-center

  • className 的可能值: top | bottom | left | right |

Popper 方法

名称说明参数返回值
show显示Popper元素, 只有调用此方法,才开始计算位置--当前 Popper 实例
update更新Popper元素, 调用此方法, 会重新开始计算--当前 Popper 实例
setOptions更新配置选项, 当重新更新了配置后, 调用此方法重新设置options当前 Popper 实例
destroy销毁当前Popper实例-------

当不需要使用popper元素的时候, 应该要手动去销毁它

1.2.0

3 years ago

1.1.0

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

0.1.0

4 years ago