饿了么的表头筛选样式比较简单,如图1,产品觉得不够醒目(觉得用户可能不知道这是筛选,我表示不理解)
要求改进筛选的样式,达到图2的效果,主要是状态列,既希望这列的宽度固定,不会随着过长的筛选项被撑开,还要在筛选项内容比宽度长时,只保留第一个字,其余用省略号代替。记录一下这个麻烦的要求




el-table有个属性,可以绑定一个方法:header-cell-class-name="getCellBorder"
- getCellBorder(data) {
- if (data.column.filterable) {
- if (data.columnIndex === 1) {
- //索引为1,代表是状态列,此列宽度固定,有文字过长的处理
- //箭头用定位处理,不然显示会有问题
- return 'el-cell-border-status'
- } else {
- return 'el-cell-border' //普通列,宽度自适应
- }
- }
- }
- .el-table th.el-cell-border > .cell {
- width: auto;
- border: 1px solid #ddd;
- border-radius: 6px;
- cursor: pointer;
- &:hover {
- border-color: #17b8bc;
- }
- }
- .el-table th.el-cell-border-status > .cell {
- width: 55px;
- height: 36px;
- line-height: 36px;
- text-align: left;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- -webkit-line-clamp: 1;
- border: 1px solid #ddd;
- border-radius: 6px;
- position: relative;
- cursor: pointer;
- &:hover {
- border-color: #17b8bc;
- }
- .el-table__column-filter-trigger {
- position: absolute;
- right: 5px;
- top: 1px;
- }
- }