浅谈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 相关文章推荐
jquery foreach使用示例
Sep 12 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
js 触发select onchange事件代码
Mar 20 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
webpack构建vue项目的详细教程(配置篇)
Jul 17 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 jQuery
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
jQuery实现计算器功能
Oct 19 jQuery
Ajax异步刷新功能及简单案例
Nov 20 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生成xml简单实例代码
2009/12/16 PHP
js代码实现微博导航栏
2015/07/30 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP7 新增功能
2021/03/09 PHP
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Python笔记之代理模式
2019/11/20 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
如何打开WebSphere远程debug
2014/10/10 面试题
Java基础面试题
2012/11/02 面试题
科研课题实施方案
2014/03/18 职场文书
出售房屋协议书范本
2014/10/06 职场文书
2015年双拥工作总结
2015/04/08 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python