0.1.8 • Published 4 years ago

viewport-check v0.1.8

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

检测元素是否进入或者退出视口。

npm

特性

  1. 可选择基于屏幕或者元素来判断是否进入视口,例如进入滚动容器30%后,或者元素出现30%

  2. 输入方式多样化,可以输入数字200,字符串30%,小数0.3

  3. 可选择autoDestory模式,进入一次视口后,移除监听,销毁对象

  4. 横向纵向滚动判断

  5. 基于自定义容器的滚动,默认为window

  6. 元素高度自定义,可选择:

    1. 包括margin, border, padding
    2. 包括border, padding,不包括margin
    3. 包括padding,不包括margin,border
    4. 纯粹的高度,不包括margin, border, padding

效果查看

LIVE DEMO

待添加特性

暂无

使用说明

  • 安装

npm install viewport-check

  • 使用
import ViewportCheck from 'viewport-check'

new ViewportCheck({
  element:document.getElementById("target"),
  offset:0.3,
  baseAt:'target',
  margin:true,
  enter:(direction) => {
    console.log('enter, the height include margin, border and padding! The enter direction is:'+direction)
  },
  leave:() => {
    console.log('leave,The leave direction is:'+direction)
  }
})

Options

AttrDescriptionDefault valueTypeRequired
element需要监控的元素/HTMLElementStringtrue
context滚动容器元素windowHTMLElementStringfalse
offset进出视口的偏移量0.3NumberStringfalse
baseAt偏移量基于元素还是滚动容器target(target/context)false
padding高度计算是否包括padding更多trueBooleanfalse
border高度计算是否包括border更多trueBooleanfalse
margin高度计算是否包括margin更多falseBooleanfalse
useCssComputed是否使用css的高度设置更多falseBooleanfalse
autoDestroy是否在进入视口后销毁falseBooleanfalse
horizontal是否横向滚动falseBooleanfalse
enter进入视口的回调函数(direction)=>{}Functionfalse
leave离开视口的回调函数(direction)=>{}Functionfalse

使用CSS高度设置

默认情况下使用getBoundingClientRect计算元素高度,但是当元素初始为scale(0)的情况,无法准确获取的高度, 因此需要使用getComputedStyle计算高度。

关于高度计算

在css的盒模型中,最外层的是margin,接着是border,接着是paddingheight

ViewportCheck中,默认是margin:falseborder:truepadding:true;这么做遵循了element.offsetHeight的配置。

因此,如果设定了margin:true,也就意味着包括margin,同样也包括了borderpadding

如果只想计算最纯粹的height,那么需要设定border:false, padding:false, 因为margin默认为false

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago