解决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 相关文章推荐
jquery创建一个新的节点对象(自定义结构/内容)的好方法
Jan 21 Javascript
使用javascript过滤html的字符串(注释标记法)
Jul 08 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 Javascript
微信小程序 网络API 上传、下载详解
Nov 09 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 Javascript
jquery ajax 请求小技巧实例分析
Nov 11 jQuery
浅析JS中NEW的实现原理及重写
Feb 20 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读取msn上的用户信息类
2008/12/05 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
Django自定义认证方式用法示例
2017/06/23 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
python机器学习之随机森林(七)
2018/03/26 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
pymysql模块的操作实例
2019/12/17 Python
Python阶乘求和的代码详解
2020/02/14 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
教师演讲稿开场白
2014/08/25 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
中学音乐课教学反思
2016/02/18 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server