1.0.9 • Published 1 year ago

@emotionagency/emotion-scroll v1.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

A library that animates the native scroll value using Virtual Scroll and custom scrollbar

Instalation

npm i @emotionagency/emotion-scroll

or

yarn add @emotionagency/emotion-scroll

Usage

Basic example

import EmotionScroll from '@emotionagency/emotion-scroll'

const scroll = new EmotionScroll()

Destroy instance

import EmotionScroll from '@emotionagency/emotion-scroll'

const scroll = new EmotionScroll()

scroll.destroy()

Instance options

OptionTypeDefaultDescription
elDOM el#scroll-containerScroll container element.
touchMultipliernumber3.8Mutiply the touch action by this modifier to make scroll faster than finger movement (Virtual Scroll API).
firefoxMultipliernumber40Firefox on Windows needs a boost, since scrolling is very slow.
preventTouchbooleantrueIf true, automatically call e.preventDefault on touchMove.
scrollbarbooleantrueCustom scrollbar.
frictionnumber0.08Factor that affects the speed and smoothness of the scroll animation.
stepSizenumber1A coefficient that affects the distance that will be scrolled at one time. The smaller the coefficient, the shorter the distance.
breakpointnumbernullIf you pass a numeric value here, the smooth scroll will work until this breakpoint.
saveScrollPositionbooleanfalseSaving scroll position after page reload
disabledbooleanfalseDisabling scroll
useKeyboardbooleantrueAbility to scroll the page using the keys (tab, space, arrows)
maxScrollDeltanumber120What is the maximum number of pixels that can be scrolled in one scroll of the mouse wheel

Reset scroll position

(for example, can be called when navigating between pages)

import EmotionScroll from '@emotionagency/emotion-scroll'

const scroll = new EmotionScroll()

scroll.reset()

Scrolling hook

import EmotionScroll from '@emotionagency/emotion-scroll'

const scroll = new EmotionScroll()

scroll.on(({direction, position, progress, velocity}) => {
  console.log({direction, position, progress, velocity})
})

Recomended styles

Scroll Container

.e-fixed {
  overflow: hidden !important;
}

#scroll-container {
  will-change: scroll-position;
  overflow: hidden;
  @media (max-width: $br1) {
    overflow-x: hidden;
    overflow-y: auto;
  }
}

Scrollbar

/* Hide scrollbar for Chrome, Safari and Opera */
#scroll-container::-webkit-scrollbar {
  display: none;
}

/* Hide scrollbar for IE, Edge and Firefox */
#scroll-container {
  -ms-overflow-style: none; /* IE and Edge */
  scrollbar-width: none; /* Firefox */
}

.scrollbar {
  position: fixed;
  right: 0;
  top: 0;
  z-index: 10000000 !important;
  height: 100vh;
  height: 100dvh;
  width: 12px;
  user-select: none;
  overflow: hidden;
  padding: 2px;
  padding-left: 0px;
  @media screen and (min-width: 960px)) {
    &:hover {
      .scrollbar__thumb {
        width: 10px;
        opacity: 0.7;
        border-radius: 10px;
        background-color: #9047ff;
      }
    }
  }
  &.hidden {
    display: none;
  }
}

.scrollbar__thumb {
  width: 6px;
  border-radius: 7px;
  pointer-events: none;
  height: 100px;
  background: #6b6b6b;
  display: block;
  position: relative;
  user-select: none;
  transition: width 0.2s ease, opacity 0.3s ease, border-radius 0.3s ease,
    background-color 0.3s ease;
  right: 0;
  opacity: 0;
  float: right;
  &.scrolling {
    opacity: 0.7;
  }
  &.active {
    width: 10px;
    opacity: 0.7;
    border-radius: 10px;
    background-color: #9047ff;
  }
}
1.0.9

1 year ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago