Vue2?Element?description組件列合并詳解
前言
需求是description需要做成首行3列, 剩余行為4列, 額, 我說的是算上標(biāo)簽, 就像這樣:

你可能會說"啊, 你這個笨蛋為什么不去用labelStyle或者contentStyle來消減表格呢?"
我肯定是試過的啦…不行嘛.
一、首次嘗試
1.style的失敗嘗試
我十分想用規(guī)規(guī)矩矩的方法去解決問題, 我選用了labelStyle和contentStyle, 并且認(rèn)為"只要將右上角el-descriptions-item的label設(shè)置為沒有寬度或者display:none;就好了, 然后另一個格子就會壓過去."
這個想法多少是有點(diǎn)天真.
當(dāng)我把labelStyle設(shè)置為display:none時整個content格子直接向左塌陷到了label的原位置并且它自身的寬度把整個一列的label全都撐的脹起來:

不要用width…我試過了, 會有一些比較恐怖的效果.
不過我確實(shí)沒有試過用::v-deep操作element內(nèi)部屬性然后設(shè)置樣式來消減寬度.
2.DOM結(jié)構(gòu)
組長過來看了一會說他以前做過這種description結(jié)構(gòu), 他大體說了一下, 老實(shí)說我沒太聽明白, 我只是感覺DOM上可以做一點(diǎn)文章, 要不試一下?
我的思路是將上下, 也就是第一行的"畸形行"和下面的正常行分離處理, 兩者互不干擾, 那么需要兩個el-descriptions來生成:
先用一個大el-descriptions作為容器, 其中的兩個el-descriptions-item分別作為上下兩個分區(qū), 各傳入一個el-descriptions分別生成, 這樣上方的畸形行不會對下方解釋表產(chǎn)生格式影響.
<el-descriptions
:column="2"
border
labelstyle="text-align: center; width: 120px;"
contentStyle="text-align:center;"
>
<el-descriptions-item labelClassName="labelClass">
<el-descriptions
:column="3"
border
labelstyle="text-align: center; width: 120px;"
contentStyle="text-align:center;"
>
<el-descriptions-item contentStyle="display:none;">
<template slot="label">
label1
</template>
</el-descriptions-item>
<el-descriptions-item labelStyle="display:none;">
<el-input
readonly
:value="item.value"
style="width: 100%; text-align: center"
/>
</el-descriptions-item>
<el-descriptions-item labelStyle="display:none;">
<el-input
readonly
:value="item.value"
style="width: 100%; text-align: center"
/>
</el-descriptions-item>
</el-descriptions>
</el-descriptions-item>
<el-descriptions-item>
<el-descriptions>
<el-descriptions-item
v-for="(item, index) in tableHead"
:key="index"
labelclassName="labelClass"
>
<template slot="label">
{{ "label" + index }}
</template>
<el-input
readonly
:value="item.value"
style="width: 100%; text-align: center"
/>
</el-descriptions-item>
</el-descriptions>
</el-descriptions-item>
</el-descriptions>
表格局部空缺的問題解決了, 然而仍舊不能完全令人滿意, 雖然可以通過寬度調(diào)節(jié)達(dá)到效果, 但是label難以居中, 并且, 沒有了el-description本身的table規(guī)格, 這個表格的對齊方式并不穩(wěn)定, 最上層很容易和下層錯位:

二、解決方案
完美實(shí)現(xiàn), 對齊, 無錯位, 不干擾.
依賴span實(shí)現(xiàn), labelClassName只是顏色.
總體思路還是單獨(dú)處理el-description-item, 但使用了官方提供的屬性, 也是更加規(guī)范的方法.
column屬性規(guī)定的是一行幾個item, 注意一個完整的item在不加style的情況下是由label和content組成的一對橫向格子.span規(guī)定描述列表的列數(shù), 一列是由一個完整的item起頭, 注意一個完整的item在不加style的情況下是由label和content組成的一對橫向格子.

<el-descriptions
:column="2"
border
labelstyle="text-align: center; width: 120px;"
contentStyle="text-align:center;"
>
<el-descriptions-item
:span="2"
labelClassName="labelClass"
>
<template slot="label">
label
</template>
<el-input
readonly
:value="tableData.is"
/>
<el-input
readonly
:value="tableData.vn"
/>
</el-descriptions-item>
<el-descriptions-item
v-for="(item, index) in tableHead"
:key="index"
labelclassName="labelClass"
>
<template slot="label">
label
</template>
<el-input
readonly
:value="tableData[item.value]"
style="width: 100%; text-align: center"
/>
</el-descriptions-item>
</el-descriptions>
總結(jié)
到此這篇關(guān)于Vue2 Element description組件列合并的文章就介紹到這了,更多相關(guān)Vue2 Element description列合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果
這篇文章主要介紹了uni-app制作小程序?qū)崿F(xiàn)左右菜單聯(lián)動效果,實(shí)現(xiàn)步驟和思路都很簡單,今天通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11
基于electron+vue3+ts搭建桌面端應(yīng)用并且可以熱更新
這篇文章主要為大家詳細(xì)介紹了如何基于electron+vue3+ts搭建桌面端應(yīng)用并且可以熱更新,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考下2023-10-10
淺談Vue.js應(yīng)用的四種AJAX請求數(shù)據(jù)模式
本篇文章主要介紹了淺談Vue.js應(yīng)用的四種AJAX請求數(shù)據(jù)模式,本文將詳細(xì)介紹在Vue應(yīng)用程序中實(shí)現(xiàn)AJAX的四個方法,有興趣的可以了解一下2017-08-08
vue+js點(diǎn)擊箭頭實(shí)現(xiàn)圖片切換
這篇文章主要為大家詳細(xì)介紹了vue+js點(diǎn)擊箭頭實(shí)現(xiàn)圖片切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
vue?element-ui?Radio單選框默認(rèn)值選不中的原因:混用字符和數(shù)字問題
這篇文章主要介紹了vue?element-ui?Radio單選框默認(rèn)值選不中的原因:混用字符和數(shù)字問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

