头图

image.png
代码:

<el-table :data="dataList" style="width: 100%" border height="600px" v-loading="loading" @selection-change="handleSelection">
    <el-table-column type="selection" width="55"> </el-table-column>
    <el-table-column v-for="item in displayColumns" :key="Math.random()" :prop="item.prop" :label="item.label" align="center"
     min-width="200px" show-overflow-tooltip>
    </el-table-column>
  <!-- 插槽 -->
    <slot name="operation"></slot>
</el-table>
<template v-slot:operation>
    <div>
        <el-table-column label="操作" align="center" fixed="right" width="250">
            <template slot-scope="scope">
                <el-button size="mini" type="text" icon="el-icon-edit" @click="viewdetail(scope.row)">详情</el-button>
            </template>
        </el-table-column>
    </div>
</template>

上图的代码会造成操作栏错乱,其实造成错乱的根本原因是因为设置了fixed="right" ,但是这个属性在操作栏上又是必不可少的,所以只能从其它方面找问题。

这种错乱有一个规律,窗口大小变化后,错乱消失,也就是说el-table没有获取到合适的高度,导致的列错乱。
在上面代码中,有一行 :height="600px" 这个才是造成错乱列错乱的原因。

<el-table :data="dataList"  height="600px" >

应为列表没有获取到正确的高度,vh单位同样如此,它会导致列错乱,所以更改成流式高度即可解决

<el-table :data="dataList"  max-height="600px" >

流式高度不会默认设置高度,它只会给列表高度设限,所以在初始化的时候,由于列表的高度并没有设置,所以它会按照自身的高度排列。
max-height="600px" 也可以使用 60vh,但是最好以px为单位,否则在部分场景下vh单位会导致列表无法滚动。
image.png


兔子先森
399 声望17 粉丝

致力于新技术的推广与优秀技术的普及。