背景:
在使用Antd的table组件时,由于表头参数过多,于是设置了scroll属性,在其超出一定宽度后进行滚动
但是在添加了该属性之后,经常会出现表头不对齐的问题:
针对该问题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 " > {{ 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组件表头不对齐的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?