Skip to content
On this page

useLockScroll

Add no-scroll class to a element or selector.

Parameters

typescript
import { useLockScroll } from '@elonehoo/pistachio'

const options = {
    lockedClass: String,
    auto: Boolean,
    onChange(el: Element, lock: Boolean)
}

const selector = '.selector'
const lockClass = 'lock-class'
const element = ref<HTMLElement>()
const elements = [element]

useLockScroll(selector, options?)
useLockScroll(selector, lockClass?)

useLockScroll(element)
useLockScroll(element, options?)
useLockScroll(element, lockClass?)

useLockScroll(elements)
useLockScroll(elements, options?)
useLockScroll(elements, lockClass?)
import { useLockScroll } from '@elonehoo/pistachio'

const options = {
    lockedClass: String,
    auto: Boolean,
    onChange(el: Element, lock: Boolean)
}

const selector = '.selector'
const lockClass = 'lock-class'
const element = ref<HTMLElement>()
const elements = [element]

useLockScroll(selector, options?)
useLockScroll(selector, lockClass?)

useLockScroll(element)
useLockScroll(element, options?)
useLockScroll(element, lockClass?)

useLockScroll(elements)
useLockScroll(elements, options?)
useLockScroll(elements, lockClass?)
ParametersTypeRequiredDefaultDescription
selectorstringtruestring selector
elementRef<Element> | Elementtruetemplate element
elementsRef<Elements[]> | Elements[]truelist of elements
optionsOptionsfalseOptions for useLockScroll
lockClassstringfalseno-scrollcustom lockClass

State

The useLockScroll function exposes the following reactive state:

typescript
import { useLockScroll } from '@elonehoo/pistachio'

const { locked } = useLockScroll()
import { useLockScroll } from '@elonehoo/pistachio'

const { locked } = useLockScroll()
StateTypeDescription
lockedRef<boolean>Is currently locked

Example

Toggle locked to enable or disable scroll

1

2

3

4

5

6

7

8

9

10

Locked
vue
<script setup lang="ts">
import { ref } from 'vue'
import { useLockScroll } from '@elonehoo/pistachio'

const elref = ref<any>(null)

const { locked, remove } = useLockScroll(elref)
</script>

<template>
  <div>
    Toggle
    <b>locked</b> to enable or disable
    <b>scroll</b>
    <div ref="elref" class="scroll-component">
      <p v-for="x in 10" :key="x">
        {{ x }}
      </p>
    </div>

    <button @click="remove">
      remove
    </button>
    <span>
      <input v-model="locked" type="checkbox">
      Locked
    </span>
  </div>
</template>

<style scoped>
.scroll-component {
  overflow: scroll;
  height: 70px;
  background: gray;
}

.no-scroll {
  overflow: hidden !important;
}
</style>
<script setup lang="ts">
import { ref } from 'vue'
import { useLockScroll } from '@elonehoo/pistachio'

const elref = ref<any>(null)

const { locked, remove } = useLockScroll(elref)
</script>

<template>
  <div>
    Toggle
    <b>locked</b> to enable or disable
    <b>scroll</b>
    <div ref="elref" class="scroll-component">
      <p v-for="x in 10" :key="x">
        {{ x }}
      </p>
    </div>

    <button @click="remove">
      remove
    </button>
    <span>
      <input v-model="locked" type="checkbox">
      Locked
    </span>
  </div>
</template>

<style scoped>
.scroll-component {
  overflow: scroll;
  height: 70px;
  background: gray;
}

.no-scroll {
  overflow: hidden !important;
}
</style>

Released under the MIT License.