jq之$(“tr:odd“).css(“background-color“,“red“);

这篇博客展示了如何使用jQuery选择器`tr:odd`和`css()`方法来给HTML表格的奇数行设置红色背景。通过在文档加载完成后绑定点击事件到按钮,当点击按钮时,所有奇数行的表格行将变为红色。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jq之demo</title>
    <!--线上jq库-->
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script>
        $(document).ready(function(){
            $("button").click(function(){
                /*$("tr:odd")奇数位置的tr元素*/
                $("tr:odd").css("background-color","red");
            });
        });
    </script>
</head>
<body>
<h1>主页</h1>
<table border="1">
    <tr>
        <th>网站名</th>
        <th>网址</th>
    </tr>
    <tr>
        <td>百度</td>
        <td>https://www.baidu.com/?tn=40020637_4_oem_dg</td>
    </tr>
    <tr>
        <td>b站</td>
        <td>https://www.bilibili.com/</td>
    </tr>
    <tr>
        <td>csdn</td>
        <td><a href="https://blog.youkuaiyun.com/wanggang182007">无名csdn</a></td>
    </tr>
    <tr>
        <td>github</td>
        <td>https://github.com/trending/java?since=monthly</td>
    </tr>
    <tr>
        <td>gitee</td>
        <td>https://search.gitee.com/?skin=rec&type=repository&q=%E7%94%B5%E5%95%86</td>
    </tr>
</table>
<button>点我<button/>
</body>
</html>
在这段代码中,`:deep(.el-table th.el-table__cell) { ... }` 及其后续一系列以 `:deep()` 包裹的 CSS 样式规则的主要功能是**深度穿透 Vue 的 scoped 样式封装机制,对 Element Plus 的 `<el-table>` 组件内部的 DOM 元素进行自定义样式覆盖和美化**。以下是对其具体作用和功能的详细分析: --- ### 1. **背景说明:scoped 与组件样式隔离** 在 Vue 单文件组件(SFC)中使用 `scoped` 属性时,CSS 样式会被编译为仅作用于当前组件的局部样式,防止样式污染。但这也导致无法直接修改第三方组件库(如 Element Plus)内部结构的样式。 而 `<el-table>` 是一个复杂嵌套组件,其表头、单元格等元素位于组件内部,普通 CSS 选择器无法穿透作用到这些深层节点。 --- ### 2. **`:deep()` 的作用** - `:deep(...)` 是 Vue 提供的一种 **CSS 深度选择器(deep selector)**,用于在 `scoped` 样式中“穿透”子组件的封装边界,将样式应用到子组件内部的元素上。 - 它告诉 Vue 编译器:即使这些样式写在当前组件中,也要把它们注入到目标子组件的内部 DOM 上。 --- ### 3. **各条规则的具体功能解析** #### ✅ `:deep(.el-table th.el-table__cell)` ```css background-color: #f0f3f6 !important; border-right: 1px solid #ddd; text-align: center !important; ``` - **功能:** 设置表格表头单元格的背景色、右边框,并强制居中对齐。 - **细节:** - 背景色 `#f0f3f6` 与模板中 `:header-cell-style` 配置一致,实现视觉统一。 - 使用 `!important` 确保覆盖 Element Plus 默认样式优先级。 - 居中对齐增强可读性。 #### ✅ `:deep(.el-table td.el-table__cell)` ```css border-bottom: 1px solid #eaeaea; text-align: center !important; padding: 4px 2px; ``` - **功能:** 自定义数据单元格的下边框、文本对齐方式和内边距。 - **目的:** 提升表格整体整洁度和一致性,避免默认样式带来的错位或不对齐问题。 #### ✅ `:deep(.el-table--border th.el-table__cell), :deep(.el-table--border td.el-table__cell)` ```css border-right: 1px solid #ddd; ``` - **功能:** 当表格设置了 `border` 属性时,为每个单元格添加右侧边框,形成完整的网格线效果。 - **适用场景:** 表格启用边框模式后,确保横向和纵向线条完整闭合。 #### ✅ `:deep(.el-table .el-table__body tr:hover > td.el-table__cell)` ```css background-color: #f6faff !important; transition: background-color 0.2s ease; ``` - **功能:** 实现鼠标悬停行高亮效果。 - **用户体验优化:** - 高亮色 `#f6faff` 温和清晰,不刺眼。 - 添加过渡动画使交互更平滑自然。 #### ✅ `:deep(.el-table .el-table__body tr:nth-child(even) > td.el-table__cell)` ```css background-color: #fafbfc; ``` - **功能:** 设置偶数行背景色,实现斑马纹(zebra striping)效果。 #### ✅ `:deep(.el-table .el-table__body tr:nth-child(odd) > td.el-table__cell)` ```css background-color: #ffffff; ``` - **功能:** 明确奇数行为白色背景,与偶数行交替,提升长表格的阅读体验。 > ⚠️ 注意:虽然 `.el-table` 本身支持 `stripe` 属性来开启斑马纹,但这里通过手动控制颜色,可以实现更精细的设计定制。 --- ### 4. **总结:该段代码的整体作用** 这段 CSS 代码通过 `:deep()` 深度选择器实现了以下核心目标: - **打破 scoped 封装限制**,精准控制 Element Plus 表格组件的内部样式; - **统一视觉风格**,包括背景色、边框、文字对齐、间距等; - **增强交互体验**,如悬停高亮、斑马纹排版; - **提升信息可读性与美观度**,尤其适用于展示时间分布、预警信息等关键业务数据。 --- ### 5. **潜在改进建议** - 若项目中多处使用类似表格样式,建议抽离为全局 SCSS 变量或公共类,减少重复代码。 - `!important` 应谨慎使用,若能通过更高特异性选择器替代,则更利于维护。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值