コンテンツにスキップ

useMouse

カテゴリ
エクスポートサイズ
825 B
最終変更日
先週

リアクティブなマウス位置

デモ

基本的な使い方

x: 0
y: 0
sourceType: null

抽出機能の使い方

x: 0
y: 0
sourceType: null

基本的な使い方

ts
import { 
useMouse
} from '@vueuse/core'
const {
x
,
y
,
sourceType
} =
useMouse
()

タッチはデフォルトで有効になっています。マウスの変更のみを検出するには、touchfalse に設定します。 dragover イベントは、ドラッグ中のマウス位置を追跡するために使用されます。

ts
const { 
x
,
y
} =
useMouse
({
touch
: false })

カスタム抽出機能

イベントから位置を取得するためのカスタム抽出関数を指定することもできます。

ts
import type { 
UseMouseEventExtractor
} from '@vueuse/core'
import {
useMouse
,
useParentElement
} from '@vueuse/core'
const
parentEl
=
useParentElement
()
const
extractor
:
UseMouseEventExtractor
=
event
=> (
event
instanceof
Touch
? null : [
event
.
offsetX
,
event
.
offsetY
]
) const {
x
,
y
,
sourceType
} =
useMouse
({
target
:
parentEl
,
type
:
extractor
})
js
import { useMouse, useParentElement } from '@vueuse/core'
const parentEl = useParentElement()
const extractor = (event) =>
  event instanceof Touch ? null : [event.offsetX, event.offsetY]
const { x, y, sourceType } = useMouse({ target: parentEl, type: extractor })

コンポーネントの使い方

この関数は、@vueuse/components パッケージを介してレンダーレスコンポーネントバージョンも提供します。 使用方法の詳細はこちら

vue
<template>
  <UseMouse v-slot="{ x, y }">
    x: {{ x }}
    y: {{ y }}
  </UseMouse>
</template>

型宣言

型宣言を表示
typescript
export type UseMouseCoordType = "page" | "client" | "screen" | "movement"
export type UseMouseSourceType = "mouse" | "touch" | null
export type UseMouseEventExtractor = (
  event: MouseEvent | Touch,
) => [x: number, y: number] | null | undefined
export interface UseMouseOptions
  extends ConfigurableWindow,
    ConfigurableEventFilter {
  /**
   * Mouse position based by page, client, screen, or relative to previous position
   *
   * @default 'page'
   */
  type?: UseMouseCoordType | UseMouseEventExtractor
  /**
   * Listen events on `target` element
   *
   * @default 'Window'
   */
  target?: MaybeRefOrGetter<Window | EventTarget | null | undefined>
  /**
   * Listen to `touchmove` events
   *
   * @default true
   */
  touch?: boolean
  /**
   * Listen to `scroll` events on window, only effective on type `page`
   *
   * @default true
   */
  scroll?: boolean
  /**
   * Reset to initial value when `touchend` event fired
   *
   * @default false
   */
  resetOnTouchEnds?: boolean
  /**
   * Initial values
   */
  initialValue?: Position
}
/**
 * Reactive mouse position.
 *
 * @see https://vueuse.dokyumento.jp/useMouse
 * @param options
 */
export declare function useMouse(options?: UseMouseOptions): {
  x: Ref<number, number>
  y: Ref<number, number>
  sourceType: Ref<UseMouseSourceType, UseMouseSourceType>
}
export type UseMouseReturn = ReturnType<typeof useMouse>

ソース

ソースデモドキュメント

貢献者

- Anthony Fu
- 青椒肉丝
- Jelf
- Anthony Fu
- Eduardo Luiz Schilling
- karukenert
- Cats Juice
- 丶远方
- RAX7
- François Lévesque
- vaakian X
- Sergey Danilchenko
- lzdFeiFei
- Scott Bedard
- Marshall Thompson
- Shinigami
- wheat
- Alex Kozack
- Antério Vieira

変更履歴

v12.0.0-beta.1 2024/11/21
0a9ed - feat!: Vue 2 のサポートを削除、バンドルを最適化、クリーンアップ (#4349)
v11.3.0 2024/11/21
cceeb - 修正:スペルミスを修正 (#4348)
e8d11 - 修正:以前のスクロール値を記録する (#4244)
v10.4.0 2023年8月25日
c2f64 - 修正:typepage の場合、ページスクロール時に位置が変更されないようにする。 #2922 をクローズ (#3244)
v10.1.0 2023年4月22日
4bb5b - 機能:カスタムイベント抽出器のサポート (#2991)
v10.0.0-beta.4 2023年4月13日
39d18 - 機能:type: screen のサポート (#2467)
v9.11.0 2023年1月17日
d5321 - 修正(コンポーネント): defineComponent を pure としてマークする (#2623)
v9.10.0 2023年1月3日
0c39d - 機能:移動検知のサポート (#2589)

MITライセンスの下でリリースされています。