npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

view-sense

v1.0.1

Published

一个轻量级的视口元素检测库,当DOM元素进入或离开视口时获得通知。

Readme

view-sense

一个轻量级的视口元素检测库,当DOM元素进入或离开视口时获得通知。

特点

  • 🔍 轻松检测元素进入或离开视口
  • 🎯 可配置的检测阈值和偏移量
  • ⚡ 高性能,使用节流优化滚动事件
  • 📦 轻量级,无依赖
  • 🔄 支持链式调用
  • 📱 响应式,支持所有现代浏览器

安装

npm install view-sense
import viewSense from  "view-sense"

或者通过CDN:

<script src="https://unpkg.com/view-sense/dist/index.js"></script>

基本用法

使用ViewSense,您可以注册当元素进入离开视口时调用的处理函数。每个处理函数接收一个参数,即进入或离开视口的元素。

viewSense('.someSelector')
    .on('enter', doSomething)
    .on('exit', el => {
        el.style.opacity = 0.5;
    });

API

ViewSense为每组通过viewSense(<selector>)获取的元素维护一个单独的处理函数注册表。每个注册表都提供相同的四种方法。ViewSense还提供四种顶层方法(isoffsetthresholdtest)。

viewSense(<selector>).on(<event>, <handler>)

为由selector选择的元素注册event事件的处理函数。ViewSense只发出'enter''exit'两种事件。

viewSense('.someSelector').on('enter', doSomething);

viewSense(<selector>).once(<event>, <handler>)

为由selector选择的元素注册event事件的处理函数。通过once注册的处理函数只会被调用一次。

viewSense('.someSelector').once('enter', doSomething);

viewSense.is(<element>)

检查element是否在视口中。

viewSense.is(document.querySelector('.someSelector'));
// => true

viewSense.offset(<offset>)

默认情况下,ViewSense认为元素只要触及视口的任何边缘就被视为在视口中。您可以设置一个与边缘的偏移量。例如,偏移量为100将考虑元素至少突破视口任何边缘100像素才会被视为在视口中。offset可以是正数或负数。

viewSense.offset(100);
viewSense.offset(-50);

也可以通过传递一个对象来为每个方向单独设置偏移量。

viewSense.offset({
    top: 100,
    right: 75,
    bottom: 50,
    left: 25
});

viewSense.threshold(<threshold>)

设置元素的高度宽度需要可见的比例才能被视为在视口中。默认值为0,表示任何可见量都算。阈值为0.51将分别要求元素的高度和宽度的一半或全部可见。threshold必须是介于01之间的数字。

viewSense.threshold(0);
viewSense.threshold(0.5);
viewSense.threshold(1);

viewSense.test(<test>)

用自定义函数覆盖ViewSense的默认可见性标准。该函数将接收元素和选项对象作为唯一的两个参数。当元素应该被视为可见时返回true,否则返回false

viewSense.test((el, options) => {
    // ...
});

viewSense(<selector>).check()

手动检查由selector选择的元素的状态。默认情况下,所有注册表都会在windowscrollresizeload事件上进行检查。

viewSense('.someSelector').check();

viewSense(<selector>).emit(<event>, <element>)

手动为任何单个元素触发event事件。

viewSense('.someSelector').emit('exit', document.querySelectorAll('.someSelector')[0]);

浏览器支持

  • Chrome (最新)
  • Firefox (最新)
  • Safari (最新)
  • Edge (最新)
  • IE 11+

许可证

MIT