浅谈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 的addEventListener()及attachEvent()区别分析
May 21 Javascript
JavaScript类和继承 constructor属性
Mar 04 Javascript
javascript事件函数中获得事件源的两种不错方法
Mar 17 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
js时间戳转为日期格式的方法
Dec 28 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
Javascript 编码约定(编码规范)
Mar 11 Javascript
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
详解react、redux、react-redux之间的关系
Apr 11 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
VSCode 配置uni-app的方法
Jul 11 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入门学习知识点三 PHP上传
2011/07/14 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python入门篇之列表和元组
2014/10/17 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
.net面试题
2016/09/17 面试题
MYSQL基础面试题
2012/05/13 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
创先争优演讲稿
2014/09/15 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
地陪导游欢迎词
2015/01/26 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
python内置进制转换函数的操作
2021/06/02 Python
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript