浅谈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 相关文章推荐
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
img onload事件绑定各浏览器均可执行
Dec 19 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
jquery滚动特效集锦
Jun 03 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
Bootstrap Table使用心得总结
Nov 29 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
vue中@change兼容问题详解
Oct 25 Javascript
vue浏览器返回监听的具体步骤
Feb 03 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
我的论坛源代码(四)
2006/10/09 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
浅谈Python中数据解析
2015/05/05 Python
Django返回json数据用法示例
2016/09/18 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
UNIX命令速查表
2012/03/10 面试题
世界名著读书笔记
2015/06/25 职场文书
体育委员竞选稿
2015/11/21 职场文书
python 模块重载的五种方法
2021/04/24 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
详解Redis集群搭建的三种方式
2021/05/31 Redis
JavaScript文档对象模型DOM
2021/11/20 Javascript
redis protocol通信协议及使用详解
2022/07/15 Redis