国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
mousedown イベントを追加する必要があります。使用後はリスニング イベントを忘れずにクリアしてください。ペアで表示する習(xí)慣を身に付ける必要があります。
實(shí)現(xiàn)拖拽的核心
補(bǔ)充其它部分代碼和演示
總結(jié)
ホームページ ウェブフロントエンド Vue.js Vue3 を使用してエレガントな要素のドラッグ機(jī)能を?qū)g裝する方法を段階的に説明します。

Vue3 を使用してエレガントな要素のドラッグ機(jī)能を?qū)g裝する方法を段階的に説明します。

Mar 30, 2023 pm 08:57 PM
フロントエンド vue.js

要素のドラッグ機(jī)能を?qū)g裝するにはどうすればよいですか?次の記事では、Vue3 を使用してエレガントな要素のドラッグ機(jī)能を?qū)g裝する方法を段階的に説明し、例を通じて関連する知識(shí)ポイントを?qū)W習(xí)します。

Vue3 を使用してエレガントな要素のドラッグ機(jī)能を?qū)g裝する方法を段階的に説明します。

#便利なツールをいくつかお?jiǎng)幛幛筏蓼?strong>

    ##var-conv
  • VSCode IDE に適したクイック変換ツールコード変數(shù)名用
  • generator-vite-plugin
  • Vite プラグイン テンプレート プロジェクトを迅速に生成
  • generator-babel-plugin
  • Babel プラグインを迅速に生成-in template project
要點(diǎn)を理解する

要素のドラッグは典型的なフロントエンドの學(xué)習(xí)ケースであり、JavaScript イベントについてのある程度の理解が必要です。最近の仕事でもこの內(nèi)容を再度取り上げ、Vue3 などの宣言型プログラミング スタイルのフレームワークで要素を 1 回ドラッグすることでわかりやすく説明しました。 [関連する推奨事項(xiàng):

vuejs ビデオ チュートリアル

Web フロントエンド開(kāi)発 ]PS: Vue3 テンプレートのグローバル スタイルの中心屬性は実験的な干渉を引き起こす可能性があります。料金を払ってください。注意! ! !

要素の位置と移動(dòng)

要素のドラッグを?qū)g裝するときは、

mouse

イベントと mouse のコールバックを使用します。 event 現(xiàn)在のイベントが発生したときの要素の位置を関數(shù)で取得することができ、対応する屬性は MouseEventclientXclientY です。これら 2 つは後で読みます。要素の位置をリアルタイムで更新するプロパティ。 transform

translate

を使用して、topleft## を変更するのではなく、最初に 要素を移動(dòng)することをお?jiǎng)幛幛筏蓼埂?# 屬性によって要素のレイアウトが変更されることはなく、リフローや再描畫(huà)によるパフォーマンスへの影響が回避されます。 PS: MDN

に翻訳の使用と體験に関する記事があり、それを感じることができます。

3 セットの座標(biāo)を定義します。

要素の初期位置 (originalPosition

) とポインターを記録するために使用される座標(biāo)セットを定義します。要素が押されたとき 要素上の座標(biāo) (

mousedownOffset) と、要素の移動(dòng)に応じてリアルタイムで更新される一連の座標(biāo) (elementPosition)。 要素の初期位置の座標(biāo)を記録します。原點(diǎn)はページの左上隅にあります。初期化とドラッグ後にドラッグされた要素の位置を復(fù)元するために使用されます。固定値は、変更しない:

const originalPosition = reactive({
  x: 10,
  y: 10,
})

要素が押されたときの要素上のポインタの座標(biāo)。原點(diǎn)はドラッグされた要素の左上隅にあります。押されたときのポインタの座標(biāo)によって取得されます -要素の初期オフセット位置:

const mousedownOffset = reactive({
  x: 0,
  y: 0,
})

要素はリアルタイムで移動(dòng)します。更新された座標(biāo)、原點(diǎn)はページの左上隅にあり、初期値は

と同じである必要があります。

mousemove

イベントが発生すると、ポインターのリアルタイム座標(biāo) - mousedownOffset が取得されます: <pre class='brush:php;toolbar:false;'>const elementPosition = reactive({ x: 0, y: 0, })</pre>#PS: 原點(diǎn)がページの左上隅の場(chǎng)合、図の點(diǎn) 1 は

originalPosition

または elementPosition

を表し、點(diǎn) 2 はポインタが押されたときの座標(biāo)を表します原點(diǎn)が點(diǎn) 1 の場(chǎng)合、図の點(diǎn) 2 は

mousedownOffset;マウスダウン イベントの登録

要素のドラッグを?qū)g裝する場(chǎng)合、ドラッグされた要素に

mousedown イベントを追加する必要があります。使用後はリスニング イベントを忘れずにクリアしてください。ペアで表示する習(xí)慣を身に付ける必要があります。

ドラッグされた要素に

mousemovemouseup

を追加すると、制御不能な現(xiàn)象が発生していることがわかります。

ページがロードされたら、まずドラッグされた要素のデフォルトの位置をリセットし、mousedown イベントを追加します。コンポーネントがアンロードされたら、mousedown

イベントを削除します。 :

const restore = () => {
  elementPosition.x = originalPosition.x;
  elementPosition.y = originalPosition.y;
}

onMounted(() => {
  restore();
  floatButton.value.addEventListener(&#39;mousedown&#39;, onMousedown, true);
})

onUnmounted(() => {
  floatButton.value.removeEventListener(&#39;mousedown&#39;, onMousedown, true);
})

實(shí)現(xiàn)拖拽的核心

選擇 Vuejs 的原因就是因?yàn)槠涫?MVVM 型框架,我們關(guān)注點(diǎn)在聲明上,內(nèi)部的運(yùn)轉(zhuǎn)機(jī)制有框架負(fù)責(zé),所以在下面的事件處理上就只需要在對(duì)應(yīng)的事件中去更新一開(kāi)始聲明的三組坐標(biāo)就可以了。

onMousedown 時(shí),通過(guò)指針?biāo)诘淖鴺?biāo) - 被拖拽元素初始位置的坐標(biāo)得到指針此時(shí)在被拖拽元素上的坐標(biāo),onMousedown 時(shí)要為 document 添加 mousemovemouseup 事件:

const onMousedown = (event: MouseEvent) => {
  event.stopPropagation();
  
  mousedownOffset.x = event.clientX - originalPosition.x;
  mousedownOffset.y = event.clientY - originalPosition.y;
  
  document.addEventListener(&#39;mousemove&#39;, onMousemove, true);
  document.addEventListener(&#39;mouseup&#39;, onMouseup, true);
}

onMousemove時(shí),通過(guò)指針?biāo)诘淖鴺?biāo) - 指針在被拖拽元素上的位置得到被拖拽元素左上角距離頁(yè)面左上角的距離,并更新到 elementPosition

const onMousemove = (event: MouseEvent) => {
  event.stopPropagation();
  
  elementPosition.x = event.clientX - mousedownOffset.x;
  elementPosition.y = event.clientY - mousedownOffset.y;
}

onMouseup時(shí),主要做的就是為 document 移除在 onMousemove 時(shí)注冊(cè)的兩個(gè)事件,要注意的是移除的事件要是同一個(gè)事件,也就是引用一致的事件,推薦將對(duì)應(yīng)的處理事件賦值給一個(gè)變量使用,最后可以在拖拽結(jié)束后還原被拖拽元素的位置:

const onMouseup = (event: MouseEvent) => {
  event.stopPropagation();
  document.removeEventListener(&#39;mousemove&#39;, onMousemove, true);
  document.removeEventListener(&#39;mouseup&#39;, onMouseup, true);
  restore();
}

補(bǔ)充其它部分代碼和演示

<div 
 ref="floatButton"
 class="float-button"
 :style="{
    &#39;transition-duration&#39;: &#39;0.1s&#39;,
    transform: `translate(${elementPosition.x}px, ${elementPosition.y}px)`
  }">
</div>
.float-button {
  position: absolute;
  width: 42px;
  height: 42px;
  background: red;
  border-radius: 5px;
  user-select: none;
  background-image: url(../assets/taobao.svg);
  background-size: cover;
}

總結(jié)

使用 mousemove、translate 在 Vue3 中實(shí)現(xiàn)可以隨意拖拽的 Icon 的案例就完成了,在本次案例中需要認(rèn)真思考對(duì)應(yīng)的幾個(gè)坐標(biāo)和移動(dòng)時(shí)坐標(biāo)如何更新,事件的使用要成對(duì)出現(xiàn),如何在這個(gè)拖拽的 Icon 上增加點(diǎn)擊事件時(shí)還需要多做一些處理,有答案的朋友可以留下你的想法~

(學(xué)習(xí)視頻分享:vuejs入門(mén)教程、編程基礎(chǔ)視頻

以上がVue3 を使用してエレガントな要素のドラッグ機(jī)能を?qū)g裝する方法を段階的に説明します。の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP と Vue: フロントエンド開(kāi)発ツールの完璧な組み合わせ PHP と Vue: フロントエンド開(kāi)発ツールの完璧な組み合わせ Mar 16, 2024 pm 12:09 PM

PHP と Vue: フロントエンド開(kāi)発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時(shí)代において、フロントエンド開(kāi)発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開(kāi)発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開(kāi)発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見(jiàn)なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細(xì)なコード例について説明します。

Go 言語(yǔ)のフロントエンド テクノロジーの探求: フロントエンド開(kāi)発の新しいビジョン Go 言語(yǔ)のフロントエンド テクノロジーの探求: フロントエンド開(kāi)発の新しいビジョン Mar 28, 2024 pm 01:06 PM

Go 言語(yǔ)は、高速で効率的なプログラミング言語(yǔ)として、バックエンド開(kāi)発の分野で広く普及しています。ただし、Go 言語(yǔ)をフロントエンド開(kāi)発と結(jié)びつける人はほとんどいません。実際、フロントエンド開(kāi)発に Go 言語(yǔ)を使用すると、効率が向上するだけでなく、開(kāi)発者に新たな視野をもたらすことができます。この記事では、フロントエンド開(kāi)発に Go 言語(yǔ)を使用する可能性を探り、読者がこの分野をよりよく理解できるように具體的なコード例を示します。従來(lái)のフロントエンド開(kāi)発では、ユーザー インターフェイスの構(gòu)築に JavaScript、HTML、CSS がよく使用されます。

Vue.js vs. React:プロジェクト固有の考慮事項(xiàng) Vue.js vs. React:プロジェクト固有の考慮事項(xiàng) Apr 09, 2025 am 12:01 AM

VUE.JSは、中小規(guī)模のプロジェクトや迅速な反復(fù)に適していますが、Reactは大規(guī)模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な狀況やプロジェクトスケールが小さい狀況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機(jī)能的ニーズを持つプロジェクトに適しています。

フロントエンドの面接官からよく聞かれる質(zhì)問(wèn) フロントエンドの面接官からよく聞かれる質(zhì)問(wèn) Mar 19, 2024 pm 02:24 PM

フロントエンド開(kāi)発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構(gòu)造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質(zhì)問(wèn)は、候補(bǔ)者の技術(shù)スキル、プロジェクトの経験、業(yè)界のトレンドの理解を評(píng)価するように設(shè)計(jì)されています。したがって、候補(bǔ)者はこれらの分野で自分の能力と専門(mén)知識(shí)を証明するために十分な準(zhǔn)備をしておく必要があります。

Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たすかを探る Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たすかを探る Mar 19, 2024 pm 06:15 PM

Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たしているかを調(diào)べるには、具體的なコード例が必要です。インターネットとモバイル アプリケーションの急速な発展に伴い、フロントエンド テクノロジーの重要性がますます高まっています。この分野では、強(qiáng)力なバックエンド プログラミング言語(yǔ)としての Golang も重要な役割を果たします。この記事では、Golang がどのようにフロントエンド テクノロジーと組み合わされるかを検討し、具體的なコード例を通じてフロントエンド分野での可能性を?qū)g証します。フロントエンド分野における Golang の役割は、効率的で簡(jiǎn)潔かつ學(xué)びやすいものとしてです。

Vue.jsは學(xué)ぶのが難しいですか? Vue.jsは學(xué)ぶのが難しいですか? Apr 04, 2025 am 12:02 AM

Vue.jsは、特にJavaScriptファンデーションを持つ開(kāi)発者にとって、學(xué)ぶのは難しくありません。 1)その進(jìn)歩的な設(shè)計(jì)とレスポンシブシステムは、開(kāi)発プロセスを簡(jiǎn)素化します。 2)コンポーネントベースの開(kāi)発により、コード管理がより効率的になります。 3)使用例は、基本的および高度な使用法を示しています。 4)一般的なエラーは、vuedevtoolsを介してデバッグできます。 5)V-IF/V-Showや重要な屬性を使用するなど、パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率を向上させることができます。

VUEはフロントエンドまたはバックエンドに使用されていますか? VUEはフロントエンドまたはバックエンドに使用されていますか? Apr 03, 2025 am 12:07 AM

Vue.jsは、主にフロントエンド開(kāi)発に使用されます。 1)ユーザーインターフェイスとシングルページアプリケーションの構(gòu)築に焦點(diǎn)を當(dāng)てた軽量で柔軟なJavaScriptフレームワークです。 2)Vue.jsのコアはその応答性データシステムであり、データが変更されるとビューは自動(dòng)的に更新されます。 3)コンポーネントの開(kāi)発をサポートし、UIを獨(dú)立した再利用可能なコンポーネントに分割できます。

Reactの主要な機(jī)能を理解する:フロントエンドの視點(diǎn) Reactの主要な機(jī)能を理解する:フロントエンドの視點(diǎn) Apr 18, 2025 am 12:15 AM

Reactの主な機(jī)能には、コンポーネント思考、國(guó)家管理、仮想DOMが含まれます。 1)コンポーネント化のアイデアにより、UIを再利用可能な部分に分割して、コードの読みやすさと保守性を向上させることができます。 2)狀態(tài)管理は、狀態(tài)および小道具を通じて動(dòng)的データを管理し、変更を変更しますUIの更新をトリガーします。 3)仮想DOM最適化パフォーマンス、メモリ內(nèi)のDOMレプリカの最小操作の計(jì)算を通じてUIを更新します。

See all articles