[element-ui] el-table行添加阴影悬浮效果

news/2024/10/22 16:36:40/

问题:

在el-table每一行获得焦点与鼠标经过时,显示一个整行的阴影悬浮效果

/*其中,table-row-checkd是我自定义的焦点行添加类名,大家可以自己起名*/
.el-table tbody tr:hover,.el-table tbody tr.table-row-checked{box-shadow: 0px 3px 10px 1px rgba(0,0,0,0.06)!important;
}

没有什么效果
原因: box-shadow对display:table-row元素是不起作用的

解决方案:

.el-table tbody tr.table-row-checked,.el-table tbody tr:hover{position:relative;background:#fff;
}
.el-table tbody tr.table-row-checked::after,.el-table tbody tr:hover::after{position:absolute;content:" ";width:100%;height:100%;left:0;background:transparent;box-shadow:0 3px 10px 1px rgba(0,0,0,0.1);
}

弊端
给el-table行加阴影的问题算是解决了,但是却导致表格内容无法操作

1、通常,项目设计中,el-table会带一些按钮,比如删除、编辑某行数据等要求。由于after将tr覆盖,这些按钮也会被覆盖
2、如果用到show-overflow-tooltip这个属性,同以上原理也会被遮挡操作

弊端解决
1、2解决:
对于需要点击等操作的列,就不能按以下这样的普通方式了:

<el-table-column prop="loginDate" label="登录时间"></el-table-column>

需要将内容用template重新包装

<el-table :row-class-name="rowChecked" @row-click="getRow" tooltip-effect="light">
<el-table-column label="登录时间" :show-overflow-tooltip="true"><template v-slot="scope"><span class="edit-tr" @click="toUserDetail(scope.row)">{{scope.row.loginDate}}</span></template>
</el-table-column>
</el-table>

附加解释:
①、:show-overflow-tooltip="true",如果el-tabletd的内容超长,则显示英文省略号,并且鼠标移入该单元格弹出气泡,气泡中显示单元格内容;
②、tooltip-effect="light",设置弹出气泡的风格,默认dark(黑色气泡)。这里设置light会将气泡背景变为白色
③、如果el-table-column内用到<template v-slot=scope>,并在template中处理数据,那么在<el-table-column>标签内写不写prop都不会有影响

.edit-tr{position:relative;/*重点*/z-index:2;/*重点*/width:100%;overflow:hidden;text-overflow:ellipsis;
}

优化:
每行左右两边的阴影被遮挡,毕竟tr有tbody\table等父元素,被遮挡没有直接的解决办法。

但是,由于新添加的伪元素使用定位,实现左右阴影是可以的。
以下重写对新增after的样式

.el-table tbody tr.table-row-checked::after,.el-table tbody tr:hover::after{position:absolute;content:" ";width:calc(100% - 6px);/*改动处*/height:100%;left:3px;/*改动处*/background:transparent;box-shadow:0 3px 10px 1px rgba(0,0,0,0.1);
}

解释:
将after宽度预留出左+右阴影区域宽度,并向左偏移一点距离,这样就能将原先遮挡的左右阴影显示出来(设计图对el-table行左右两端无border情况下效果更佳)
建议:
我的项目中,对tr上下有border,左右无border,本来想把上下的阴影也放到tr内,但发现上下在border影响下视觉会有一种上下内阴影的效果,所以after的高度还采用和tr高度一致,仅对左右进行处理。
如果你的tr上下左右都有border,这种情况下,四边做内阴影突出焦点行是一种不错的选择。



参考:

el-table行添加阴影悬浮效果


http://www.ppmy.cn/news/39316.html

相关文章

AI大模型已经出现不可预测的能力

编者按&#xff1a;日前&#xff0c;非盈利组织生命未来研究所发布了一封《暂停大型人工智能研究》的公开信&#xff0c;马斯克等千名科技人士进行了签名。虽然部分签署人的真实性存疑&#xff0c;但是大型语言模型&#xff08;LLMs&#xff09;的“涌现”能力确实可能会导致突…

【MATLAB】matlab遗传算法工具使用

目录 matlab遗传算法工具使用 matlab遗传算法工具使用 % matlab遗传算法工具使用 %学习测试求解 f x*sin(y)y*sin(x) 在x,y属于0-10之间的最大值% ga,gaoptimset为核心函数 %使用工具箱&#xff0c;能够操作的最多的为适应度函数&#xff0c;这也是我们平常能用到的最多的 %…

DFT计算基本要素(2)-截断能、赝势

目录 1截断能 2赝势 3平面波基组&#xff0c;截断能&#xff0c;G展开 1截断能 布洛赫理论告诉我们&#xff1a;对于超晶胞薛定谔方程的解&#xff0c;具有如下形式&#xff0c;即&#xff1a; &#xff08;1&#xff09; 式中&#xff1a;在空间中具有周期&#xff0c;并…

本人的学车历程

2023.4.6这是本人第591天了&#xff0c;想通过这次的此篇文章记录我的学车经历&#xff0c;以及怎么才能做成一件事。 2021.9—2022.10用了一年的时间才把科目一拿下。 2023/3&#xff5e;4月 科二练了4次&#xff0c;学了侧方停车和倒车入库。 2023.4.5本来想学S弯&#xf…

ROS入门教程(二) 用C++ 实现Hello world

代码在git link Hello world实现流程 无论是C还是Python其他编程语言&#xff0c;实现流程都是大同小异&#xff1a; 创建工作空间 → 创建功能包 → 编辑源文件 → 编辑配置文件 → 编译并执行 step1.创建工作空间 CtrlAltT打开终端分别输入&#xff1a;【在主目录下创建工…

最佳实践:千巡翼Q30+机载LiDAR在水域三维数据采集中的应用

机载LiDAR是近年来兴起的获取高精度地理信息数据的重要手段&#xff0c;具有成果精度高、数据生成快、植被穿透强等特点&#xff0c;日益受到作业单位的青睐。2022年7月份&#xff0c;千寻位置数字网格合作伙伴携千巡翼Q30复合翼无人机、QX-1845R机载LiDAR赴山东泰安某流域进行…

HTML5 <form> 标签

HTML5 <form> 标签 实例 带有两个输入字段和一个提交按钮的 HTML 表单&#xff1a; <form action"demo_form.php" method"get">First name: <input type"text" name"fname"><br>Last name: <input type&qu…

C++ Primer第五版_第十一章习题答案(11~20)

文章目录练习11.11练习11.12练习11.13练习11.14练习11.15练习11.16练习11.17练习11.18练习11.19练习11.20练习11.11 不使用decltype 重新定义 bookstore。 using Less bool (*)(Sales_data const&, Sales_data const&); std::multiset<Sales_data, Less> bookst…