Skip to content
API 风格:

BackTop 上に戻る ​

スクロールがしきい値を超えると表示され、クリックで先頭に戻ります。スムーズスクロールにはネイティブの scrollTo({ behavior: 'smooth' }) を使用し、prefers-reduced-motion で自動的にダウングレードします。

基本的な使い方 ​

基本的な使い方(下にスクロールしてください)
vue
<script setup lang="ts">
</script>

<template>
  <!-- 基本的な使い方 -->
  <LhBackTop :right="24" :bottom="24" />
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- 基本的な使い方 -->
  <LhBackTop :right="24" :bottom="24" />
</template>

visibility-height で表示のしきい値をカスタマイズし、smooth でスムーズスクロールをオフにし、target で指定のスクロールコンテナを監視します。

しきい値のカスタマイズとスムーズスクロールのオフ
vue
<script setup lang="ts">
</script>

<template>
  <!-- しきい値のカスタマイズとスムーズスクロールのオフ -->
  <LhBackTop :visibility-height="80" :smooth="false" :right="24" :bottom="90" />
</template>
vue
<script>
export default {}
</script>

<template>
  <!-- しきい値のカスタマイズとスムーズスクロールのオフ -->
  <LhBackTop :visibility-height="80" :smooth="false" :right="24" :bottom="90" />
</template>

スクロール停止(scrollend) ​

@scrollend はスクロール停止時に現在のスクロール距離を送出します。ネイティブの scrollend イベントを優先します(Chromium 114+ / Safari 18.2+)。古いブラウザでは自動的に scroll + 150ms のデバウンスにフォールバックします。アンカー連動やデータの遅延読み込みによく使用されます。

scrollend イベント

直近の停止位置:(未スクロール)

vue
<script setup>
import { ref } from 'vue'

const lastStop = ref('(未スクロール)')

function onScrollEnd(scrollTop) {
  lastStop.value = `${scrollTop}px`
}
</script>

<template>
  <LhBackTop :right="24" :bottom="160" @scrollend="onScrollEnd" />
</template>
vue
<script>
export default {
  data() {
    return { lastStop: '(未スクロール)' }
  },
  methods: {
    onScrollEnd(scrollTop) {
      this.lastStop = `${scrollTop}px`
    },
  },
}
</script>

<template>
  <LhBackTop :right="24" :bottom="160" @scrollend="onScrollEnd" />
</template>

API ​

LhBackTop Props ​

プロパティ名説明型デフォルト値
targetスクロールコンテナ(セレクターまたは要素、デフォルトはビューポート)string | HTMLElement—
visibilityHeight何ピクセルスクロールしたら表示するかnumber200
right右側からのオフセット pxnumber40
bottom下部からのオフセット pxnumber40
smoothスムーズスクロールするかどうかbooleantrue
sxsx クイックレイアウトプロパティLhSxProps—

Events ​

イベント名説明コールバック
clickボタンをクリックしたときに発火します(その後、先頭に戻るスクロールを実行します)(event: MouseEvent)
scrollendスクロール停止時に発火します。現在のスクロール距離を伴います(scrollTop: number)

スロット:default(カスタム内容)。

アクセシビリティ ​

  • 本物の <button> です。アイコンのみの形態では必ず名前を付けます(言語パック backtop.label)
  • 表示/非表示の切り替えでフォーカスツリーの競合を起こしません(非表示時は v-if で取り除きます)

型定義 ​

このコンポーネントが外部にエクスポートする TypeScript の型構造を以下に示します(packages/components/backtop/src/types.ts および @lh-ui/share/core/* のソースから自動抽出。各エントリーをクリックすると完全な定義が表示されます。プロパティの説明は上の Props 表を参照してください):

LhBackTopProps
ts
export interface LhBackTopProps {
  target?: string | HTMLElement
  visibilityHeight?: number
  right?: number
  bottom?: number
  smooth?: boolean
  sx?: LhSxProps
}

定数 ​

このコンポーネントで使用される公開定数は以下のとおりです(Props 表の「型 / デフォルト値」列から同名のエントリーをクリックするとここへジャンプします):

LH_BACKTOP_VISIBILITY_HEIGHT_DEFAULT (@lh-ui/share/core/backtop より)
ts
export const LH_BACKTOP_VISIBILITY_HEIGHT_DEFAULT = 200
LH_BACKTOP_SCROLLEND_DELAY (@lh-ui/share/core/backtop より)
ts
export const LH_BACKTOP_SCROLLEND_DELAY = 150

国風の美で、コードの基を築く