浅谈Emergence.js 检测元素可见性的 js 插件


Posted in Javascript onNovember 18, 2017

Emergence.js 是一个轻量级,高性能的 JS 插件,用于检测和操作浏览器中的元素。

这个插件被设计为允许根据浏览器中的可见性对元素进行操作。它使开发人员可以自由使用自己的 CSS 或JS 来查看动画还是状态的改变。它利用 HTML5 数据属性而不是类来简化开发。Emergence.js 是同类型中最轻,最兼容的插件之一。

emergence.js 的特点

  1. 无需依赖其他组件
  2. 支持IE8 +和所有现代浏览器
  3. 压缩后只有1kb

安装

Emergence.js 的安装非常的简单。npm的安装方法如下:

npm install emergence.js

另外我们也可以直接下载它,在html文件中引入Emergence.js即可。

<script src="path/to/emergence.min.js"></script>
<script>
 emergence.init();
</script>

如何使用

添加 data-emergence="hidden" 到您想要观看的任何元素:

< div class = “ element ” data-emergence = “ hidden ” > </ div >

当元素在视口内变得可见时,属性将变为 data-emergence="visible" 。现在,您可以利用CSS来动画元素:

.element [ data-emergence = hidden ] {
 / *隐藏状态* /
}
.element [ data-emergence = visible ] {
 / *可见状态* / 
}

自定义选项

Emergence.js有许多选项可以自定义。下面是默认值:

emergence.init({
 container: window,
 reset: true,
 handheld: true,
 throttle: 250,
 elemCushion: 0.15,
 offsetTop: 0,
 offsetRight: 0,
 offsetBottom: 0,
 offsetLeft: 0,
 callback: function(element, state) {
 if (state === 'visible') {
  console.log('Element is visible.');
 } else if (state === 'reset') {
  console.log('Element is hidden with reset.');
 } else if (state === 'noreset') {
  console.log('Element is hidden with NO reset.');
 }
 }
});

选项说明

container:容器,默认情况下,元素的可见性将由窗口的视口尺寸和X / Y滚动位置(设置为window)确定。但是,可以将其更改为自定义容器。例如:

var customContainer = document.querySelector('.wrapper');
// www.xttblog.com
emergence.init({
 container: customContainer
});

Throttle:是一种防止与滚动和调整事件大小相关的性能问题的方法。油门将创建一个小的超时,并在事件过程中每隔一定的毫秒量稳定地检查元素的可见性。默认是250。

reset:确定数据属性状态是否在显示后重置。false如果您希望元素即使在离开视口后仍保持其显示状态,请将其重置为。默认是true。

handheld:Emergence将为大多数手持设备型号(如手机和平板电脑)进行检查。设置false为时,插件将不会在这些设备上运行。默认是true。

elemCushion:元素坐标将决定在视口内需要多少元素才算“可见”。0.5的值将等于50%的元素需要可见。默认是0.15。

offsetTop, offsetRight, offsetBottom, offsetLeft:在视口的任何边上提供偏移量(以像素为单位)。如果您有一个固定的组件(例如标题),那么这非常有用,您可以为标题的高度偏移相同的值。100应用于的值offsetTop将意味着元素只有在距离视口顶部大于100像素时才会被视为可见。所有的默认值是0。

callback:用于提供回调来确定元素何时可见,隐藏和重置。可能的状态是visible,reset和noreset。

另外Emergence.js还提供了两个高级方法emergence.engage();和emergence.disengage();他们的作用刚好相反。

Emergence.js依赖于以下浏览器API:querySelectorAll 

为了支持IE8,请确保标准模式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
13个绚丽的Jquery 界面设计网站推荐
Sep 28 Javascript
只需一行代码,轻松实现一个在线编辑器
Nov 12 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
js实现的牛顿摆效果
Mar 31 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
Jun 13 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
浅谈对Angular中的生命周期钩子的理解
Jul 31 Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
JS变量提升及函数提升实例解析
Sep 03 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
基于jquery实现五星好评
Nov 18 #jQuery
基于JavaScript实现五子棋游戏
Aug 26 #Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 #Javascript
Vue2.0设置全局样式(less/sass和css)
Nov 18 #Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 #Javascript
深入研究React中setState源码
Nov 17 #Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 #Javascript
You might like
php session和cookie使用说明
2010/04/07 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
深入了解JavaScript 私有化
2019/05/30 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
小学毕业家长寄语
2014/01/19 职场文书
数学系毕业生求职信
2014/05/29 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
个人工作表现评价材料
2014/09/21 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
委托书英文
2015/01/28 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
酒店员工手册范本
2015/05/14 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技