vue-組件可拖拽案例

涉及到的知識(shí)
  • 事件方法
    dragstart妇斤,dragenter,dragend
  • 事件對(duì)象e的屬性值獲取
e.target;//拖拽對(duì)象
e.clientX;//獲取鼠標(biāo)相對(duì)于瀏覽器的坐標(biāo)x的位置
e.clientY;//獲取鼠標(biāo)相對(duì)于瀏覽器的坐標(biāo)H的位置
e.pageX;//獲取鼠標(biāo)相對(duì)于整個(gè)文檔的坐標(biāo)x
e.pageY;//獲取鼠標(biāo)相對(duì)于整個(gè)文檔的坐標(biāo)h
  • $refs對(duì)dom對(duì)象屬性的設(shè)置和獲取
//獲取
let w = this.$refs.你設(shè)置的ref名稱.clientWidth;   // 獲取標(biāo)簽屬性
//設(shè)置
this.$refs.你設(shè)置的ref名稱.style.top = 20px;//單屬性設(shè)置
this.$refs.你設(shè)置的ref名稱.style = ‘left:20px;top:30px’荸恕;//多屬性設(shè)置
代碼演示
<template>
    <div 
        id="navBox" 
        draggable="true"
        @dragstart.stop="onDragStart"
        @dragenter.stop="onDragEnter"
        @dragend.stop="onDragEnd"
        ref="navDom"
        >
        <ul class="navLeft">
            <li v-for="item in navList" v-bind:key="item.title" @click="$router.push(item.url)">{{item.title}}</li>
        </ul> 
    </div>
       
</template>
<script>

    //可拖動(dòng)死相?

// 引入狀態(tài)管理模式-store
import {store} from '../store/store.js'

    export default{
        name:'NavLeftStart',
        props:{
            navList:Array,
        },
        data(){
            return{
                isFold:false,
                styleNmae:'navLeft',
                animNmae:'anmHide'
            }
        },
        methods:{
            onDragStart(e){//開始拖拽
                console.log(e,'拖拽開始');
                let target = e.target;//拖拽對(duì)象
                let mouseXforW = e.clientX;//獲取鼠標(biāo)相對(duì)于瀏覽器的坐標(biāo)x的位置
                let mouseHforW = e.clientY;//獲取鼠標(biāo)相對(duì)于瀏覽器的坐標(biāo)H的位置
                let mouseXforDom=e.pageX;//獲取鼠標(biāo)相對(duì)于整個(gè)文檔的坐標(biāo)x
                let mouseHforDom=e.pageY;//獲取鼠標(biāo)相對(duì)于整個(gè)文檔的坐標(biāo)h
                
            },
            onDragEnter(e){//拖拽中
                console.log(e,'拖拽中');
            },
            onDragEnd(e){//拖拽結(jié)束
                console.log(e,'拖拽結(jié)束');
                // 獲取拖拽結(jié)束時(shí)鼠標(biāo)的坐標(biāo)點(diǎn)
                let target = e.target;//拖拽對(duì)象
                let mouseX = e.clientX;
                let mouseY = e.clientY;

                // 獲取拖拽對(duì)象寬度
                let w = this.$refs.navDom.clientWidth;   // 獲取標(biāo)簽屬性
                let h = this.$refs.navDom.clientHeight;
                
                // this.$refs.navDom.style.left = mouseX - w/2+'px';
                // this.$refs.navDom.style.top = mouseY - h/2+'px';
                this.$refs.navDom.style = `left:${mouseX - w/2}px;top:${mouseY - h/2}px`
               
                console.log(this.$refs.navDom.clientHeight,'pp')
            }
        },
      
    }
</script>
<style scoped>
#navBox{
    position: fixed;
    left: 10px;
    top:200px;
    z-index: 1000;
}
.navLeft{
    list-style: none;
    width: auto;
    height: auto;
    background: #99CC99;
    border-radius: 50px;
    overflow: hidden;
    transition: all .2s ease-in-out;
    box-shadow: 1px 2px 13px 0px #33663361;
}
.navLeft li{
    padding: 10px;
    font-size: 18px;
    color: #336633;
    width: 100%;
    text-align: center;
    /* line-height: 40px; */
    cursor: pointer;
    transition: all 0.1s ease-in-out;
}
.navLeft li:nth-child(1){
    padding-top: 20px;
}
.navLeft li:nth-last-child(1){
    padding-bottom: 20px;
}
.navLeft li:hover{
    background: #669933;
    /* color: #fff; */
}
.anmHide{
    height: auto;
    /* animation: anmateHeight 0.4s ease-in-out inherit;
    animation-iteration-count:1; */
}

</style>

github地址:

路徑:https://github.com/wyweb1/lxaboutVue/blob/main/src/components/NavLeftStart.(地址:https://github.com/wyweb1/lxaboutVue/
根據(jù)路徑找該組件的文件夾位置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末生宛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子倒彰,更是在濱河造成了極大的恐慌莱睁,老刑警劉巖待讳,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件创淡,死亡現(xiàn)場(chǎng)離奇詭異南吮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)部凑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來施无,“玉大人必孤,你說我怎么就攤上這事》筇拢” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵嫂便,是天一觀的道長闸与。 經(jīng)常有香客問我,道長践樱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任袱院,我火速辦了婚禮,結(jié)果婚禮上忽洛,老公的妹妹穿的比我還像新娘。我一直安慰自己集灌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布绝页。 她就那樣靜靜地躺著寂恬,像睡著了一般莱没。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饰躲,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天嘹裂,我揣著相機(jī)與錄音妄壶,去河邊找鬼寄狼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伊磺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屑埋,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼痰滋,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了徊哑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤莺丑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后萧豆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昏名,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年洪鸭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片览爵。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镇饮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出储藐,到底是詐尸還是另有隱情,我是刑警寧澤蛛碌,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布辖源,位于F島的核電站,受9級(jí)特大地震影響同木,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜彤路,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一洲尊、第九天 我趴在偏房一處隱蔽的房頂上張望远豺。 院中可真熱鬧坞嘀,春花似錦、人聲如沸丽涩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至移必,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秒赤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工入篮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留含思,地道東北人甘晤。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像线婚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漱逸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容