css-selectors - Svelte - `&:nth-child()` 不适用于由 {#each} 创建的元素
问题描述
<script lang="ts">
let buttons: Array<{ buttonName: string; className: string; id: number }>;
buttons = [
{ buttonName: 'NEW GAME', className: 'home-start', id: 1 },
{ buttonName: 'SETTINGS', className: 'home-setup', id: 2 },
{ buttonName: 'HOW TO PLAY', className: 'home-help', id: 3 },
];
</script>
<style land="sass">
.buttons
:nth-child(n+2)
background-color: red
</style>
<template>
<div class="buttons">
{#each buttons as button (button.id)}
<Button
className="{button.className} button"
on:click={()=>{console.log(button.className)}}>
{button.buttonName}
</Button>
{/each}
</div>
</template>
选择nth-child()
器不起作用,但它适用于那些硬编码的元素。我该如何解决这个问题?
这是我在这里的第一个问题,虽然我的英语不够好,但我仍然希望它有意义。谢谢你的帮助!
解决方案
您在 中渲染的元素#each
不是该组件的一部分,因此样式将被丢弃。这是因为 svelte 无法知道将这种样式应用于哪个元素。Button
不管怎样,你的组件看起来像这样是值得的
<div></div>
<button></button>
您可以通过添加:global
到您的选择器来解决这个问题:
.buttons > :global(:nth-child(n+2) {
background-color: red
}
(这使用常规 css,但您应该能够将其翻译为 sass)
推荐阅读
- java - 检索 mongodb 集合中所有文档的字段
- mongodb - 我无法更新用户信息以添加密码重置链接
- html - WebRTC:navigator.mediaDevices.getUserMedia 在 Android 上的 Chrome 中不起作用
- python - kivy中的水平对齐按钮
- android - Android模拟器启动后立即关闭
- powershell - Rust 命令行参数
- sql - SQL左联接,其中联接表仅显示具有最低数字的行列
- selenium - Selenium 范围报告没有正确显示多字节字符,它显示为?标记
- javascript - Javascript:如何将某些特定键分配给另一个对象?
- c# - 如何从数据库中获取数据到表中(Angular 8、C#、WebApi)