dede表格隔行换色如何实现?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

纯CSS法(最推荐)

这是最现代、最灵活的方法,它将样式(颜色)与内容(HTML)分离,维护起来非常方便,无论你的表格数据是动态调用还是静态写死的,都只需修改CSS代码即可。

dede表格隔行换色
(图片来源网络,侵删)

操作步骤:

  1. 准备你的HTML表格 在你的模板文件(如 article_article.htm)中,确保你的表格有 <table> 标签,<tr>(行)标签有规律地出现。

    <table class="zebra-table">
        <tr>
            <th>标题</th>
            <th>发布时间</th>
            <th>点击量</th>
        </tr>
        <tr>
            <td>文章标题一</td>
            <td>2025-10-27</td>
            <td>123</td>
        </tr>
        <tr>
            <td>文章标题二</td>
            <td>2025-10-26</td>
            <td>456</td>
        </tr>
        <tr>
            <td>文章标题三</td>
            <td>2025-10-25</td>
            <td>789</td>
        </tr>
        <tr>
            <td>文章标题四</td>
            <td>2025-10-24</td>
            <td>1011</td>
        </tr>
    </table>

    关键点:给 <table> 标签添加一个 class 属性,class="zebra-table",这样我们就可以在CSS中精确地控制这个表格的样式。

  2. 编写CSS代码 将以下CSS代码添加到你的模板文件头部 <head> 标签内,或者更推荐的方式是,添加到你的网站全局CSS文件中(/templets/你的模板/style/css.css)。

    /* 定义斑马线表格的样式 */
    .zebra-table tr:nth-child(even) {
        background-color: #f2f2f2; /* 偶数行的背景色,例如浅灰色 */
    }
    .zebra-table tr:nth-child(odd) {
        background-color: #ffffff; /* 奇数行的背景色,例如白色 */
    }
    /* 鼠标悬停高亮效果(可选) */
    .zebra-table tr:hover {
        background-color: #e6f7ff; /* 鼠标移上去时的颜色,例如浅蓝色 */
    }
    /* 表头样式(可选) */
    .zebra-table th {
        background-color: #fafafa;
        font-weight: bold;
    }
  3. 效果

    dede表格隔行换色
    (图片来源网络,侵删)
    • nth-child(even):选择所有父元素中第偶数个子元素,在这里就是指表格中偶数行的 <tr>
    • nth-child(odd):选择所有父元素中第奇数个子元素,在这里就是指表格中奇数行的 <tr>

    这样,你的表格就会自动隔行变色,并且当你的数据更新导致行数变化时,颜色会自动重新计算,非常智能。


Dede标签法(适用于特定场景)

这种方法通常用于调用特定数据(如文章列表、产品列表)时,直接在Dede模板标签中控制奇偶行,它不如CSS方法灵活,但有时在某些特定布局中可能会用到。

操作步骤:

假设我们要在列表页(list_article.htm)中调用文章列表并实现隔行换色。

  1. 使用 ifmod 在Dede模板中,我们可以利用 {if} 条件判断和 mod 求余运算符来判断当前是奇数行还是偶数行。

    dede表格隔行换色
    (图片来源网络,侵删)
    <table border="1">
        <tr>
            <th>文章标题</th>
            <th>发布时间</th>
        </tr>
        <!-- 调用文章列表 -->
        {dede:arclist row='10' titlelen='50'}
        <tr [field:global name=autoindex runphp="yes"]
            if(@me % 2 == 0){@me='class="even-row"';}
            else{@me='class="odd-row"';}
        >
            <td><a href="[field:arcurl/]">[field:title/]</a></td>
            <td>[field:pubdate function="MyDate('Y-m-d', @me)"/]</td>
        </tr>
        {/dede:arclist}
    </table>
  2. 编写对应的CSS 同样,你需要在CSS文件中定义 .even-row.odd-row 的样式。

    /* 偶数行样式 */
    .even-row {
        background-color: #f9f9f9;
    }
    /* 奇数行样式 */
    .odd-row {
        background-color: #ffffff;
    }
  3. 代码解释

    • [field:global name=autoindex runphp="yes"]autoindex 是Dede内置的变量,表示当前循环的序号(从1开始)。
    • if(@me % 2 == 0){...}@me 代表 autoindex 的值。% 2 是求余运算,如果序号除以2的余数为0,说明是偶数行。
    • @me='class="even-row"':如果条件成立,就将当前 <tr> 标签的 class 属性设置为 even-row
    • else{@me='class="odd-row"'}:如果条件不成立(即奇数行),就将 class 属性设置为 odd-row

总结与对比

特性 纯CSS法 Dede标签法
推荐度 ⭐⭐⭐⭐⭐ (强烈推荐) ⭐⭐ (不推荐,除非有特殊需求)
实现方式 通过CSS选择器 nth-child() 通过Dede的 runphpif
维护性 极高,只需修改CSS文件即可改变所有表格样式。 较低,样式与模板代码耦合,修改样式需要找到并修改模板文件。
灵活性 极高,适用于任何表格,不受数据来源影响。 较低,只适用于使用了特定Dede标签循环的表格。
性能 更好,CSS由浏览器高效渲染。 稍差,PHP在服务器端执行了额外的逻辑判断。
代码清晰度 ,HTML结构干净,样式集中管理。 ,HTML中混入了PHP逻辑,可读性差。

除非你有非常特殊的需求(比如需要根据数据库字段值来动态决定行颜色,而不仅仅是奇偶),否则请务必使用方法一(纯CSS法),它是目前Web开发的标准做法,能让你网站的维护工作事半功倍。

-- 展开阅读全文 --
头像
dede标签如何正确使用?
« 上一篇 今天
dede如何调用顶踩次数?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码