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
}
}),
             /*
               把引入的组件插入进去。
               这里的promptmessage已经是自定义组件(标签),所以不需要加引号->"promptmessage",
               否则会报组件未注册的错误。
             */
                    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表头,修改列标题样式的更多相关文章

  1. element-ui自定义table表头,修改标题样式、添加tooltip及 :render-header使用简介

    修改列标题样式1.在列标题后面加一个图标. 以element-ui官方文档一个table表格为例,我们在地址的后面加一个定位标志的图标,代码如下: <template> <el-ta ...

  2. (Element UI 组件 Table)去除单元格底部的横线

    Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...

  3. DataTable 删除列 调整列顺序 修改列标题名称

    DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...

  4. element ui设置表格表头高度和每一行的高度

    填坑记录:今天用element ui的表格组件做用户信息展示,直接拉取的官网的代码过来,发现表头和每一行都太高了,如下: 因为第一次使用element ui的表格组件,不太清楚会遇到这样的坑,以为能轻 ...

  5. Joomla - 自定义(自定义模块、修改原有模块样式、添加全局JS)

    一.自定义模块 自定义模块 参考 Joomla - 模块系统(新建模块.模块类别.自定义模块)第三点 自定义模块部分 自定义模块布局 参考 Joomla - T3模板(非常好用的4屏响应式模板) 的第 ...

  6. 怎么样使element ui 的table某列变色

    第一步.在el-table里面加上:row-style="rowClass" <el-table :data="targetCarList" border ...

  7. element ui的table的头部自定义

    <el-table-column label="级别" min-width="120" prop="clueLevel" align= ...

  8. Element UI的Table用法

    Table 表格 用于展示多条结构类似的数据,可对数据进行排序.筛选.对比或其他自定义操作. ¶基础表格 基 2016-05-02 王小虎 上海市普陀区金沙江路 1518 弄 2016-05-04 王 ...

  9. element-ui自定义table表头

    场景描述: 这个需求的场景很简单,表头自定义居中显示 <el-table-column show-overflow-tooltip prop="telephone" labe ...

随机推荐

  1. [转]SURF算法解析

    SURF算法解析 一.积分图像    积分图像的概念是由Viola和Jones提出的.积分图像中任意一点(i,j)的值为原图像左上角到任意点(i,j)相应的对焦区域的灰度值的总和,其数学公式如图1所示 ...

  2. todo reading

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind https ...

  3. SqlServer动态变换库名

    declare @tname varchar(20),@num intset @tname='Players_Log_L10001'declare @sql Nvarchar(1000)=N'sele ...

  4. 根据业务自己设计的.NET工厂模式架构

    最近项目的架构需要做调整优化,根据业务需要写了一个简单的工厂模式架构 项目介绍:整个系统分为三大平台(这里用A,B,C来标示),每个平台又细分为多个APP客户端(每个APP都有appid来区分) 因为 ...

  5. vue开发基本步骤

    1      安装node.js 安装node.js之前,先进行nvm的安装: https://github.com/coreybutler/nvm-windows/releases最好选择稳定版本 ...

  6. HDU2149 - Public Sale【巴什博弈】

    虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯.  要种田得有田才行,Lele听说街上正在举行一场别开生面的拍卖 ...

  7. 训练1-S

    给出N个正整数,检测每个数是否为质数.如果是,输出"Yes",否则输出"No". Input 第1行:一个数N,表示正整数的数量.(1 <= N < ...

  8. sudo详细介绍

    目录参数所在/etc/sudoers 1.Host_Alias定义主机别名 例:Host_Alias   FILESERVERS = fs1,fs2 #注意“=”号两边要有空格隔开 ***由于现今li ...

  9. Python编程:从入门到实践 - matplotlib篇 - plot & scatter

    matplotlib篇 plot & scatter # filename.py 获取当前文件名方法 import sys # 当前文件名 print(sys.argv[0]) # 去除后缀后 ...

  10. BeanPostProcessor bean 的后置处理器

    一. 自定 bean 的后置处理器 MyBeanPostProcessor 类.当你在初始化容器中的 bean 之前和之后,都会调用该处理器中的方法 @Component //将该后后置处理器加入到容 ...