浅谈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 数值项目的格式化函数代码
May 14 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
Jul 20 Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 Javascript
jQuery实现复选框的全选和反选
Feb 02 Javascript
javascript九宫格图片随机打乱位置的实现方法
Mar 15 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
在react中使用vuex的示例代码
Jul 30 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
Nov 15 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
NUXT SSR初级入门笔记(小结)
Dec 16 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连接函数implode与分割explode的深入解析
2013/06/26 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python算术运算符实例详解
2017/05/31 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
python 实现字符串下标的输出功能
2020/02/13 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
GWebs公司笔试题
2012/05/04 面试题
教师自我评价范例
2013/09/24 职场文书
运动会稿件50字
2014/02/17 职场文书
演讲比赛策划方案
2014/06/11 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python