浅谈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的构造函数和constructor属性
Jan 09 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
JavaScript中检测变量是否存在遇到的一些问题
Nov 11 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
JQuery+EasyUI轻松实现步骤条效果
Feb 22 Javascript
AngularJS中$http服务常用的应用及参数
Aug 22 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
微信小程序手动添加收货地址省市区联动
May 18 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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
怎么使 Mysql 数据同步
2006/10/09 PHP
Content-type 的说明
2006/10/09 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
php实现微信扫码支付
2017/03/26 PHP
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
javascript常用功能汇总
2015/07/05 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
python如何处理程序无法打开
2020/06/16 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
python3字符串输出常见面试题总结
2020/12/01 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
社区学雷锋活动策划方案
2014/01/30 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
学风建设主题班会
2015/08/17 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python