Skip to content
On this page

useScrollLock

Category
Export Size
1.23 kB
Last Changed
1 hour ago

Lock scrolling of the element.

Demo

TopLeft
BottomLeft
TopRight
BottomRight
Scroll Me
isLocked false

Usage

html
<script setup lang="ts">
import { useScrollLock } from '@vueuse/core'

const el = ref<HTMLElement | null>(null)
const isLocked = useScrollLock(el)

isLocked.value = true // lock
isLocked.value = false // unlock
</script>

<template>
  <div ref="el"></div>
</template>
<script setup lang="ts">
import { useScrollLock } from '@vueuse/core'

const el = ref<HTMLElement | null>(null)
const isLocked = useScrollLock(el)

isLocked.value = true // lock
isLocked.value = false // unlock
</script>

<template>
  <div ref="el"></div>
</template>

Directive Usage

This function also provides a directive version via the @vueuse/components package. Learn more about the usage.

html
<script setup lang="ts">
import { vScrollLock } from '@vueuse/components'
const data = ref([1, 2, 3, 4, 5, 6])
const isLocked = ref(false)
const toggleLock = useToggle(isLocked)
</script>

<template>
  <div v-scroll-lock="isLocked">
    <div v-for="item in data" :key="item">
      {{ item }}
    </div>
  </div>
  <button @click="toggleLock()">
    Toggle lock state
  </button>
</template>
<script setup lang="ts">
import { vScrollLock } from '@vueuse/components'
const data = ref([1, 2, 3, 4, 5, 6])
const isLocked = ref(false)
const toggleLock = useToggle(isLocked)
</script>

<template>
  <div v-scroll-lock="isLocked">
    <div v-for="item in data" :key="item">
      {{ item }}
    </div>
  </div>
  <button @click="toggleLock()">
    Toggle lock state
  </button>
</template>

Type Declarations

typescript
/**
 * Lock scrolling of the element.
 *
 * @see https://vueuse.org/useScrollLock
 * @param element
 */
export declare function useScrollLock(
  element: MaybeComputedRef<
    HTMLElement | SVGElement | Window | Document | null | undefined
  >,
  initialState?: boolean
): WritableComputedRef<boolean>
/**
 * Lock scrolling of the element.
 *
 * @see https://vueuse.org/useScrollLock
 * @param element
 */
export declare function useScrollLock(
  element: MaybeComputedRef<
    HTMLElement | SVGElement | Window | Document | null | undefined
  >,
  initialState?: boolean
): WritableComputedRef<boolean>

Source

SourceDemoDocs

Contributors

Anthony Fu
webfansplz
Ayaka Rizumu
Dominik Pschenitschni
Robin Scholz
Jelf
wheat

Changelog

v9.13.0 on 2/18/2023
7e590 - fix: detect parent with overflow auto (#2699)
v9.10.0 on 1/3/2023
c9a9a - fix: fix iOS touchmove bug (#2362)
v8.9.1 on 7/8/2022
a9ccc - feat(all): use MaybeComputedRef (#1768)
v8.4.2 on 5/5/2022
f31de - fix: stop listener properly (#1562)
847e1 - fix: lock on element instead of document (#1561)
v8.0.0-beta.1 on 3/5/2022
43566 - feat: directive support (#1360)
v7.7.1 on 3/5/2022
75146 - fix: should work normal with initialState (#1257)

Released under the MIT License.