解决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 相关文章推荐
调用js时ie6和ie7,ff的区别
Aug 19 Javascript
谈谈关于JavaScript 中的 MVC 模式
Apr 11 Javascript
处理文本部分内容的TextRange对象应用实例
Jul 29 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
JavaScript中判断两个字符串是否相等的方法
Jul 07 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
VuePress 静态网站生成方法步骤
Feb 14 Javascript
JavaScript canvas实现雪花随机动态飘落
Feb 08 Javascript
js实现查询商品案例
Jul 22 Javascript
javascript实现简单留言板案例
Feb 09 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
基于jquery的tab切换 js原理
2010/04/01 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
JS删除String里某个字符的方法
2021/01/06 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
商业街策划方案
2014/05/31 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
行政主管岗位职责
2015/02/03 职场文书
学雷锋日活动总结
2015/02/06 职场文书
趣味运动会简讯
2015/07/20 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python