element-ui自定义table表头,修改列标题样式
elementUI table表格一般的样式是这样的:

但是要改变表头是比较麻烦的一个事情,但是往往有些项目是需要的比如改成如下样式:

一般直接改起来挺麻烦,好在官网提供了一个方法:render-header
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| render-header | 列标题 Label 区域渲染使用的 Function | Function(h, { column, $index }) | — | — |
根据官方的方法来实现有两个方法:
方法一:vue的render函数来直接实现
<template>
<div>
<h2 align="center">自定义表头样式</h2>
<el-table :data="tableData" border stripe>
<el-table-column prop="name" label="姓名" align="center" :render-header="renderHeader">
</el-table-column>
<el-table-column prop="date" label="日期" align="center">
</el-table-column>
<el-table-column prop="address" label="地址" align="center">
</el-table-column>
</el-table>
</div>
</template> <script>
export default {
data() {
return {
tableData: [{
name: '王小虎',
date: '2016-05-02',
address: '上海市普陀区金沙江路 1518 弄'
}, {
name: '王老五',
date: '2016-05-04',
address: '上海市普陀区金沙江路 1517 弄'
}],
tableHeader: [{
prop: 'name',
label: '姓名'
}, {
prop: 'date',
label: '时间'
}, {
prop: 'address',
label: '地址'
}],
}
},
methods: {
renderHeader(h, {column, $index}) {
// 这里在最外层插入一个div标签
return h('div',[// h即为cerateElement的简写
// 在div里面插入span
h('span', {
// 表示内容
domProps:{
innerHTML:column.label
},
on: {
click: () => {
console.log(`${column.label} ${$index}`)
}
}
}),
h('el-tooltip',{
// 表示属性
attrs: {
effect: "dark",
content: "备注信息",
placement: "top"
},
},[
h("i", {
'class': 'el-icon-warning table-msg'
})
])
])
},
}
}
</script>
运行效果:

对上面方法还有需要改进的地方,有时候在自定义的时候内容过于复杂,这个时候可以把内容都放到组件里面,在引进来插入进去。例如:
<!-- 使用PromptMessage.vue的组件 自定义表头 -->
<template>
<el-tooltip effect="dark" placement="top">
<div slot="content">
<span v-for="item in messages" :key="item">
{{item}}
</span>
</div>
<i class="el-icon-question" style="color:#409eff;font-size:15px;"></i>
</el-tooltip>
</template>
<script>
export default {
name:'promptMessage',
props:['messages']
};
</script>
<style scope> </style>
<!-- 新建名为 PromptMessage.vue 的组件 -->
<template>
<div>
<h2 align="center">自定义表头样式</h2>
<el-table :data="tableData" border stripe>
<el-table-column prop="name" label="姓名" align="center" :render-header="renderHeader">
</el-table-column>
<el-table-column prop="date" label="日期" align="center" :render-header="renderHeaderTwo">
</el-table-column>
<el-table-column prop="address" label="地址" align="center">
</el-table-column>
</el-table>
</div>
</template> <script>
/*
局部引入组件,也可以全局引入,在main.js import promptmessage from '路径/PromptMessage.vue'
Vue.component('promptmessage', promptmessage)
*/
import promptmessage from './PromptMessage.vue'
export default {
data() {
return {
tableData: [{
name: '王小虎',
date: '2016-05-02',
address: '上海市普陀区金沙江路 1518 弄'
}, {
name: '王老五',
date: '2016-05-04',
address: '上海市普陀区金沙江路 1517 弄'
}],
tableHeader: [{
prop: 'name',
label: '姓名'
}, {
prop: 'date',
label: '时间'
}, {
prop: 'address',
label: '地址'
}],
}
},
methods: {
renderHeader(h, {column, $index}) {
// 这里在最外层插入一个div标签
return h('div',[// h即为cerateElement的简写
// 在div里面插入span
h('span', {
// 表示内容
domProps:{
innerHTML:column.label
},
on: {
click: () => {
console.log(`${column.label} ${$index}`)
}
}
}),
h('el-tooltip',{
// 表示属性
attrs: {
effect: "dark",
content: "备注信息",
placement: "top"
},
},[
h("i", {
'class': 'el-icon-warning table-msg'
})
])
])
},
renderHeaderTwo(h, {column, $index}) {
return h('div', [
h('span', {
domProps:{
innerHTML:column.label
}
}),
h(promptmessage, {
props: {messages: ["备注信息2"]},
style: {
'cursor': 'pointer',
}
})
])
},
}
}
</script>
效果图:注意promptmessage已经是自定义组件(标签),所以不需要加引号。

方法二:直接使用JSX语法,此方法最简单,但是必须安装编译插件

详细细心去官网看吧。
1. 先安装JSX语法编译工具:
npm install\
babel-plugin-syntax-jsx\
babel-plugin-transform-vue-jsx\
babel-helper-vue-jsx-merge-props\
babel-preset-es2015\
--save-dev
2. 配置.babelrc文件:
{
"presets": ["es2015"],
"plugins": ["transform-vue-jsx"]
}
3. 编写代码:
<template>
<div>
<h2 align="center">自定义表头样式</h2>
<el-table :data="tableData" border stripe>
<el-table-column prop="name" label="姓名" align="center" :render-header="renderHeader">
</el-table-column>
<el-table-column prop="date" label="日期" align="center">
</el-table-column>
<el-table-column prop="address" label="地址" align="center">
</el-table-column>
</el-table>
</div>
</template> <script>
export default {
data() {
return {
tableData: [{
name: '王小虎',
date: '2016-05-02',
address: '上海市普陀区金沙江路 1518 弄'
}, {
name: '王老五',
date: '2016-05-04',
address: '上海市普陀区金沙江路 1517 弄'
}],
tableHeader: [{
prop: 'name',
label: '姓名'
}, {
prop: 'date',
label: '时间'
}, {
prop: 'address',
label: '地址'
}],
mesHtml:'只是一个提示'
}
},
methods: {
renderHeader(h, {column, $index}) {
return(
<div>
<span>{column.label}</span>
<el-tooltip class="tooltip" effect="dark" placement="top">
<div slot="content">
<span onClick={this.handleClick}>{this.mesHtml}</span>
</div>
<i class="el-icon-question"></i>
</el-tooltip>
</div>
)
},
handleClick(){
alert('点击')
}
}
}
</script>
运行效果如下,具体jsx语法就不做多介绍了。

element-ui自定义table表头,修改列标题样式的更多相关文章
- element-ui自定义table表头,修改标题样式、添加tooltip及 :render-header使用简介
修改列标题样式1.在列标题后面加一个图标. 以element-ui官方文档一个table表格为例,我们在地址的后面加一个定位标志的图标,代码如下: <template> <el-ta ...
- (Element UI 组件 Table)去除单元格底部的横线
Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...
- DataTable 删除列 调整列顺序 修改列标题名称
DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...
- element ui设置表格表头高度和每一行的高度
填坑记录:今天用element ui的表格组件做用户信息展示,直接拉取的官网的代码过来,发现表头和每一行都太高了,如下: 因为第一次使用element ui的表格组件,不太清楚会遇到这样的坑,以为能轻 ...
- Joomla - 自定义(自定义模块、修改原有模块样式、添加全局JS)
一.自定义模块 自定义模块 参考 Joomla - 模块系统(新建模块.模块类别.自定义模块)第三点 自定义模块部分 自定义模块布局 参考 Joomla - T3模板(非常好用的4屏响应式模板) 的第 ...
- 怎么样使element ui 的table某列变色
第一步.在el-table里面加上:row-style="rowClass" <el-table :data="targetCarList" border ...
- element ui的table的头部自定义
<el-table-column label="级别" min-width="120" prop="clueLevel" align= ...
- Element UI的Table用法
Table 表格 用于展示多条结构类似的数据,可对数据进行排序.筛选.对比或其他自定义操作. ¶基础表格 基 2016-05-02 王小虎 上海市普陀区金沙江路 1518 弄 2016-05-04 王 ...
- element-ui自定义table表头
场景描述: 这个需求的场景很简单,表头自定义居中显示 <el-table-column show-overflow-tooltip prop="telephone" labe ...
随机推荐
- echarts 圆形图、柱状图
首先引入echarts的js包 <script type="text/javascript" src="js/esl.js"></script ...
- PostgreSQL的HA解决方案-2负载均衡(load balance)
一.部署说明 1.1 实施环境 本文档实验环境如下: PGSQL主机: 192.168.1.45 PGSQL备机: 192.168.1.50 软件和系统版本 Pgsql 版本: pgsql 9.2.4 ...
- 运行于Windows内建账户下的服务访问映射网络驱动器的方法
Windows服务如果是运行在本地系统帐户下或本地服务帐户下,它只能访问这个账户自己创建的映射驱动器,UNC路径访问则不受次限制. LocalService Account (NT AUTHORITY ...
- css—各浏览器下的背景色渐变
.linear{ width:100%; height:600px; FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0 ...
- 【Vue+Node】解决axois请求数据跨域问题
项目基于Vue前端+Node后台,启动两个服务,请求数据时,端口不一致造成跨域报错: (No 'Access-Control-Allow-Origin' header is present on th ...
- Discuz 3x 配置问题
1.注意config里面配置的路径 2.注意ucenter里面 的密钥要一直 3.IP 的选择
- NOIP 膜你题 DAY2
NOIp膜你题 Day2 duliu 出题人:ZAY 题解 这就是一道组合数问题鸭!!! 可是泥为什么没有推出式子!! 首先我们知道的是 m 盆花都要摆上,然后他们的顺序不定(主人公忘记 ...
- Linux系统下python代码运行shell命令的方法
方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os. ...
- Python GitHub上星星数量最多的项目
GitHub上星星数量最多的项目 """ most_popular.py 查看GitHub上获得星星最多的项目都是用什么语言写的 """ i ...
- 《你又怎么了我错了行了吧》【Alpha】Scrum meeting 3
第三天 日期:2019/6/16 前言: 第3次会议在女生宿舍召开 讨论了项目功能改进问题,继续代码完善和安排 1.1 今日完成任务情况以及明天任务安排 姓名 当前阶段任务 下一阶段任务 刘 佳 对已 ...