我们在 Element 官网看到的表格默认样式大概是这样的:
默认的el-table
表格无边框
默认的el-table-column
行信息居左展示
默认的el-table-column
当内容过长也没有溢出和显示tooltip的效果
尤其是第三点的体验在用户使用时很不友好。
如果我们需要改成这样:
那我们需要给el-table和el-table-column添加相应的props:
<el-table border>
<el-table-column prop="xxx" label="xxx" align="center" show-overflow-tooltip />
<el-table-column prop="xxx" label="xxx" align="center" show-overflow-tooltip />
<el-table-column prop="xxx" label="xxx" align="center" show-overflow-tooltip />
<!-- ... -->
</el-table>
这样,每个使用el-table
和el-table-column
的地方,都需要添加相应的props
,这不仅会增加我们的工作量,也让代码显得很多余。
我们能否让每个组件的代码都简化成以下这样,并且仍然保留边框、居中和超出文本溢出的效果呢?
<el-table>
<el-table-column prop="xxx" label="xxx" />
<el-table-column prop="xxx" label="xxx" />
<el-table-column prop="xxx" label="xxx" />
<!-- ... -->
</el-table>
我们可以在导入Element UI / Plus组件的入口处,修改组件内部props
的默认值default
的值
在Vue2中
import Vue from 'vue'
import { Table, TableColumn } from 'element-ui'
// 获取组件的props
const TableProps = Table.props
const TableColumnProps = TableColumn.props
// 修改默认props
// 全局el-table设置
TableProps.border.default = true // 边框
// 全局el-table-column设置
TableColumnProps.align.default = 'center' // 居中
TableColumnProps.showOverflowTooltip.default = true // 文本溢出
Vue.use(Table)
Vue.use(TableColumn)
在Vue3中
import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import { ElTable, ElTableColumn } from 'element-plus'
const app = createApp(App)
// 获取组件的props
const TableProps = ElTable.props
const TableColumnProps = ElTableColumn.props
// 修改默认props
// 全局el-table设置
TableProps.border = { type: Boolean, default: true } // 边框线
// 全局el-table-column设置
TableColumnProps.align = { type: String, default: 'center' } // 居中
TableColumnProps.showOverflowTooltip = { type: Boolean, default: true } // 文本溢出
app.use(ElementPlus)
这样只需要在全局设置一次props
,就可以在每个组件中生效,这样就可以少写很多代码了。
同理也可以在全局设置其他组件的默认props
。
其它拓展
如何让表格在没有数据的情况下,显示 -- 呢 ?
在全局CSS中添加以下样式即可:
.el-table tbody td .cell span:empty::after {
content: '--'!important;
}
或
.el-table tbody td .cell:empty::after {
content: '--';
}
大家可以根据自身项目情况进行调整~
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}