浅谈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的with语句使用方法
Sep 21 Javascript
JavaScript效率调优经验
Jun 04 Javascript
使用jquery的ajax需要注意的地方dataType的设置
Aug 12 Javascript
Javascript中的Callback方法浅析
Mar 15 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 Javascript
Bootstrap表格使用方法详解
Feb 17 Javascript
JS中数据结构之栈
Jan 01 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
Element-UI+Vue模式使用总结
Jan 02 Javascript
微信小程序地图绘制线段并且测量(实例代码)
Jan 02 Javascript
ES6箭头函数和扩展实例分析
May 23 Javascript
vue实现简易的双向数据绑定
Dec 29 Vue.js
基于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常用函数的用法详解
2013/05/10 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
php实现的CSS更新类实例
2014/09/22 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
js压缩利器
2007/02/20 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
python timestamp和datetime之间转换详解
2017/12/11 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
解决django FileFIELD的编码问题
2020/03/30 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
个人简历自我评价
2014/01/06 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
财务会计专业自荐书
2014/06/30 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
见习报告格式要求
2014/11/04 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
anaconda python3.8安装后降级
2021/06/11 Python