Vue dalam amalan: seret dan lepas pembangunan komponen
Vue Practical Combat: Drag and Drop Component Development
Memandangkan aplikasi Web secara beransur-ansur digunakan secara meluas, keperluan pengguna untuk pengalaman pengguna juga semakin meningkat Semakin tinggi. Fungsi drag-and-drop telah menjadi fungsi yang sangat biasa dalam aplikasi web, seperti pengisihan seret dan lepas, saiz semula seret dan lepas, dsb. Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan komponen seret dan lepas.
Pelaksanaan komponen drag-and-drop melibatkan titik pengetahuan seperti peristiwa tetikus, animasi CSS dan operasi DOM, dan Vue, sebagai rangka kerja JavaScript yang progresif, boleh membantu kami melengkapkan fungsi ini. Proses pelaksanaan khusus akan diperkenalkan di bawah melalui contoh.
Pertama, kita perlu mencipta komponen asas Vue, termasuk kawasan seret dan elemen seret:
<template> <div class="drag-box"> <div class="drag-handle" @mousedown="handleMouseDown">拖拽元素</div> </div> </template>
Di sini kami menggunakan acara @mousedown</code > untuk mendengar acara akhbar tetikus dan kaedah <code>handleMouseDown
terikat untuk mengendalikan acara ini. Dalam kaedah ini, kita perlu mengira offset tetikus dan menyimpannya dalam contoh komponen. Pada masa yang sama, kami menetapkan komponen semasa untuk diseret dan menetapkan gaya CSS untuk melaraskan kedudukannya. @mousedown
事件来监听鼠标按下事件,并且绑定了一个handleMouseDown
方法来处理这个事件。在此方法中,我们需要计算出鼠标的偏移量,并将其保存在组件实例中。同时,我们将当前组件设置为被拖拽状态,并且设置CSS样式来调整其位置。
<script> export default { data() { return { isDragging: false, dragStartX: 0, dragStartY: 0, dragOffsetX: 0, dragOffsetY: 0, }; }, methods: { handleMouseDown(event) { this.isDragging = true; const rect = event.target.getBoundingClientRect(); this.dragStartX = event.clientX; this.dragStartY = event.clientY; this.dragOffsetX = event.clientX - rect.left; this.dragOffsetY = event.clientY - rect.top; document.addEventListener("mousemove", this.handleMouseMove); document.addEventListener("mouseup", this.handleMouseUp); }, handleMouseMove(event) { if (this.isDragging) { const box = this.$el.getBoundingClientRect(); const x = event.clientX - this.dragStartX; const y = event.clientY - this.dragStartY; this.$el.style.transform = `translate(${x}px, ${y}px)`; } }, handleMouseUp(event) { this.isDragging = false; this.$el.style.transition = "all 0.3s ease-out"; this.$el.style.transform = `translate(0, 0)`; setTimeout(() => { this.$el.style.transition = ""; }, 300); document.removeEventListener("mousemove", this.handleMouseMove); document.removeEventListener("mouseup", this.handleMouseUp); }, }, }; </script>
在这个例子中,我们使用了document.addEventListener
方法来监听鼠标移动和鼠标松开事件。在鼠标移动的事件处理方法中,我们获取鼠标的位置并计算出偏移量。然后,我们使用CSS的transform
<template> <div class="drag-demo"> <DragBox class="drag-box"> <div class="drag-handle" @mousedown="handleMouseDown"> 拖拽元素 </div> </DragBox> </div> </template> <script> import DragBox from "./DragBox.vue"; export default { components: { DragBox, }, methods: { handleMouseDown(event) { //... }, }, }; </script> <style> .drag-box { width: 300px; height: 300px; border: 1px solid gray; position: relative; } .drag-handle { width: 100px; height: 50px; background-color: red; color: white; text-align: center; line-height: 50px; cursor: move; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } </style>
document.addEventListener
untuk mendengar pergerakan tetikus dan peristiwa pelepasan tetikus. Dalam kaedah pengendalian peristiwa pergerakan tetikus, kami memperoleh kedudukan tetikus dan mengira offset. Kemudian, kami menggunakan sifat CSS transform
untuk melaraskan kedudukan elemen yang diseret. Dalam acara pelepasan tetikus, kami membatalkan pemantauan pergerakan tetikus dan peristiwa pelepasan tetikus, dan menggunakan animasi CSS untuk beralih kembali ke kedudukan asal. Akhir sekali, kami boleh memperkenalkan komponen seret dan lepas ini dalam komponen induk dan menetapkan sifat dan gayanya mengikut keperluan. Di bawah ialah kod sampel yang membenarkan elemen penyeretan dihadkan kepada kawasan penyeretan. rrreee
Dalam kod sampel ini, kami meletakkan elemen seret dalam kawasan seret dan menetapkan beberapa gaya asas. Dalam kaedah pengendalian acara, kita boleh mengendalikan kedudukan elemen yang diseret mengikut keperluan dan menyekat pergerakannya di kawasan seretan. RingkasanFungsi seret dan lepas sudah sangat biasa dalam aplikasi web, dan Vue, sebagai rangka kerja JavaScript yang popular, boleh menyokong fungsi ini dengan baik. Dalam artikel ini, kami memperkenalkan cara menggunakan Vue untuk melaksanakan komponen seret dan lepas yang mudah, dan menerangkan proses pelaksanaan melalui contoh kod tertentu. Melalui contoh ini, kita boleh mempunyai pemahaman yang lebih mendalam tentang pengikatan data, komponenisasi, pemprosesan acara dan ciri lain Vue. Dalam pembangunan sebenar, kami boleh menambah lebih banyak fungsi dan pengoptimuman mengikut keperluan, seperti menambah kesan animasi, mengehadkan julat seretan, dsb. #🎜🎜#Atas ialah kandungan terperinci Vue dalam amalan: seret dan lepas pembangunan komponen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Terdapat tiga cara untuk merujuk kepada fail JS dalam vue.js: Secara langsung tentukan jalan menggunakan & lt; skrip & gt; tag ;; import dinamik menggunakan cangkuk kitaran hayat yang dipasang (); dan mengimport melalui Perpustakaan Pengurusan Negeri VUEX.

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Pembangunan pelbagai halaman Vue adalah cara untuk membina aplikasi menggunakan rangka kerja VUE.JS, di mana permohonan dibahagikan kepada halaman berasingan: Penyelenggaraan kod: Memisahkan aplikasi ke dalam beberapa halaman boleh menjadikan kod lebih mudah untuk dikendalikan dan diselenggarakan. Modularity: Setiap halaman boleh digunakan sebagai modul yang berasingan untuk penggunaan semula dan penggantian mudah. Routing mudah: Navigasi antara halaman boleh diuruskan melalui konfigurasi penghalaan mudah. Pengoptimuman SEO: Setiap halaman mempunyai URL sendiri, yang membantu SEO.

Vue.js mempunyai empat kaedah untuk kembali ke halaman sebelumnya: $ router.go (-1) $ router.back () menggunakan & lt; router-link to = & quot;/& quot; Komponen Window.History.Back (), dan pemilihan kaedah bergantung pada tempat kejadian.

Anda boleh menanyakan versi VUE dengan menggunakan Vue Devtools untuk melihat tab VUE dalam konsol penyemak imbas. Gunakan NPM untuk menjalankan arahan "NPM LIST -G VUE". Cari item VUE dalam objek "Dependencies" fail Package.json. Untuk projek Vue CLI, jalankan perintah "Vue -version". Semak maklumat versi di & lt; skrip & gt; Tag dalam fail HTML yang merujuk kepada fail VUE.

Pemintasan fungsi dalam VUE adalah teknik yang digunakan untuk mengehadkan bilangan kali fungsi dipanggil dalam tempoh masa yang ditentukan dan mencegah masalah prestasi. Kaedah pelaksanaan adalah: mengimport perpustakaan lodash: import {debounce} dari 'lodash'; Gunakan fungsi debounce untuk membuat fungsi memintas: const debouncedfunction = debounce (() = & gt; { / logical /}, 500); Panggil fungsi Intercept, dan fungsi kawalan dipanggil paling banyak sekali dalam 500 milisaat.
