Giter VIP home page Giter VIP logo

element-in-view's Introduction

element-in-view

NPM version NPM downloads CircleCI donate

Features

  • Small and focus, only 580 bytes and exports a single function.
  • Supporting all modern browsers and IE9+.

Comparison

Comparing to in-viewport and in-view, element-in-view only exports a function for checking if an element is in viewport, handling events and other stuffs are left to user-land. In fact, this library is extracted from in-view, I tried to use that library in vue-mugen-scroll, but I need to use a custom logic to handle events, so many features in in-view become useless, that's why this library exists.

Install

yarn add element-in-view

CDN: UNPKG | JSDelivr

Usage

import inView from 'element-in-view'

window.addEventListener('scroll', () => {
  inView(element)
  //=> true or false
})

API

Note that the API doc is partially extracted from in-view.

inView(element, [options])

element

A DOM Element.

options

options.offset

Type: Number object
Default: 0

By default, element-in-view considers something in viewport if it breaks any edge of the viewport. This can be used to set an offset from that edge. For example, an offset of 100 will consider elements in viewport if they break any edge of the viewport by at least 100 pixels. offset can be a positive or negative integer.

Offset can also be set per-direction by passing an object.

{
  top: 100,
  right: 75,
  bottom: 50,
  left: 25
}
options.threshold

Type: Number
Default: 0

Set the ratio of an element's height and width that needs to be visible for it to be considered in viewport. This defaults to 0, meaning any amount. A threshold of 0.5 or 1 will require that half or all, respectively, of an element's height and width need to be visible. threshold must be a number between 0 and 1.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

element-in-view © egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).

egoistian.com · GitHub @egoist · Twitter @_egoistlily

element-in-view's People

Contributors

egoist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

element-in-view's Issues

`0` is also falsy.

How to Reproduce:

set offset to

{ top: 0, right: 0, bottom: -1000, left: 0 }

What Happens

Always false will be returned because

return (
intersection.t >= (offset.top || offset + elementThreshold.y) &&
intersection.r >= (offset.right || offset + elementThreshold.x) &&
intersection.b >= (offset.bottom || offset + elementThreshold.y) &&
intersection.l >= (offset.left || offset + elementThreshold.x)

offset.top is 0 and it's falsy, so offset + elementThreshold.y will be used which is '[object Object]0'

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.