Antd表格滾動 寬度自適應(yīng) 不換行的實例
我就廢話不多說了,大家還是直接看代碼吧~
<Table
className={styles.table}
rowKey={(record) => record.key}
columns={columns}
dataSource={dataSource}
scroll={{ x: 'max-content' }} // 加上這條 橫向滾動 支持此屬性的瀏覽器內(nèi)容就不會換行了
pagination={false}
/>
styles.less
.table {
:global {
.ant-table-thead > tr > th {
background: #fff !important;
white-space: nowrap; // 防止IE等瀏覽器不支持'max-content'屬性 導(dǎo)致內(nèi)容換行
}
.ant-table-tbody >tr> td {
white-space: nowrap; // 防止IE等瀏覽器不支持'max-content'屬性 導(dǎo)致內(nèi)容換行
}
}
}
或者可以這樣設(shè)置
<Table
pagination={false}
rowKey={record => record.key}
dataSource={projectList}
columns={this.columns.map(item => { // 通過配置 給每個單元格添加不換行屬性
const fun = () => ({ style: { whiteSpace: 'nowrap' } });
item.onHeaderCell = fun;
item.onCell = fun;
return item;
})}
loading={getting}
scroll={{ x: 'max-content' }}
// onHeaderCell={() => ({ style: { whiteSpace: 'nowrap' } })}
// onCell={() => ({ style: { whiteSpace: 'nowrap' } })}
// 文檔里說可以這么寫 但是我寫了無效 不知道原因
/>
補充知識:解決ant design vue中table表格內(nèi)容溢出后,設(shè)置的width失效問題,超出的字用省略號代替
style.css
通過設(shè)置css樣式,可實現(xiàn)溢出內(nèi)容以…代替,其中max-width的設(shè)置很重要,必須有
/*統(tǒng)一table表格的尺寸*/
.ant-table{
table-layout: fixed;
}
.ant-table-tbody > tr > td {
max-width: 200px;
min-width: 70px;
border-bottom: 0;
/*text-align: center !important;*/
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
word-break: break-all;
}
如果想要實現(xiàn)當(dāng)鼠標光標滑過時,即可顯示出被隱藏內(nèi)容的效果,可采用如下方式
實例
<template>
<a-card class="j-address-list-right-card-box" :bordered="false">
<div>
<p style="font-size: 13px">部分模塊用例信息已成功導(dǎo)入,其余模塊用例正在導(dǎo)入中...</p>
<a-collapse v-model="activeKey">
<a-collapse-panel header="搜索用例" key="1">
<search-cases-form :modulePath="modulePath" :productName="productName" @childSearchResult="childSearchResult"/>
</a-collapse-panel>
</a-collapse>
</div>
<br>
<div style="margin-bottom: 16px; text-align: left">
<a-button type="primary" @click="handleAddCase" icon="plus">添加</a-button>
<AddCase ref="addCaseObj" @childCaseForm="childCaseForm"/>
<upload-basic/>
</div>
<a-table
:columns="columns"
:dataSource="data"
showHeader
:pagination="ipagination"
@change="handleTableChange"
:scroll="{ x: 1300 }"
rowKey="id">
<div :title="record.preCondition" :style="{maxWidth: '100px',whiteSpace: 'nowrap',textOverflow: 'ellipsis',overflow: 'hidden', wordWrap: 'break-word', wordBreak: 'break-all' }" slot="preCondition" slot-scope="text, record">
{{record.preCondition}}
</div>
<span slot="priority" slot-scope="priority">
<a-tag :color="priority==='P1' ? 'volcano' : (priority==='P2' ? 'geekblue' : (priority==='P3' ? 'green' : 'blue'))" :key="priority">{{priority}}</a-tag>
</span>
<div slot="expandedRowRender" slot-scope="record" style="width: 100%">
<h3>前置條件</h3>
<a-textarea :value="record.preCondition" style="height: auto" :rows="4"></a-textarea>
<h3/>
<h3>用例步驟</h3>
<a-table :columns="stepColumns" :dataSource="record.steps" rowKey="number === null ? currTime : number"></a-table>
</div>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="handleEditCase(text, record)">編輯</a>
<EditCase ref="editCaseObj" @childCaseForm="childCaseForm"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="handleCopyCase(text, record)">復(fù)制</a>
<CopyCase ref="copyCaseObj" @childCaseForm="childCaseForm"/>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="delCase(record.id)">刪除</a>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</a-card>
</template>
<script>
import Bus from '../../../../utils/testcenter/bus/bus.js'
import AddCase from '../case_management_add_case/AddCase.vue'
import EditCase from '../case_management_edit_case/EditCase.vue'
import CopyCase from '../case_management_copy_case/CopyCase'
import SearchCasesForm from '../case_management_search_cases_form/SearchCasesForm'
import UploadBasic from '../case_management_upload_basic/UploadBasic'
import ATextarea from 'ant-design-vue/es/input/TextArea'
import { getProductNameAndModulesRange, findAllByModuleId, delManualCaseByCaseId, findAllStepsOfOneCaseByManualCaseId } from '../../../../utils/testcenter/api'
const columns = [
{
title: 'ID',
dataIndex: 'id',
key: 'id',
width: '5%'
},
{
title: '版本號',
dataIndex: 'version',
key: 'version',
width: '5%'
},
{
title: '優(yōu)先級',
dataIndex: 'priority',
key: 'priority',
width: '5%',
scopedSlots: { customRender: 'priority' }
},
{
title: '用例標題',
key: 'title',
dataIndex: 'title',
width: '15%'
},
{
title: '前置條件',
dataIndex: 'preCondition',
key: 'preCondition',
width: '15%',
scopedSlots: { customRender: 'preCondition' }
},
{
title: '關(guān)聯(lián)需求',
dataIndex: 'relatedRequirementsSummary',
key: 'relatedRequirementsSummary',
width: '10%'
},
{
title: '編寫人',
dataIndex: 'creater',
key: 'creater',
width: '10%'
},
{
title: '編寫時間',
dataIndex: 'createDateTime',
key: 'createDateTime',
width: '15%'
},
{
title: '自動化',
dataIndex: 'auto',
key: 'auto',
width: '5%'
},
{
title: '用例類型',
dataIndex: 'type',
key: 'type',
width: '5%'
},
{
title: '操作',
key: 'action',
scopedSlots: { customRender: 'action' },
width: '10%'
// fixed: 'right'
}
]
const stepColumns = [
{
title: '編號',
dataIndex: 'number',
key: 'number',
width: '10%'
},
{
title: '步驟',
dataIndex: 'description',
key: 'description',
scopedSlots: { customRender: 'description' }
},
{
title: '預(yù)期',
dataIndex: 'expect',
key: 'expect',
scopedSlots: { customRender: 'expect' }
}
]
export default {
name: 'CasesInfosPageTable',
components: {ATextarea, UploadBasic, SearchCasesForm, CopyCase, AddCase, EditCase},
data () {
return {
data: [],
stepData: [],
ipagination: {
defaultPageSize: 50,
total: 0,
showTotal: total => `共 ${total} 條數(shù)據(jù)`,
showSizeChanger: true,
pageSizeOptions: ['10', '30', '50', '100'],
// eslint-disable-next-line no-return-assign
onShowSizeChange: (current, pageSize) => this.pageSize = pageSize
},
moduleId: -1,
moduleName: '',
modulePath: '',
productId: -1,
productName: '',
page: 1,
limit: 50,
columns,
stepColumns,
visible: false,
activeKey: ['2'],
currTime: ''
}
},
mounted () {
var obj = new Date()
this.currTime = obj.getSeconds() + obj.getMilliseconds()
var _this = this
Bus.$on('val', (data1, data2, data3) => {
console.log('從TreeSearch組件傳遞過來的data1=' + data1 + ' data2=' + data2 + ' data3=' + data3)
_this.moduleId = data2
_this.productId = data1
_this.moduleName = data3
_this.getCasesByModuleID()
_this.getProductNameAndModulePath()
})
},
methods: {
getProductNameAndModulePath () {
getProductNameAndModulesRange({product_id: this.productId, module_id: this.moduleId, module_name: this.moduleName}).then((res) => {
console.log('getProductNameAndModulePath: ' + JSON.stringify(res.data))
this.productName = res.data.productName
this.modulePath = res.data.modulesPath
})
},
getCasesByModuleID () {
findAllByModuleId({page: this.page, limit: this.limit, module_id: this.moduleId}).then((res) => {
const pagination = {...this.ipagination}
pagination.total = res.data.count
console.log('某個模塊下手工用例的全部信息:' + JSON.stringify(res.data.data))
this.data = res.data.data
this.ipagination = pagination
})
},
handleTableChange (pagination, filters, sorter) {
console.log('111 ', pagination, filters, sorter)
this.ipagination.current = pagination.current
this.ipagination.pageSize = pagination.pageSize
this.page = pagination.current
this.limit = pagination.pageSize
this.getCasesByModuleID()
},
delCase (id) {
console.log('即將被刪除的用例id:' + id)
delManualCaseByCaseId({manualcase_id: id}).then((res) => {
console.log('刪除用例結(jié)果:' + res.data)
this.getCasesByModuleID()
})
},
handleAddCase () {
this.$refs.addCaseObj.visible = true
this.$refs.addCaseObj.productName = this.productName
this.$refs.addCaseObj.modulePath = this.modulePath
this.$refs.addCaseObj.moduleId = this.moduleId
this.$refs.addCaseObj.getProductListByCurrentProduct()
this.$refs.addCaseObj.getModuleListByCurrentProduct()
this.$refs.addCaseObj.getVersionListByCurrentProduct()
},
handleEditCase (text, record) {
console.log('text: ' + JSON.stringify(text))
console.log('record: ' + JSON.stringify(record))
this.$refs.editCaseObj.visible = true
this.$refs.editCaseObj.productName = this.productName
this.$refs.editCaseObj.modulePath = this.modulePath
this.$refs.editCaseObj.moduleId = this.moduleId
this.$refs.editCaseObj.rowRecord = record
this.$refs.editCaseObj.getProductListByCurrentProduct()
this.$refs.editCaseObj.getModuleListByCurrentProduct()
this.$refs.editCaseObj.getVersionListByCurrentProduct()
this.$refs.editCaseObj.getAllStepsByManualCaseId()
this.$refs.editCaseObj.showDrawer()
this.getCasesByModuleID()
},
handleCopyCase (text, record) {
console.log('text: ' + JSON.stringify(text))
console.log('record: ' + JSON.stringify(record))
this.$refs.copyCaseObj.visible = true
this.$refs.copyCaseObj.productName = this.productName
this.$refs.copyCaseObj.modulePath = this.modulePath
this.$refs.copyCaseObj.moduleId = this.moduleId
this.$refs.copyCaseObj.rowRecord = record
this.$refs.copyCaseObj.getProductListByCurrentProduct()
this.$refs.copyCaseObj.getModuleListByCurrentProduct()
this.$refs.copyCaseObj.getVersionListByCurrentProduct()
this.$refs.copyCaseObj.getAllStepsByManualCaseId()
this.$refs.copyCaseObj.showDrawer()
},
getAllStepsByManualCaseId (record) {
console.log('diaoyong111;' + record)
findAllStepsOfOneCaseByManualCaseId({manualcase_id: record.id}).then((res) => {
console.log('用例步驟:' + JSON.stringify(res.data))
this.stepData = res.data.data
})
},
childSearchResult (caseData) {
this.data = caseData
},
childCaseForm (flag) {
if (flag) {
console.log('用例表格頁')
this.getCasesByModuleID()
}
}
}
}
</script>
<style>
</style>
其中,這段代碼便是實現(xiàn)此功能的核心,title值便是指被隱藏的內(nèi)容
<div :title="record.preCondition" :style="{maxWidth: '100px',whiteSpace: 'nowrap',textOverflow: 'ellipsis',overflow: 'hidden', wordWrap: 'break-word', wordBreak: 'break-all' }" slot="preCondition" slot-scope="text, record">
另一個思路是設(shè)置每個單元格的min-width, 不過我的項目中的內(nèi)容是最好不要換行的
以上這篇Antd表格滾動 寬度自適應(yīng) 不換行的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解VScode編輯器vue環(huán)境搭建所遇問題解決方案
這篇文章主要介紹了VScode編輯器vue環(huán)境搭建所遇問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Vue2.0結(jié)合webuploader實現(xiàn)文件分片上傳功能
這篇文章主要介紹了Vue2.0結(jié)合webuploader實現(xiàn)文件分片上傳功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-03-03

