本文 Element-ui 版本 2.x
问题
如下所示,在 Element-ui 的表格组件中 \n 换行转义符并没有起作用。
tableData: [
{
number: '20160503', name: '王小虎', address: '2016-05-03' + '\n' + '武汉市江夏区文化大道'},
{
number: '20160504', name: '张小虎', address: '2019-05-04' + '\n' + '武汉市洪山区洪山侧路'},
{
number: '20160501', name: '李小虎', address: '2020-05-01' + '\n' + '南京市建邺区白龙江东街'},
{
number: '20160502', name: '宋小虎', address: '2021-05-02' + '\n' + '南京市江宁区水阁路'},
]
原因
通过查找属性,发现官方把 .cell 的 white-space 属性值设置成 normal 了。
关于 white-space 属性知识说明
定义和用法:whiteSpace 属性设置如何处理文本中的空白符(比如空格和换行符)。
语法:Object.style.whiteSpace=normal|nowrap|pre
值 | 描述 |
---|---|
normal | 默认。空白会被浏览器忽略 |
pre | 空白会被浏览器保留。其行为方式类似 HTML 中的 < pre > 标签。 |
nowrap | 文本不会换行,文本会在在同一行上继续,直到遇到 < br > 标签为止。 |
pre-wrap | 保留空白符序列,但是正常地进行换行。 |
pre-line | 合并空白符序列,但是保留换行符。 |
inherit | 规定应该从父元素继承 white-space 属性的值。 |
解决
把 .cell 的 white-space 属性值,通过样式穿透设置成 pre-line 就可以了。
完整代码
<template>
<div class="home">
<el-table :data="tableData" border style="width: 80%">
<el-table-column align="center" prop="number" label="编号" width="180"></el-table-column>
<el-table-column align="center" prop="name" label="姓名" width="180"></el-table-column>
<el-table-column align="center" prop="address" label="地址"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{
number: '20160503', name: '王小虎', address: '2016-05-03' + '\n' + '武汉市江夏区文化大道'},
{
number: '20160504', name: '张小虎', address: '2019-05-04' + '\n' + '武汉市洪山区洪山侧路'},
{
number: '20160501', name: '李小虎', address: '2020-05-01' + '\n' + '南京市建邺区白龙江东街'},
{
number: '20160502', name: '宋小虎', address: '2021-05-02' + '\n' + '南京市江宁区水阁路'},
]
}
}
}
</script>
<style lang="stylus" scoped>
.home{
::v-deep .el-table{
.cell {
white-space: pre-line;
}
}
}
</style>