Vue3 Element-Plus el-table嵌套el-image查看大图导致CSS样式错乱的问题(如表格的内容显示在了图片上层)的解决办法 - 附代码

效果

错乱效果(表格的时间列显示在图片上方)

正确效果

问题

        Vue3中使用Element-Plus的el-table嵌套el-image查看大图导致CSS样式错乱

版本

"element-plus": "2.5.5",

解决办法

       1、 办法一:设置CSS样式,直接继承父元素 z-index 属性的值

​
.el-table .el-table__cell {
  z-index: inherit;
}

​

        tips:如果不生效参照以下代码

:deep() .el-table .el-table__cell {
  z-index: inherit !important;
}

        2、办法二: 在  el-image 上添加属性 preview-teleported="true" (推荐)

<el-table-column prop="imageUrl" label="图片">
  <template #default="scope">
	<el-image
	  :src="scope.row.imageUrl"
	  :zoom-rate="1.2"
	  :max-scale="7"
	  :min-scale="0.2"
	  :preview-src-list="[scope.row.imageUrl]"
	  :initial-index="0"
	  :preview-teleported="true"
	  fit="contain"
	/>
  </template>
</el-table-column>

文档地址:

https://element-plus.org/zh-CN/component/image.html

Table 表格 | Element Plus

  欢迎扫描下方二维码关注VX公众号

Vue3中使用Element Plus的el-table组件实现树形表格,并且希望在选中所有子节点时自动选中父节点,可以通过监听表格的选中状态变化,并结合树形数据的结构特点来实现。具体步骤如下: 1. 使用`v-model`绑定表格的选中行数据数组。 2. 通过计算属性或方法获取到所有的子节点。 3. 监听选中行数据的变化,当发现有子节点被选中时,遍历并检查其父节点是否已经在选中状态中,如果不是,则将其加入到选中数组中。 以下是一个简单的示例代码: ```html <template> <el-table :data="tableData" style="width: 100%" row-key="id" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-model="checkedRowKeys" > <el-table-column type="selection" width="55"> </el-table-column> <!-- 其他列 --> </el-table> </template> <script> import { ref, computed } from 'vue'; export default { setup() { const tableData = ref([...]); // 填充你的树形数据 const checkedRowKeys = ref([]); // 递归获取所有子节点 const getChildren = (data, childrenKey) => { return data.reduce((acc, item) => { const children = item[childrenKey]; if (children && children.length > 0) { acc = [...acc, ...getChildren(children, childrenKey)]; } acc.push(item); return acc; }, []); }; // 监听选中状态变化 const handleSelectionChange = (val) => { const childrenKeys = tableData.value.reduce((acc, item) => { const children = item.children; if (children && children.length > 0) { const childKeys = getChildren(children, 'children').map(child => child.id); acc = [...acc, ...childKeys]; } return acc; }, []); // 移除不需要的父节点 const filteredCheckedRowKeys = val.filter(key => !childrenKeys.includes(key)); // 添加选中的子节点对应的父节点 tableData.value.forEach((node) => { if (node.children && node.children.some(child => val.includes(child.id))) { filteredCheckedRowKeys.push(node.id); } }); checkedRowKeys.value = filteredCheckedRowKeys; }; return { tableData, checkedRowKeys, handleSelectionChange, }; }, }; </script> ``` 在上面的代码中,`tableData` 是包含树形数据的数组,`checkedRowKeys` 是用于绑定当前选中行的数组。`handleSelectionChange` 方法会在表格的选中状态变化时被调用,它会处理子节点选中时父节点的选中状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值