Socket
Socket
Sign inDemoInstall

virtual-scroll-pointer

Package Overview
Dependencies
1
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    virtual-scroll-pointer

Enhanced Custom scroll events for smooth, fake scroll, with mouse pointer support.


Version published
Weekly downloads
1
decreased by-50%
Maintainers
1
Install size
100 kB
Created
Weekly downloads
 

Readme

Source

virtual-scroll-pointer

This fork supports PointerEvent for mouse or other pointer devices. See Usage & API Section below

A 2kb gzipped low-level library to create custom scrollers with touch and keyboard support. This is heavily inspired by Bartek Drozdz VirtualScroll util. See his article for reference.

Features

  • Can create multiple instances with different elements as targets
  • Let you do the actual scrolling logic: use CSS Transforms, WebGL animation or anything you like
  • Native arrow keys support and shift/space support mimicking default browser behaviour

For high-level libraries based off virtual-scroll, check locomotive-scroll or smooth-scrolling.

Installation

npm i virtual-scroll-pointer -S

Usage & API

Constructor
  • new VirtualScroll(options)
    • el: the target element for mobile touch events. Defaults to window.
    • mouseMultiplier: General multiplier for all mousewheel (including Firefox). Default to 1.
    • touchMultiplier: Mutiply the touch action by this modifier to make scroll faster than finger movement. Defaults to 2.
    • firefoxMultiplier: Firefox on Windows needs a boost, since scrolling is very slow. Defaults to 15.
    • keyStep: How many pixels to move with each key press. Defaults to 120.
    • preventTouch: If true, automatically call e.preventDefault on touchMove. Defaults to false.
    • unpreventTouchClass: Elements with this class won't preventDefault on touchMove. For instance, useful for a scrolling text inside a VirtualScroll-controled element. Defaults to vs-touchmove-allowed.
    • passive: if used, will use passive events declaration for the wheel and touch listeners. Can be true or false. Defaults to undefined.
    • useKeyboard: if true, allows to use arrows to navigate, and space to jump from one screen. Defaults to true
    • useTouch: if true, uses touch events to simulate scrolling. Defaults to true
    • usePointer: if true, uses pointer events to simulate scrolling if is not a touch screen device, e.g. desktop with a mouse, Defaults to true
    • pointerClickDelta: when usePointer is true, the minimum scroll delta pervent a click event being fired after pointerup, Defaults 1 * window.devicePixelRatio,
Methods
  • instance.on(callback, context) Listen to the scroll event using the specified callback and optional context.

  • instance.off(callback, context) Remove the listener.

  • instance.destroy() Remove all events and unbind the DOM listeners.

Events note: Each instance will listen only once to any DOM listener. These listener are enabled/disabled automatically. However, it's a good practice to always call destroy() on your VirtualScroll instance, especially if you are working with a SPA.

Event

When a scroll event happens, all the listeners attached with instance.on(callback, context) will get triggered with the following event:

{
  x, // total distance scrolled on the x axis
    y, // total distance scrolled on the y axis
    deltaX, // distance scrolled since the last event on the x axis
    deltaY, // distance scrolled since the last event on the y axis
    originalEvent; // the native event triggered by the pointer device or keyboard
}

Example

import VirtualScroll from "virtual-scroll";

const scroller = new VirtualScroll();
scroller.on((event) => {
  wrapper.style.transform = `translateY(${event.y}px)`;
});

License

MIT.

Keywords

FAQs

Last updated on 12 Jun 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc