Coder Social home page Coder Social logo

avisek / scroll-size-observer Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 23 KB

A lightweight JavaScript library that provides a simple and efficient way to observe changes to elements' `scrollWidth` and `scrollHeight` properties. It offers a similar API to `ResizeObserver`.

Home Page: https://avisek.github.io/scroll-size-observer/

License: MIT License

TypeScript 49.72% HTML 36.03% CSS 14.25%
dimensions event library lightweight observer resize scroll size typescript zero-dependencies scrollheight scrollwidth

scroll-size-observer's Introduction

ScrollSizeObserver

ScrollSizeObserver is a lightweight JavaScript library that provides a simple and efficient way to observe changes to elements' scrollWidth and scrollHeight properties. It offers a similar API to ResizeObserver.

Features

  • Easy Integration: Simple to integrate into existing projects with minimal setup.
  • Flexible Configuration: Offers options to observe horizontal and/or vertical scroll sizes based on requirements.
  • Efficient Observations: Utilizes modern browser APIs to efficiently track changes without impacting performance.
  • Cross-Browser Compatibility: Compatible with major modern browsers, ensuring consistent behavior across different environments.
  • TypeScript Support: Provides full support for TypeScript, enabling type-checking and enhanced development experience.
  • Lightweight: Zero-dependency minimal footprint ensures fast loading times and optimal performance.

Demo

Check out the demo page to see a simple demonstration of the ScrollSizeObserver library in action.

Installation

You can install ScrollSizeObserver via npm:

npm install scroll-size-observer

Usage

import { ScrollSizeObserver } from 'scroll-size-observer'

// Just like `ResizeObserver`
const observer = new ScrollSizeObserver((entries, observer) => {
  entries.forEach((entry) => {
    console.log('Target element:', entry.target)
    console.log('New scrollWidth:', entry.scrollWidth)
    console.log('New scrollHeight:', entry.scrollHeight)
    console.log('Previous scrollWidth:', entry.previousScrollWidth)
    console.log('Previous scrollHeight:', entry.previousScrollHeight)
  })
})

// Observe an element
observer.observe(elementToObserve)

// Observe only `scrollHeight`
observer.observe(elementToObserve, { scrollWidth: false })

// Unobserve an element
observer.unobserve(elementToUnobserve)

// Unobserve all observed elements
observer.disconnect()

API

  • ScrollSizeObserver(callback: ScrollSizeObserverCallback)

    Creates a new ScrollSizeObserver instance.

    • callback: A function called whenever an observed scroll size change occurs.
  • observe(target: Element, options?: ScrollSizeObserverOptions): void

    Starts observing the specified Element.

    • target: A reference to the Element to be observed.
    • options: An options object allowing you to set options for the observation.
  • unobserve(target: Element): void

    Ends the observation of a specified Element.

    • target: A reference to the Element to be unobserved.
  • disconnect(): void

    Unobserves all observed Element targets.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Fork the repository, make your changes, and submit a pull request. Thank you for helping improve our project!

Support

For any questions, issues, or feature requests, please open an issue.

scroll-size-observer's People

Contributors

avisek avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.