浅谈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怎样实现ajax联动框(一)
Mar 08 Javascript
没有document.getElementByName方法
Aug 19 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
原生JS实现的自动轮播图功能详解
Dec 28 Javascript
浅谈js闭包理解
Apr 01 Javascript
vue新建项目并配置标准路由过程解析
Dec 09 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
python 获取et和excel的版本号
2009/04/09 Python
pytyon 带有重复的全排列
2013/08/13 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
Python configparser模块操作代码实例
2020/06/08 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
彪马日本官网:PUMA日本
2019/01/31 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
个人求职信范文分享
2014/01/06 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
教师工作决心书
2015/02/04 职场文书
运动会广播稿300字
2015/08/19 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript