浅谈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实现一个可编辑的select下拉列表
Feb 20 Javascript
jQuery打印指定区域Html页面并自动分页
Jul 04 Javascript
上传文件返回的json数据会被提示下载问题解决方案
Dec 03 Javascript
ECMAScript 5中的属性描述符详解
Mar 02 Javascript
jQuery 特性操作详解及实例代码
Sep 29 Javascript
Bootstrap框架安装使用详解
Jan 21 Javascript
详解javascript中对数据格式化的思考
Jan 23 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
vue动态设置img的src路径实例
Sep 18 Javascript
layui表格内容溢出的解决方法
Sep 06 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
轻轻松松学习JavaScript
2007/02/25 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
Javascript实现网络监测的方法
2015/07/31 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
学习心理学的体会
2014/11/07 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
结婚老公保证书
2015/02/26 职场文书
话题作文之自信作文
2019/11/15 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python