All Projects → tuateam → Tua Body Scroll Lock

tuateam / Tua Body Scroll Lock

Licence: mit
🔐 Body scroll locking that just works with everything

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Tua Body Scroll Lock

Body Scroll Lock
Body scroll locking that just works with everything 😏
Stars: ✭ 3,357 (+1322.46%)
Mutual labels:  mobile, modal, chrome, safari
Lazy
Kule Lazy4 / CSS Framework
Stars: ✭ 147 (-37.71%)
Mutual labels:  mobile, chrome, firefox, safari
tua-body-scroll-lock
🔐 Body scroll locking that just works with everything
Stars: ✭ 304 (+28.81%)
Mutual labels:  firefox, modal, safari
Octotree
Browser extension that enhances GitHub code review and exploration. You can download Octotree for your browser from our website.
Stars: ✭ 21,726 (+9105.93%)
Mutual labels:  chrome, firefox, safari
Supercookie
💭 Inspiration
Stars: ✭ 3,630 (+1438.14%)
Mutual labels:  chrome, firefox, safari
Extension Create
Create modern cross-browser extensions with no build configuration.
Stars: ✭ 167 (-29.24%)
Mutual labels:  chrome, firefox, safari
Ocaramba
C# Framework to automate tests using Selenium WebDriver
Stars: ✭ 234 (-0.85%)
Mutual labels:  chrome, firefox, safari
Link Preview Js
Parse and/or extract web links meta information: title, description, images, videos, etc. [via OpenGraph], runs on mobiles and node.
Stars: ✭ 240 (+1.69%)
Mutual labels:  chrome, firefox, safari
Etaoin
Pure Clojure Webdriver protocol implementation
Stars: ✭ 599 (+153.81%)
Mutual labels:  chrome, firefox, safari
Ublock
uBlock: a fast, lightweight, and lean blocker for Chrome, Firefox, and Safari.
Stars: ✭ 8,075 (+3321.61%)
Mutual labels:  chrome, firefox, safari
Automator
Various Automator and AppleScript workflow and scripts for simplifying life
Stars: ✭ 68 (-71.19%)
Mutual labels:  chrome, firefox, safari
Browser
The browser extension vault (Chrome, Firefox, Opera, Edge, Safari, & more).
Stars: ✭ 3,305 (+1300.42%)
Mutual labels:  chrome, firefox, safari
Arduino Create Agent
The Arduino Create Agent
Stars: ✭ 298 (+26.27%)
Mutual labels:  chrome, firefox, safari
Browsertime
Your browser, your page, your scripts!
Stars: ✭ 474 (+100.85%)
Mutual labels:  chrome, firefox, safari
Freedom
The Freedom to Open URLs in Third-Party Browsers on iOS with Custom UIActivity Subclasses.
Stars: ✭ 85 (-63.98%)
Mutual labels:  chrome, firefox, safari
Known Css Properties
List of standard and browser specific CSS properties.
Stars: ✭ 89 (-62.29%)
Mutual labels:  chrome, firefox, safari
Azure Mask
A browser extension (Chrome, Firefox) that toggles concealment of sensitive information found in the Azure Portal web page such as Subscription Id's
Stars: ✭ 189 (-19.92%)
Mutual labels:  chrome, firefox
Interceptor
A browser extension to mock AJAX requests at the browser level
Stars: ✭ 182 (-22.88%)
Mutual labels:  chrome, firefox
Rester
A REST client for almost any web service (Firefox and Chrome Extension)
Stars: ✭ 192 (-18.64%)
Mutual labels:  chrome, firefox
Gopassbridge
A web extension for firefox and chrome to insert login credentials from gopass
Stars: ✭ 182 (-22.88%)
Mutual labels:  chrome, firefox

tua-body-scroll-lock

inspired by body-scroll-lock

dependencies Downloads per month Version Next Version License

English | 简体中文

Introduction

tua-body-scroll-lock enables body scroll locking for everything.

Why not body-scroll-lock(BSL)?

  • Doesn't work on Android webview
  • Doesn't work on PC with mouse wheel
  • Doesn't work on iOS, if you touch somewhere instead of targetElement
  • Must pass targetElement, even if it's not necessary

😱Can't believe it? Please try this demo with BSL yourself.

Install

Node Package Manager(recommended)

$ npm i -S tua-body-scroll-lock
# OR
$ yarn add tua-body-scroll-lock

CDN

example code
<!-- unpkg -->
<script src="https://unpkg.com/tua-body-scroll-lock"></script>

<!-- jsdelivr -->
<script src="https://cdn.jsdelivr.net/npm/tua-body-scroll-lock"></script>
example code
<!-- unpkg -->
<script src="https://unpkg.com/tua-body-scroll-lock/dist/tua-bsl.umd.min.js"></script>

<!-- jsdelivr -->
<script src="https://cdn.jsdelivr.net/npm/tua-body-scroll-lock/dist/tua-bsl.umd.min.js"></script>
example code
<!-- unpkg -->
<script type="module">
    import { lock, unlock } from 'https://unpkg.com/tua-body-scroll-lock/dist/tua-bsl.esm.browser.js'

    lock()
    unlock()
</script>

<!-- jsdelivr -->
<script type="module">
    import { lock, unlock } from 'https://cdn.jsdelivr.net/npm/tua-body-scroll-lock/dist/tua-bsl.esm.browser.js'

    lock()
    unlock()
</script>
example code
<!-- unpkg -->
<script type="module">
    import { lock, unlock } from 'https://unpkg.com/tua-body-scroll-lock/dist/tua-bsl.esm.browser.min.js'

    lock()
    unlock()
</script>

<!-- jsdelivr -->
<script type="module">
    import { lock, unlock } from 'https://cdn.jsdelivr.net/npm/tua-body-scroll-lock/dist/tua-bsl.esm.browser.min.js'

    lock()
    unlock()
</script>

Usage

Normal

import { lock, unlock } from 'tua-body-scroll-lock'

lock()
unlock()

TargetElement needs scrolling(iOS only)

In some scenarios, when scrolling is prohibited, some elements still need to scroll, at this point, pass the targetElement.

import { lock, unlock } from 'tua-body-scroll-lock'
const elementOne = document.querySelector('#elementOne')
const elementTwo = document.querySelector('#elementTwo')

// one targetElement
const targetElement = elementOne
// multiple targetElements
const targetElements = [elementOne, elementTwo]

lock(targetElement)
lock(targetElements)
unlock(targetElement)
unlock(targetElements)

The targetElement is not required on the PC and Android.

clearBodyLocks

In the SPA, if you called lock, but forgot to call unlock before jumping to other pages, that is too bad. Because the operation of the page is not restored, such as forbid touchmove, clearBodyLocks is used to clear all side effects. Sure, you can also call unlock, but if you have called lock multiple times, you must call unlock multiple times, which is very unfriendly.

demo.vue

<template>
  // some element
</template>
<script>
import { lock, unlock, clearBodyLocks } from 'tua-body-scroll-lock';

export default {
  name: 'demo',
  data () {
    return {}
  },
  methods: {
    showDialog () {
      // Disable body scroll
      lock()
    },
    hideDialog () {
      // Enable body scroll
      unlock()
    }
  },
  beforeDestroy () {
    // If forgot to call unlock before jumping to other pages, `clearBodyLocks` can clean all side effect.
    clearBodyLocks()
  }
}
</script>

Demo

bodyScrollLock

platform link
gh-pages https://tuateam.github.io/tua-body-scroll-lock
jsbin https://jsbin.com/cafiful/edit?output
codepen https://codepen.io/buptsteve/pen/PvNQjP
jsfiddle https://jsfiddle.net/buptsteve/6u8g3Lf5/
codesandbox https://codesandbox.io/s/o73z4jy5q9

Contributors

Thanks goes to these wonderful people (emoji key):


evinma

💻 📖 🚇 🌍

StEve Young

💻 📖 🚇 🌍

li2go

💻 🐛

songyan,Wang

💻 🐛

Даниил Пронин

🐛

阿卡琳

🐛

falstack

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].