您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何用vue實(shí)現(xiàn)一個(gè)側(cè)邊欄拖動(dòng)功能的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇如何用vue實(shí)現(xiàn)一個(gè)側(cè)邊欄拖動(dòng)功能文章都會(huì)有所收獲,下面我們一起來看看吧。
首先,需要安裝 Vue.js,可以使用 npm 或 yarn 安裝,并在項(xiàng)目中引入 Vue.js:
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
在 Vue.js 中,可以定義組件,在組件中編寫側(cè)邊欄拖動(dòng)的代碼。在本例中,我們將創(chuàng)建一個(gè)名為 DragSidebar 的組件。在 DragSidebar 組件中,需要定義兩個(gè)數(shù)據(jù)屬性:dragging 和 mouseX。dragging 表示側(cè)邊欄是否正在被拖動(dòng),mouseX 表示鼠標(biāo)的 X 坐標(biāo)。
<template>
<div class="drag-container">
<div class="sidebar" :style="{ transform: translate }" @mousedown="mousedown"
@mouseup="mouseup" @mousemove="mousemove">
<div class="content">
<slot></slot>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
dragging: false,
mouseX: 0,
sidebarX: 0
}
},
computed: {
translate() {
return `translate3d(${this.sidebarX}px, 0, 0)`
}
},
methods: {
mousedown(event) {
this.dragging = true
this.mouseX = event.clientX
},
mouseup() {
this.dragging = false
},
mousemove(event) {
if (this.dragging) {
const diff = event.clientX - this.mouseX
this.sidebarX += diff
this.mouseX = event.clientX
}
}
}
}
</script>
<style scoped>
.drag-container {
display: flex;
align-items: stretch;
height: 100vh;
overflow: hidden;
}
.sidebar {
width: 320px;
min-width: 320px;
height: 100%;
background-color: #F2F2F2;
transition: transform .3s ease;
}
.content {
padding: 24px;
}
</style>
在上面的代碼中,我們定義了三個(gè)方法:mousedown、mouseup 和 mousemove,分別處理按下、松開和移動(dòng)鼠標(biāo)事件。在 mousedown 中,我們將 dragging 屬性設(shè)置為 true,表示側(cè)邊欄開始被拖動(dòng),同時(shí)記錄鼠標(biāo)的 X 坐標(biāo)。在 mouseup 中,我們將 dragging 屬性設(shè)置為 false,表示側(cè)邊欄停止被拖動(dòng)。在 mousemove 中,我們根據(jù)鼠標(biāo)的移動(dòng)距離調(diào)整側(cè)邊欄的位置。
最后,我們?cè)诟附M件中使用 DragSidebar 組件,并在其中添加一些子組件來測(cè)試。你可能需要自行添加一些 CSS 樣式來適配你的項(xiàng)目需求。
<template>
<div class="app">
<drag-sidebar>
<h2>Title</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Suspendisse consectetur pharetra ante sit amet bibendum.</p>
</drag-sidebar>
<div class="main">
<h2>Main content</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Suspendisse consectetur pharetra ante sit amet bibendum.</p>
</div>
</div>
</template>
<script>
import DragSidebar from './components/DragSidebar.vue'
export default {
components: {
DragSidebar
}
}
</script>
<style>
.app {
height: 100vh;
display: flex;
}
.main {
flex-grow: 1;
padding: 24px;
}
</style>
關(guān)于“如何用vue實(shí)現(xiàn)一個(gè)側(cè)邊欄拖動(dòng)功能”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“如何用vue實(shí)現(xiàn)一個(gè)側(cè)邊欄拖動(dòng)功能”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。