html - CSS nth-child 仅来自具有类的元素

标签 html css vue.js

我正在使用 vue 的 v-if 来动态显示和隐藏表格元素,并且我为这些元素使用了斑马纹背景。问题是当我显示一行时,背景颜色会发生变化,因为表格中现在有不同数量的元素。这看起来很困惑,所以我希望隐藏的行不影响格式,这样斑马纹颜色保持一致。

下面是我用来突出所有其他 tr 元素的 css:

.content-table {
    .table-content {
        table {
            tbody {
                tr:nth-child(even) {
                    background-color: #00ff0d;
                }
            }
        }
    }
}

以及我正在使用的代码的简化示例

<tbody>
    <template v-for="item in list">
        <tr class="zebra">
            //blah
        </tr>

        <tr v-if="item.accordion">
            //blah
        </tr>
    </template>
</tbody>

默认情况下,每个元素的 accordion 属性为 false,因此单击展开将显示这一新行,并更改表格中其下方所有元素的背景颜色。

我知道使用 CSS 的 .zebra:nth-of-type(even) 选择器,因为我看过类似问题的示例,但据我所知,这对我的代码不起作用,就好像我只选择了第一个使用类的一组 tr 元素,它仍将计算同一父类中的所有 tr 元素。

任何人都可以为我的问题提出解决方案,或者帮助我理解我是如何错过 :nth-of-type 的东西的。

谢谢

最佳答案

我能够使用 vue 的条件样式获得我想要的格式。

<tbody>
    <template v-for="(item, index) in list">
        <tr :style="(index % 2 == 0) ? {'background-color': '#f7f8f9'} : {'background-color': '#f1f3f5'}">
            //blah
        </tr>

        <tr v-if="item.accordion">
            //blah
        </tr>
    </template>
</tbody>

关于html - CSS nth-child 仅来自具有类的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67675069/

相关文章:

javascript - Vue.js 事件目标为空?

html - 为什么这个画廊没有响应?

css - 如何设置表格边框小于单元格高度

javascript - 使用 IndexRoute 在我的 React 应用程序中设置登陆页面

css - 向右浮动元素与底部 CSS 对齐?

security - 在 vuex state + persistedState 插件中存储 token 是否安全?

javascript - 为什么该网站不显示在 iPhone 上?

css - node.js - 当参数 express.js 太长时无法加载 css

javascript - 如何在 Bootstrap 的选项卡中添加链接?

vue.js - 防止 vue-router 打开相同的路径