element ui 中的彈框的拖動(dòng)和拉伸以及其他問(wèn)題

代碼:

//移動(dòng)
<template>
<el-dialog v-x>
      <div class="dialog-body"><div class="line" v-dialogDragWidth="$refs.dialog__wrapper"></div>
      </div>
    </el-dialog>
//寬高
    <el-dialog v-dialogDragWidth>
      <div class="dialog-body">
          <div 
              class="line"
              v-dialogDragWidth="$refs.dialog__wrapper"></div>
          </div>
    </el-dialog>
</template>
<script>
      Vue.directive('x', {
                    bind(el, binding, vnode, oldVnode) {
                            const dialogHeaderEl = el.querySelector('.el-dialog__header');
                            const dragDom = el.querySelector('.el-dialog');
                            dialogHeaderEl.style.cursor = 'move';
              // 獲取原有屬性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
                            const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
                            dialogHeaderEl.onmousedown = (e) => {
                                    // 鼠標(biāo)按下属瓣,計(jì)算當(dāng)前元素距離可視區(qū)的距離
                                    const disX = e.clientX - dialogHeaderEl.offsetLeft;
                                    const disY = e.clientY - dialogHeaderEl.offsetTop;
                                    // 獲取到的值帶px 正則匹配替換
                                    let styL, styT;
                  // 注意在ie中 第一次獲取到的值為組件自帶50% 移動(dòng)之后賦值為px
                                    if(sty.left.includes('%')) {
                                            styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
                                            styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
                                    }else {
                                            styL = +sty.left.replace(/\px/g, '');
                                            styT = +sty.top.replace(/\px/g, '');
                                    };
            
            document.onmousemove = function (e) {
                // 通過(guò)事件委托载迄,計(jì)算移動(dòng)的距離 
                const l = e.clientX - disX;
                const t = e.clientY - disY;

                // 移動(dòng)當(dāng)前元素  
                dragDom.style.left = `${l + styL}px`;
                dragDom.style.top = `${t + styT}px`;

                //將此時(shí)的位置傳出去
                //binding.value({x:e.pageX,y:e.pageY})
            };

            document.onmouseup = function (e) {
                document.onmousemove = null;
                document.onmouseup = null;
            };
        }  
    }
})

// v-dialogDragWidth: 彈窗寬度拖大 拖小
Vue.directive('dialogDragWidth', {
    bind(el, binding, vnode, oldVnode) {
        const dragDom = binding.value.$el.querySelector('.el-dialog');

        el.onmousedown = (e) => {
            
            // 鼠標(biāo)按下,計(jì)算當(dāng)前元素距離可視區(qū)的距離
            const disX = e.clientX - el.offsetLeft;
            
            document.onmousemove = function (e) {
                e.preventDefault(); // 移動(dòng)時(shí)禁用默認(rèn)事件

                // 通過(guò)事件委托抡蛙,計(jì)算移動(dòng)的距離 
                const l = e.clientX - disX;
                dragDom.style.width = `${l}px`;
            };

            document.onmouseup = function (e) {
                document.onmousemove = null;
                document.onmouseup = null;
            };
        }  
    }
})
</script>

script 必須寫在new vue前面

彈框中內(nèi)容過(guò)多的時(shí)候护昧,會(huì)給一個(gè)固定高,多出的會(huì)出現(xiàn)滾動(dòng)條粗截。


多個(gè)播放按鈕用公用一個(gè)彈框

問(wèn)題:第一個(gè)播放滾動(dòng)到一個(gè)位置惋耙,打開(kāi)第二個(gè)播放的時(shí)候滾動(dòng)條會(huì)記得上一個(gè)滾動(dòng)的位置。
解決方法熊昌,在彈框的beforeClose事件中加上一個(gè)js代碼

document.getElementsByClassName('dialogueList')[0].scrollTop=0

這樣就可以讓彈框每次關(guān)閉的時(shí)候就可以讓滾動(dòng)條到最上面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绽榛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子婿屹,更是在濱河造成了極大的恐慌灭美,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件选泻,死亡現(xiàn)場(chǎng)離奇詭異冲粤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)页眯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門梯捕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窝撵,你說(shuō)我怎么就攤上這事傀顾。” “怎么了碌奉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵短曾,是天一觀的道長(zhǎng)寒砖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嫉拐,這世上最難降的妖魔是什么哩都? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮婉徘,結(jié)果婚禮上漠嵌,老公的妹妹穿的比我還像新娘。我一直安慰自己盖呼,他們只是感情好儒鹿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著几晤,像睡著了一般约炎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蟹瘾,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天圾浅,我揣著相機(jī)與錄音,去河邊找鬼热芹。 笑死贱傀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伊脓。 我是一名探鬼主播府寒,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼报腔!你這毒婦竟也來(lái)了株搔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纯蛾,失蹤者是張志新(化名)和其女友劉穎纤房,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體翻诉,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炮姨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碰煌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舒岸。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芦圾,靈堂內(nèi)的尸體忽然破棺而出蛾派,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布洪乍,位于F島的核電站眯杏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏壳澳。R本人自食惡果不足惜岂贩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钾埂。 院中可真熱鬧河闰,春花似錦、人聲如沸褥紫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)髓考。三九已至,卻和暖如春弃酌,著一層夾襖步出監(jiān)牢的瞬間氨菇,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工妓湘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留查蓉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓榜贴,卻偏偏與公主長(zhǎng)得像豌研,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唬党,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 學(xué)習(xí)過(guò)程中突發(fā)奇想 程序語(yǔ)言都是處理0和1 肯定很多地方是一樣的,那么肯定有書(shū)教你怎么寫程序 學(xué)習(xí)編程的第一要素是...
    joker731閱讀 991評(píng)論 0 3
  • 一鹃共、直接引入`import vue from 'vue'` 報(bào)vue-warn錯(cuò)誤 //如果直接使用import ...
    代小代isDelenDelen閱讀 6,829評(píng)論 1 16
  • 一:什么是閉包?閉包的用處驶拱? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)霜浴。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,636評(píng)論 1 52
  • ## 框架和庫(kù)的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**蓝纲。> > 庫(kù)(lib...
    Rui_bdad閱讀 2,917評(píng)論 1 4
  • 從你上小學(xué)的第一天開(kāi)始税迷,我就思考過(guò)一個(gè)問(wèn)題永丝,如果哪天你開(kāi)始寫日記了,我作為媽媽是看還是不看翁狐? 現(xiàn)在类溢,你四年級(jí)了,你...
    芳與華閱讀 492評(píng)論 2 4