浅谈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 相关文章推荐
根据地区不同显示时间的javascript代码
Aug 13 Javascript
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
关于js内存泄露的一个好例子
Dec 09 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
微信小程序如何像vue一样在动态绑定类名
Apr 17 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
React注册倒计时功能的实现
Sep 06 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 Javascript
详谈vue中router-link和传统a链接的区别
Jul 22 Javascript
Element Popover 弹出框的使用示例
Jul 26 Javascript
JS前端轻量fabric.js系列物体基类
Aug 05 Javascript
基于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数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
详解Python3 基本数据类型
2019/04/19 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
期末个人总结范文
2015/02/13 职场文书
廉政承诺书2015
2015/04/28 职场文书
课程设计感想范文
2015/08/11 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技
centos7安装mysql5.7经验记录
2022/05/02 Servers