element-ui 使用時(shí)的奇淫巧技

1、el-table 的表格cell, 開(kāi)啟全局的toolTip提示涎嚼?

2轿塔、el-dialog禁止點(diǎn)擊任意空白處關(guān)閉彈窗(默認(rèn)是dialog是開(kāi)啟這個(gè)功能的)?

答:
對(duì)(1)配并,局部的某個(gè)組件文件中, 在el-table-column標(biāo)簽中配置show-overflow-tooltip可以實(shí)現(xiàn)提示,但就是太麻煩了
對(duì)(2)霍转, 局部的某個(gè)組件文件中荐绝, 可以在el-dialog中,增加屬性 :close-on-click-modal="false" 實(shí)現(xiàn), 但一個(gè)個(gè)加也太麻煩了

這雙眼睛看透了一切~

哈哈避消,那就動(dòng)手實(shí)現(xiàn)吧低滩,全局設(shè)置上述功能!在main.js里這么寫(xiě):

//......
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css
//......

// 默認(rèn)開(kāi)啟懸浮提示樣式岩喷,定義FitTable 擴(kuò)展table的樣式
ElementUI.TableColumn.props.showOverflowTooltip= {type:Boolean, default: true};
//全局修改默認(rèn)配置恕沫,點(diǎn)擊空白處不能關(guān)閉彈窗
ElementUI.Dialog.props.closeOnClickModal.default = false

3、希望el-table 有這樣的功能纱意,table-column組件的屬性show-overflow-tooltip是否能同時(shí)在對(duì)應(yīng)表頭生效?

如下顯示:

圖片

答:

  • 如果是對(duì)于個(gè)別組件文件婶溯,實(shí)現(xiàn)該效果,即 百度 查詢 element-ui table renderHeader 實(shí)現(xiàn)即可
  • 對(duì)于已經(jīng)寫(xiě)了很多文件來(lái)說(shuō)偷霉,要想統(tǒng)一實(shí)現(xiàn)該效果迄委,有沒(méi)有方法?哈哈类少,答案是有的叙身,不然我怎么截圖出來(lái)! 接下來(lái)需要這幾步,就可以實(shí)現(xiàn)硫狞!

寫(xiě)法1信轿,可實(shí)現(xiàn)功能,控制臺(tái)會(huì)報(bào)warning残吩。(不介意該點(diǎn)财忽,可采取此法)

  1. 在你項(xiàng)目的某個(gè)目錄(比如utils)下,新建一個(gè)table-column.js, 作用: 繼承el-table-column的功能泣侮,但是在它上面又進(jìn)行自己的擴(kuò)展即彪!

table-column.js, 這里采用了vue jsx的寫(xiě)法活尊,要注意幾點(diǎn)祖凫,
第一琼蚯,項(xiàng)目的element-ui 版本,其中的table是否已經(jīng)支持renderHeader ,
第二惠况,看你的項(xiàng)目是否支持vue jsx, 如何支持請(qǐng)自行百度。不支持的話宁仔,乖乖的動(dòng)態(tài)寫(xiě)render方法哦~

import { TableColumn } from 'element-ui'

export default {
  name: 'ElTableColumn',
  extends: TableColumn,  // 繼承本來(lái)的TableColumn 功能
  props: {
    // 使用 renderHeader 方法稠屠,設(shè)置默認(rèn)的table-column 表頭渲染,當(dāng)字體超過(guò)7個(gè)字時(shí)(文字出現(xiàn)超出的省略號(hào))翎苫,懸浮顯示toolTip,
    // 采用jsx 語(yǔ)法進(jìn)行書(shū)寫(xiě)
    renderHeader: {
      type: Function,
      default: (h, { column }) => {
        const { label } = column;
        if(label) {
          const len = label.length;
          return len > 7 ? <el-tooltip class="item" effect="dark" content={label} placement="top">
              <span style={{ width: `100px`,display: 'inline-block',overflow: 'hidden',textOverflow: 'ellipsis'}}>{label}</span>
            </el-tooltip>
            : <span>{ label }</span>
        }
        return <span>{ label }</span>;
      }
    }
  },
}
  1. 在main.js中权埠,引入這個(gè)文件,并且全局注冊(cè)該組件煎谍,覆蓋原來(lái)的ElTableColumn攘蔽,
import FitTableColumn from '@/utils/table-column'
Vue.component('ElTableColumn' || FitTableColumn.name, FitTableColumn)

配置好上述2點(diǎn),熱更新代碼后呐粘,效果就有啦~

但 控制臺(tái)報(bào)warning這個(gè):[Element Warn][TableColumn]Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header. 满俗。。作岖∷衾看著就很不爽呀,后來(lái)查閱了幾天痘儡,發(fā)現(xiàn)renderHeader不放在props里書(shū)寫(xiě)辕万,放在mounted 方法里書(shū)寫(xiě),控制臺(tái)就不報(bào)warning了,而且上述代碼也限制的比較死沉删,大于7個(gè)的時(shí)候渐尿,設(shè)定了固定長(zhǎng)度100px,超出部分出現(xiàn)省略號(hào),體驗(yàn)不好矾瑰。

寫(xiě)法2砖茸, 實(shí)現(xiàn)功能,不報(bào)warning脯倚,比較完美實(shí)現(xiàn)

默認(rèn)情況下渔彰,未對(duì)element-ui 的table的th設(shè)置樣式,當(dāng)字?jǐn)?shù)超了的時(shí)候推正,會(huì)自動(dòng)換行恍涂,就像這樣:

image.png

那現(xiàn)在不想要自動(dòng)換行呢,想要超出出現(xiàn)省略號(hào)植榕?很簡(jiǎn)單再沧,為你的el-table設(shè)置class名為admin_table,
再為th設(shè)置一行這樣的css

.admin_table  th>.cell{
  white-space: nowrap;
} 

設(shè)置完畢后,就會(huì)像這樣:


image.png

添加tool-tip? utils文件夾下尊残,新建一個(gè)table-column的js文件炒瘸,代碼如下:

import { TableColumn } from 'element-ui'

export default {
  name: 'ElTableColumn',
  extends: TableColumn, // 繼承TableColumn
  mounted() {
    // 設(shè)置默認(rèn)的table-column 表頭渲染淤堵,判斷當(dāng)出現(xiàn)省略號(hào)時(shí)el.offsetWidth < el.scrollWidth, 懸浮顯示toolTip,
    // 采用jsx 語(yǔ)法進(jìn)行書(shū)寫(xiě), 放在mounted方法中
    this.columnConfig.renderHeader = (h, { column }) => {
          const { label, id } = column;
          const el = document.querySelector(`.${id} .cell`);
          const eleWidth = el && el.offsetWidth ;
          if(el && (eleWidth < el.scrollWidth)) { // 表示超出了顷扩,有省略號(hào)出現(xiàn)
            return (<el-tooltip class="item" effect="dark" content={label} placement="top">
              <span >{label}</span>
            </el-tooltip>);
          }else{
            return <span>{ label }</span>;
          }
     }
  }
}

最后拐邪,同樣的 在main.js中,引入這個(gè)文件隘截,并且全局注冊(cè)該組件扎阶,覆蓋原來(lái)的ElTableColumn,

import FitTableColumn from '@/utils/table-column'
Vue.component('ElTableColumn' || FitTableColumn.name, FitTableColumn)

刷新頁(yè)面婶芭,則所有的table表頭东臀,當(dāng)顯示出現(xiàn)省略號(hào)時(shí),鼠標(biāo)懸浮上去都有了tool-tip功能(?ˉ?ˉ?)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末犀农,一起剝皮案震驚了整個(gè)濱河市惰赋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呵哨,老刑警劉巖赁濒,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仇穗,居然都是意外死亡流部,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)纹坐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)枝冀,“玉大人,你說(shuō)我怎么就攤上這事耘子」” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵谷誓,是天一觀的道長(zhǎng)绒障。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捍歪,這世上最難降的妖魔是什么户辱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮糙臼,結(jié)果婚禮上庐镐,老公的妹妹穿的比我還像新娘。我一直安慰自己变逃,他們只是感情好必逆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般名眉。 火紅的嫁衣襯著肌膚如雪粟矿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天损拢,我揣著相機(jī)與錄音陌粹,去河邊找鬼。 笑死福压,一個(gè)胖子當(dāng)著我的面吹牛申屹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播隧膏,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚷那!你這毒婦竟也來(lái)了胞枕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤魏宽,失蹤者是張志新(化名)和其女友劉穎腐泻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體队询,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡派桩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚌斩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铆惑。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖送膳,靈堂內(nèi)的尸體忽然破棺而出员魏,到底是詐尸還是另有隱情,我是刑警寧澤叠聋,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布撕阎,位于F島的核電站,受9級(jí)特大地震影響碌补,放射性物質(zhì)發(fā)生泄漏虏束。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一厦章、第九天 我趴在偏房一處隱蔽的房頂上張望镇匀。 院中可真熱鬧,春花似錦闷袒、人聲如沸坑律。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晃择。三九已至冀值,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宫屠,已是汗流浹背列疗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪蹂,地道東北人抵栈。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像坤次,于是被迫代替她去往敵國(guó)和親古劲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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