解决Antd Table组件表头不对齐的问题


Posted in Javascript onOctober 27, 2020

背景:

在使用Antd的table组件时,由于表头参数过多,于是设置了scroll属性,在其超出一定宽度后进行滚动

解决Antd Table组件表头不对齐的问题

但是在添加了该属性之后,经常会出现表头不对齐的问题:

解决Antd Table组件表头不对齐的问题

针对该问题Google 了一下解决方案,但大多不是很完善,为解决问题。现整理下完整的解决方案:

1、对表格的每一行 【columns】设置width属性(留出一行进行宽度自适应);

2、scroll属性中的x选择一个合适的值(或者直接设为 max-content);

如果以上两步仍解决不了对齐问题的话,请继续第三步操作

3、对table的每一个td 添加 className=“word-wrap”,并设置对应样式

(因为td内部的内容在出现连续字母或数字的时候不会主动换行),导致td内部宽度撑开,与th宽度不一致

.word-wrap {
 word-break: break-all;
}

以上操作完成之后可能还是有问题(请检查下是不是表头中内容的宽度默认被撑开了),然后重新调整下column中的width即可

近期在开发的过程中,另发现了一种非常有效得解决方案,特与大家分享:

在对columns的每一项设置了宽度后,如果还是有错位问题的话,可以尝试在columns的末位push一个空的column进行占位,这个空的column不用设置宽度,任其自适应。

注意:该column的title需要设置为空字符串,避免在界面上将其渲染出来

补充知识:vue实现超过两行显示展开收起

基于vue-cli2,sass,vant(ui组件):https://youzan.github.io/vant/#/zh-CN/home

具体代码如下:

<template>
 <div>
  <div class="group">
   <div class="text more" ref="more">
    占位
   </div>
   <div class="list" v-for="(item, index) in historyList" :key="index">
    <van-row>
     <van-col span="12">{{ item.version }}</van-col>
     <van-col class="t_right l_text" span="12">{{ item.time }}</van-col>
    </van-row>
    <div class="l_title">{{ item.title }}</div>
    <div
     class="text"
     ref="textContainer"
     :class="{ retract: item.status }"
     :style="{ 'max-height': item.status ? textHeight : '' }"
    >
     {{ item.content }}
    </div>
    <span
     v-if="item.status !== null"
     class="link"
     @click="more(index)"
     >{{ item.status ? "展开" : "收起" }}</span
    >
   </div>
  </div>
 </div>
</template>
<script>
export default {
 data () {
  return {
   textHeight: '',
   historyList: [
    {
     version: '7.1.4',
     title: '本次更新',
     content:
      '-听模块新增“文章难度分析”功能~,为你分析文章中词汇、语速等难度,推荐;-听模块新增“文章难度分析”功能~,为你分析文章中词汇、语速等难度,推荐',
     time: '2周前'
    },
    {
     version: '7.1.4',
     title: '本次更新',
     content:
      '-听模块新增“文章难度分析”功能~,为你分析文章中词汇、语速等难度,推荐',
     time: '5周前'
    },
    {
     version: '7.1.4',
     title: '本次更新',
     content:
      '-听模块新增“文章难度分析”功能~,为你分析文章中词汇、语速等难度,推荐;-听模块新增“文章难度分析”功能~,为你分析文章中词汇、语速等难度,推荐',
     time: '6周前'
    },
    {
     version: '7.1.4',
     title: '本次更新',
     content:
      '-听模块新增“文章难度分析”功能~,为你分析文章中词汇、语速等难度,推荐',
     time: '9周前'
    }
   ]
  }
 },
 mounted () {
  this.historyList.forEach((ele, index) => {
   this.$set(
    this.historyList,
    index,
    Object.assign({}, ele, { status: null })
   )
  })
  // DOM 加载完执行
  this.$nextTick(() => {
   this.calculateText()
   //console.log(this.historyList)
  })
 
  window.onresize = () => {
   this.historyList.forEach((ele, index) => {
    this.$set(
     this.historyList,
     index,
     Object.assign({}, ele, { status: null })
    )
   })
   setTimeout(() => {
    this.calculateText()
   }, 0)
  }
 },
 methods: {
  // 计算文字 显示展开 收起
  calculateText () {
   // 获取一行文字的height 计算当前文字比较列表文字
   let oneHeight = this.$refs.more.scrollHeight
   let twoHeight = oneHeight * 2 || 40
   this.textHeight = `${twoHeight}px`
   let txtDom = this.$refs.textContainer
   for (let i = 0; i < txtDom.length; i++) {
    let curHeight = txtDom[i].offsetHeight
    if (curHeight > twoHeight) {
     this.$set(
      this.historyList,
      i,
      Object.assign({}, this.historyList[i], { status: true })
     )
    } else {
     this.$set(
      this.historyList,
      i,
      Object.assign({}, this.historyList[i], { status: null })
     )
    }
   }
  },
  more (index) {
   this.historyList[index].status = !this.historyList[index].status
  }
 }
}
</script>
<style lang="scss" scoped>
.group {
 .list {
  padding: 5px 0;
  border-bottom: 1px solid #eaeaea;
 }
 .text {
  position: relative;
  color: #000;
  font-size: 14px;
 }
 .more {
  visibility: hidden;
 }
 .link {
  font-size: 12px;
  color: #2d95fe;
 }
 .retract {
  position: relative;
  overflow: hidden;
 }
 
 .retract:after {
  content: "...";
  position: absolute;
  bottom: 0;
  right: 2px;
  width: 25px;
  padding-left: 25px;
  background: linear-gradient(to right, transparent, #fff 45%);
 }
}
</style>

以上这篇解决Antd Table组件表头不对齐的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
JQuery 网站换肤功能实现代码
Nov 02 Javascript
文本框获得焦点和失去焦点的判断代码
Mar 18 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
Dec 24 Javascript
js实现动态改变字体大小代码
Jan 02 Javascript
js 获取时间间隔实现代码
May 12 Javascript
js从外部获取图片的实现方法
Aug 05 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
在微信小程序里使用watch和computed的方法
Aug 02 Javascript
element tree树形组件回显数据问题解决
Aug 14 Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 #Javascript
js实现简易ATM功能
Oct 27 #Javascript
Antd的table组件表格的序号自增操作
Oct 27 #Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 #Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 #Javascript
ant-design表单处理和常用方法及自定义验证操作
Oct 27 #Javascript
ant design 日期格式化的实现
Oct 27 #Javascript
You might like
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
2013/06/05 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Numpy中的mask的使用
2018/07/21 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
异常和异常类的概念
2014/09/12 面试题
诚信考试承诺书
2014/03/27 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
怎样写观后感
2015/06/19 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
golang为什么要统一错误处理
2022/04/03 Golang