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

Vue.js中v-for渲染元素后如何使用first-child和last-child?

问题原因

你当前的CSS选择器逻辑错误:
#grid .elements > *:first-child、#grid .elements > *:last-child的匹配规则是,找到所有.elements类的元素,再选中它们各自内部的第一个和最后一个直接子元素,完全不符合你想要的「选中网格容器内第一个、最后一个NewsCard卡片」的需求。

修复方案

把CSS里的选择器去掉> *即可,直接匹配作为#grid子元素的第一个、最后一个.elements元素本身:

#grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-gap : 1rem;
}
#grid .elements:first-child,
#grid .elements:last-child {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        grid-gap: 1rem;
        grid-column: 1 / span 2;
        align-items: center;
}
额外注意事项
  • 如果你的#grid容器内除了v-for渲染的.elements元素外,还有其他同级的DOM元素(比如注释、隐藏的占位节点、其他自定义组件),可以把选择器换成#grid .elements:first-of-type、#grid .elements:last-of-type规避匹配错误
  • 确保你的NewsCard组件根节点只有一个外层标签,否则类名绑定可能不生效,选择器也会匹配不到目标元素

内容的提问来源于stack exchange,提问作者rheina tamara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:48:03