Giter VIP home page Giter VIP logo

scrollin's Introduction

Scrollin

Do something great when an element enters the viewport. Build Status
scrollin

Install

npm i scrollin
bower i scrollin

Use

Scrollin.track(document.querySelector('#hi'), () => alert('hi!'))

Options

You can specify optional offset params to control when an elements is considered in the "viewport".

Scrollin.track(document.querySelector('#hi'), () => alert('hi!'), {
  top: 10,
  right: -10,
  bottom: 10,
  left: 10
})

API

  • Scrollin.track(document.querySelector('#hi'), () => alert('hi!'))
  • Scrollin.track(document.querySelectorAll('.hi'), () => alert('hi!'))
  • Scrollin.untrackAll()
  • Scrollin.untrack(document.querySelector('#hi'))
  • Scrollin.checkForVisibleElements()
  • Scrollin.getTracking()

Dev

  • npm i
  • npm run dev

Building

  • npm run compile

Polyfill Caveats

  • You may need to polyfill window.requestAnimationFrame
  • You may need to polyfill Array.prototype.splice
  • You may need to polyfill Array.prototype.some

📜

scrollin's People

Contributors

samccone avatar tomca32 avatar davesnx avatar fcanas avatar sethkrasnianski avatar lockys avatar

Stargazers

Vishesh Choudhary avatar  avatar p-eh avatar Ezra Miller avatar Bernardo Baquero Stand avatar Ricardo Joson avatar Chee Aun avatar Jon-Kyle avatar sonn-gamm avatar Seth Thompson avatar Jesse Hoyos avatar Wellington Soares avatar Alessandro Pezzè avatar Paul Smith avatar Marcin Jędrusik avatar Ernst Salzmann avatar Jake Jarrett avatar Jesse Erbach avatar  avatar Ryo Murayama avatar Farzad Qasim avatar Sundar Joshi avatar Chris Hart avatar Ove avatar James Yang avatar Moe Amaya avatar Athan avatar Ricky Reusser avatar  avatar Kevin Kwok avatar Lane Goldberg avatar Bernardo Hernández avatar Almeric Boerman avatar Tyll Weiß avatar  avatar Zlati Pehlivanov avatar Brett Lamy avatar Kyrre Wahl Kongsgård avatar Thomas Klemm avatar Zachary Chenny avatar Chris Kjær avatar Rick Wong avatar Lennard van Gunst avatar Oscar Cortez avatar Dan Minshew avatar Simon Brix avatar NoScripter avatar Paul Falgout avatar Jeff Lupinski avatar Harry Newsome avatar  avatar  avatar edast avatar Martin Saulis avatar Nicholas avatar compwron avatar Florian Kissling avatar Sunny Singh avatar Michiel Westerbeek avatar Faheem Patel avatar Rakesh Reddy avatar Cory Simmons avatar Thomas Strobl avatar Brandon Pierce avatar Eduardo San Martin Morote avatar Darren Jaworski avatar Eslam λ Hefnawy avatar Josh McMillan avatar Fabio Dias Rollo avatar Debjeet Biswas avatar Dan Mindru avatar Ziyu avatar Tristan NGUYEN avatar Paul Redmond avatar  avatar Linus Unnebäck avatar Neil Gardose avatar Stephen Sorensen avatar Clint Ayres avatar Stevenson Michel avatar Fernando Jorge Mota avatar Guilherme Oderdenge avatar Stéphane Bachelier avatar Maxence avatar Andrei Zharov avatar Ian Stewart avatar Jake Buob avatar Qin Zeng avatar Adi Dahiya avatar Brian Egan avatar Sam Enoka avatar Sebastian Schubotz avatar David Chan avatar Jason Smith avatar Akos Zsolt Hochrein avatar Owais Lone avatar Duncan Bay avatar James Doyle avatar Nick Presta avatar Changbai Li avatar

Watchers

Ziyu avatar  avatar James Cloos avatar  avatar (◕ᴥ◕) avatar  avatar  avatar

scrollin's Issues

Support non-window scrolling

Sometimes you need a fake scroll container instead of window, for things like basement menus or certain page transitions. This requires tracking an element's scroll events, rather than window.

Thankfully, the project I'm working on has down away with its scrolljacked container. But I thought I'd raise this for down the road.

Normally, I'd use my own morlock.js for this, but I'm tired of maintaining it so I put this TODO on your plate instead :)

The important parts are: https://github.com/tdreyno/morlock.js/blob/master/streams/scroll-stream.js#L15
And: https://github.com/tdreyno/morlock.js/blob/master/core/dom.js#L42-L52

Thanks for this simple project 🍻

A realer test suite :scroll:

Going to unit test this tool vs an boring integration suite.. To make this possible the following methods need to be stubbed and the following internal APIs need to be exposed

To Stub

Window

Methods

  • requestAnimationFrame
  • addEventListener

Props

  • innerWidth
  • innerHeight
Elements

Methods

  • getBoundingClientRect
    {right: xx, left: xx, top: xx}

To Expose

tracking

Offset option

Create an option to simply pass an offset in order to have it fire later into the viewport.

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.