You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用div展示数据集时CSS :nth-child()隔行变色失效求助

问题分析

你的核心问题是**.indexrow容器的位置错误**:所有数据条目都被包裹在同一个.indexrow里,导致页面中只有一个.indexrow元素,:nth-child(even)规则找不到偶数行,同时单个容器的背景也会被内部列元素遮挡。

修复方案

把.indexrow的定义放到while循环内部,让每一条数据对应一个独立的.indexrow容器,这样这些容器作为兄弟节点,才能被:nth-child选择器正确匹配。同时需要调整CSS,确保.indexrow的布局正确(比如用Flexbox实现列排列)。

修正后的PHP/HTML代码

<?php
$wa_startindex = 0;
while(!$rsTitle->atEnd()) {
    $wa_startindex = $rsTitle->Index;
?>
<div class="indexrow">
    <div class="column left">
        <?php echo($rsTitle->getColumnVal("Title")); ?>
    </div>
    <div class="column middle">
        Issue: <a href="<?php echo($rsTitle->getColumnVal("PubFileName")); ?>" target="_blank" class="BlackHeadline3"><?php echo($rsTitle->getColumnVal("IssueID")); ?></a>
    </div>
    <div class="column right">
        Page: <span class="BlackHeadline3"><?php echo($rsTitle->getColumnVal("Page")); ?></span>
    </div>
</div>
<?php
    $rsTitle->moveNext();
}
$rsTitle->moveFirst(); //return RS to first record
unset($wa_startindex);
unset($wa_repeatcount);
?>

调整后的CSS代码

/* 让每一行用Flex布局,列自动分配空间 */
.indexrow{
    background-color: #94C8F2;
    width: 100%;
    display: flex;
    align-items: center;
    padding: 8px 0; /* 可选,增加行内边距提升可读性 */
}
/* 偶数行背景变色 */
.indexrow:nth-child(even){
  background: #f2f2f2;
}
.indexrow a:hover{
    background-color: #FFFF00;
}
/* 定义列的宽度或比例 */
.column.left {
    width: 50%; /* 根据需求调整 */
    padding: 0 10px;
}
.column.middle {
    width: 30%;
    padding: 0 10px;
}
.column.right {
    width: 20%;
    padding: 0 10px;
}
为什么这样能解决问题
  • 循环内的每个.indexrow都是独立的兄弟元素,:nth-child(even)会选中第2、4、6...个.indexrow,实现隔行变色。
  • Flex布局确保每一行的列在同一水平线上排列,和表格的视觉效果一致。

内容的提问来源于stack exchange,提问作者Franklin Haas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:25:24