浅谈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参数的小问题
Mar 02 Javascript
JavaScript中几种常见排序算法小结
Feb 22 Javascript
获得Javascript对象属性个数的示例代码
Nov 21 Javascript
js的hasownproperty使用示例
Mar 02 Javascript
jquery数组过滤筛选方法grep()简介
Jun 06 Javascript
Bootstrap布局方式详解
May 27 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
在Vue中使用echarts的方法
Feb 05 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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生成二维码的两个方法和实例
2014/07/01 PHP
php 问卷调查结果统计
2015/10/08 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python3下pygame如何实现显示中文
2020/01/11 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
枚举与#define宏的区别
2014/04/30 面试题
素质拓展感言
2014/01/29 职场文书
手工社团活动方案
2014/02/17 职场文书
环保建议书200字
2014/05/14 职场文书
施工工地安全标语
2014/06/07 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
军训通讯稿范文
2015/07/18 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python