浅谈Emergence.js 检测元素可见性的 js 插件

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,请确保标准模式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈Emergence.js 检测元素可见性的 js 插件

    Emergence.js 是一个轻量级,高性能的 JS 插件,用于检测和操作浏览器中的元素. 这个插件被设计为允许根据浏览器中的可见性对元素进行操作.它使开发人员可以自由使用自己的 CSS 或JS 来查看动画还是状态的改变.它利用 HTML5 数据属性而不是类来简化开发.Emergence.js 是同类型中最轻,最兼容的插件之一. emergence.js 的特点 无需依赖其他组件 支持IE8 +和所有现代浏览器 压缩后只有1kb 安装 Emergence.js 的安装非常的简单.npm的安装方

  • 浅谈layui 表单元素的选中问题

    layui对表单元素都作了美化,比如下拉列表,单选框,多选框.对表单美化后相应元素的操作,其实是在layui处理过后的div上操作,不能真的反映在原始我们编写的表单的元素上.这也会出现一个问题,如果想用JS对表单做些预处理,怎么做?操作原始的元素并不会展现在layui处理过的表单中的,那我们就对layui处理过的表单动手 这里要提两个我用过的,一个是单选框,一个是下拉列表 * 单选框,layui美化后,对应的type=radio的input项隐藏,在input之后追加了一个div,里面用i标签美

  • 浅谈python已知元素,获取元素索引(numpy,pandas)

    目前搜索到的方法有: np.where('元素') 还有就是pandas的方法: df.index('元素') 但是第二个方法的问题就是会报错,嗯,这就比较尴尬了,查询了网上的解决方案,有这样的: 此外使用 df[df['列名'].isin([相应的值])] 这个命令会输出等于该值的行. 此外如果想快速找到dataframe最后几行的话,可以使用的方法是tail,可以获取若干行的值 以上这篇浅谈python已知元素,获取元素索引(numpy,pandas)就是小编分享给大家的全部内容了,希望能给

  • 浅谈python输出列表元素的所有排列形式

    例如: ['a', 'b', 'c'] 输出 ['a', 'b', 'c'] ['a', 'c', 'b'] ['b', 'a', 'c'] ['b', 'c', 'a'] ['c', 'a', 'b'] ['c', 'b', 'a'] 方法一:利用递归的方式实现 def permutation(li): len_list = len(li) if len_list == 1: return li result = [] for i in range(len_list): res_list =

  • 浅谈关于如何检测iOS14本地网络权限的一些思路

    前戏 苹果iOS 14针对本地局域做了一些权限限制,详情见链接:https://developer.apple.com/videos/play/wwdc2020/10110/ wwdc翻译过来凑字数的 什么是本地网络? 这里的本地网络其实就是我们常说的局域网,是将设备接入路由器以后形成的网络,设备可以通过这张网络互相通信,如我们的设备发现.设备绑定.局域网优先等功能都是使用的本地网络. 从 iOS 13 开始,应用想要获得当前连接到的 Wi-Fi 名称,那就必须要获得定位权限.因为通过识别 Wi

  • 浅谈C语言数组元素下标为何从0开始

    很多同学可能在学习数组时会有这个疑问,下标为什么不从1开始呢?从1开始不是更符合大家的日常习惯吗?生活中我们通常说第1个,而不是第0个.的确,有些计算机语言如早期的Pascal语言,数组元素的下标是从1开始的.难道是C语言故意要与众不同?要弄清楚这个问题,得先看一下计算机底层是怎样处理数组元素的.我们先编写了一个小程序,然后在visual studio中对其进行了反汇编.源程序和反汇编后的部分代码如下: 源程序: int arr[5];  //一个全局数组 int main() {    int

  • 浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能

    今天在使用MVC4打包压缩功能@Scripts.Render("~/bundles/jquery") 的时候产生了一些疑惑,问什么在App_Start文件夹下BundleConfig.cs文件内 bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js", "~/Scripts/jquery.unobtrusive-a

  • 浅谈React中的元素、组件、实例和节点

    React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React. React 中的元素.组件.实例和节点,是React中关系密切的4个概念,也是很容易让React 初学者迷惑的4个概念.现在,老干部就来详细地介绍这4个概念,以及它们之间的联系和区别,满足喜欢咬文嚼字.刨根问底的同学(老干部就是其中一员)的好奇心. 元素 (Element) React 元素其实就是一个简单JavaScript对象,一个React 元素

  • 浅谈vue-cli加载不到dev-server.js的解决办法

    在使用vue开发过程中,难免需要去本地数据地址进行请求,而原版配置在dev-server.js中,新版vue-webpack-template已经删除dev-server.js,改用webpack.dev.conf.js代替,所以 配置本地访问在webpack.dev.conf.js里配置即可. #webpack.dev.conf.js //首先 // nodejs开发框架express,用来简化操作 const express = require('express') // 创建node.js

  • 浅谈js的html元素的父节点,子节点

    parentNode和parentElement功能一样,childNodes和children功能一样.但是parentNode和childNodes是符合W3C标准的,可以说比较通用.而另外两个只是IE支持,不是标准,Firefox就不支持 示例: "parentNode" 常用来获取某个元素的父节点. 把 parentNodes 理解为容器, 在容器中有个子节点 ,如下: <div id="parent"> <b id="child

随机推荐