解决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的运行机制和设计理念分析
Apr 05 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
Oct 14 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
js实现简单进度条效果
Mar 25 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 Javascript
JS删除对象中某一属性案例详解
Sep 08 Javascript
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
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
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
4s店活动策划方案
2014/08/25 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书