Vue自定義指令--實現(xiàn)文字溢出顯示...鼠標(biāo)移入浮層展示全部

首先

  • 要知道當(dāng)前元素的寬
  • 將文字放到一個容器中赚爵,將容器的樣式(主要是有關(guān)字體的樣式)都設(shè)置為當(dāng)前元素的樣式,然后獲取容器的寬廊宪,也就是文字的寬
  • 如果文字的寬度超過了當(dāng)前元素的寬度摹闽,則給溢出隱藏的css樣式 overflow :hidden;text-overflow: ellipsis;white-space: normal
  • 定義鼠標(biāo)移入展示浮層颜曾,浮層中顯示全部內(nèi)容,鼠標(biāo)移出銷毀浮層

代碼

  • mian.js 中定義全局指令
  • 也可以在組件的directives中注冊局部指令
Vue.directive('showTips', {
  // el {element} 當(dāng)前元素
  componentUpdated (el) {
    const curStyle = window.getComputedStyle(el, '') // 獲取當(dāng)前元素的style
    const textSpan = document.createElement('span') // 創(chuàng)建一個容器來記錄文字的width
    // 設(shè)置新容器的字體樣式,確保與當(dāng)前需要隱藏的樣式相同
    textSpan.style.fontSize = curStyle.fontSize
    textSpan.style.fontWeight = curStyle.fontWeight
    textSpan.style.fontFamily = curStyle.fontFamily
    // 將容器插入body蜀铲,如果不插入边琉,offsetWidth為0
    document.body.appendChild(textSpan)
    // 設(shè)置新容器的文字
    textSpan.innerHTML = el.innerText
    // 如果字體元素大于當(dāng)前元素,則需要隱藏
    if (textSpan.offsetWidth > el.offsetWidth) {
      // 給當(dāng)前元素設(shè)置超出隱藏
      el.style.overflow = 'hidden'
      el.style.textOverflow = 'ellipsis'
      el.style.whiteSpace = 'nowrap'
      // 鼠標(biāo)移入
      el.onmouseenter = function (e) {
        // 創(chuàng)建浮層元素并設(shè)置樣式
        const vcTooltipDom = document.createElement('div')
        vcTooltipDom.style.cssText = `
          max-width:400px;
          max-height: 400px;
          overflow: auto;
          position:absolute;
          top:${e.clientY + 5}px;
          left:${e.clientX}px;
          background: rgba(0, 0 , 0, .6);
          color:#fff;
          border-radius:5px;
          padding:10px;
          display:inline-block;
          font-size:12px;
          z-index:19999
        `
        // 設(shè)置id方便尋找
        vcTooltipDom.setAttribute('id', 'vc-tooltip')
        // 將浮層插入到body中
        document.body.appendChild(vcTooltipDom)
        // 浮層中的文字
        document.getElementById('vc-tooltip').innerHTML = el.innerText
      }
      // 鼠標(biāo)移出
      el.onmouseleave = function () {
        // 找到浮層元素并移出
        const vcTooltipDom = document.getElementById('vc-tooltip')
        vcTooltipDom && document.body.removeChild(vcTooltipDom)
      }
    }
    // 記得移除剛剛創(chuàng)建的記錄文字的容器
    document.body.removeChild(textSpan)
  },
  // 指令與元素解綁時
  unbind () {
    // 找到浮層元素并移除
    const vcTooltipDom = document.getElementById('vc-tooltip')
    vcTooltipDom && document.body.removeChild(vcTooltipDom)
  }
})
  • 使用 : 需要溢出隱藏的直接加上指令 v-show-tips 即可
<div v-show-tips class="title-text">{{ name }}</div>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末记劝,一起剝皮案震驚了整個濱河市变姨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厌丑,老刑警劉巖定欧,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異怒竿,居然都是意外死亡砍鸠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門耕驰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爷辱,“玉大人,你說我怎么就攤上這事朦肘》构” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵媒抠,是天一觀的道長弟断。 經(jīng)常有香客問我,道長趴生,這世上最難降的妖魔是什么阀趴? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮苍匆,結(jié)果婚禮上刘急,老公的妹妹穿的比我還像新娘。我一直安慰自己浸踩,他們只是感情好排霉,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著民轴,像睡著了一般攻柠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上后裸,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天瑰钮,我揣著相機與錄音,去河邊找鬼微驶。 笑死浪谴,一個胖子當(dāng)著我的面吹牛开睡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苟耻,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼篇恒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凶杖?” 一聲冷哼從身側(cè)響起胁艰,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎智蝠,沒想到半個月后腾么,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡杈湾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年解虱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漆撞。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡殴泰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浮驳,到底是詐尸還是另有隱情悍汛,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布抹恳,位于F島的核電站,受9級特大地震影響署驻,放射性物質(zhì)發(fā)生泄漏奋献。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一旺上、第九天 我趴在偏房一處隱蔽的房頂上張望瓶蚂。 院中可真熱鬧,春花似錦宣吱、人聲如沸窃这。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杭攻。三九已至,卻和暖如春疤坝,著一層夾襖步出監(jiān)牢的瞬間兆解,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工跑揉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锅睛,地道東北人埠巨。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像现拒,于是被迫代替她去往敵國和親辣垒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • day01-_起源和結(jié)構(gòu) 結(jié)構(gòu):Xhtml xml 表現(xiàn):CSS 行為:DOM ECMAScript 以上都屬于W...
    Sakura_明妃閱讀 1,166評論 0 1
  • 選擇qi:是表達式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color印蔬,font勋桶,text-align,li...
    love2013閱讀 2,303評論 0 11
  • CSS參考手冊 一扛点、初識CSS3 1.1 CSS是什么 CSS3在CSS2.1的基礎(chǔ)上增加了很多強大的新功能哥遮。目前...
    沒汁帥閱讀 3,556評論 1 13
  • 一、CSS入門 1陵究、css選擇器 選擇器的作用是“用于確定(選定)要進行樣式設(shè)定的標(biāo)簽(元素)”眠饮。 有若干種形式的...
    寵辱不驚丶歲月靜好閱讀 1,584評論 0 6
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體铜邮。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,828評論 0 0