scss 第二个子选择器失效问题
有如下代码,它无法按照预期运行:
html:
<div class="top-info">
<div></div>
<span>无床位</span>
<div></div>
<span>有床位</span>
</div>
scss:
.top-info{
color: $fontColor;
>div{
width: .75rem;
height: .75rem;
}
>div:first-child{
background-color: $withoutBed;
}
>div:nth-child(2){
background-color: $hasBed;
}
}
但若改成:
scss:
.top-info{
color: $fontColor;
>div{
width: .75rem;
height: .75rem;
}
>div:first-child{
background-color: $withoutBed;
}
>div:nth-child(n+2){
background-color: $hasBed;
}
}
它便生效了!(顺带一提,使用last-child也没有生效,!important也试过,应该不是优先级问题),有大佬知道是什么原因吗?
nth-child用错了,nth-child(2)是匹配父元素的第二个元素,如果前面有元素名,再匹配对应的元素名对不对,所以,他是双重匹配,而不是先过滤再匹配。类似的选择器,可以换用nth-of-type。
这种需求,最好的做法是给div加上class,使用class设置样式,不然dom结构变化,css就失效了
在 SCSS(或 CSS)中,当你使用子选择器(>
)时,它只会选择直接子元素。在你的 HTML 结构中,div
元素是 .top-info
的直接子元素,但 span
元素也是 .top-info
的直接子元素,它们会中断 div
元素在 :nth-child
选择器中的计数。
在你的第一个 SCSS 示例中:
.top-info{
// ...
>div:nth-child(2){
background-color: $hasBed;
}
}
这里 :nth-child(2)
实际上尝试选择 .top-info
的第二个直接子元素,但根据 HTML 结构,第二个直接子元素是一个 span
,而不是 div
。因此,这个选择器不会匹配任何 div
元素。
你的第二个 SCSS 示例之所以能够工作,是因为你使用了 :nth-child(n+2)
,这个选择器匹配从第二个元素开始的所有子元素(在这个上下文中,就是第二个和第三个直接子元素,它们都是 div
)。但这并不是最精确的选择方法,因为它也包含了后续可能存在的其他类型的子元素。
为了更精确地选择 .top-info
下的第二个和之后的 div
子元素,你可以使用 :nth-of-type()
选择器,它只考虑特定类型的元素:
.top-info{
color: $fontColor;
>div{
width: .75rem;
height: .75rem;
}
>div:first-child{
background-color: $withoutBed;
}
>div:nth-of-type(n+2){
background-color: $hasBed;
}
}
这里 :nth-of-type(n+2)
正确地选择了 .top-info
中的第二个及之后的所有 div
子元素,不受其他类型子元素(如 span
)的影响。
:nth-child()
时,要考虑到它计算的是所有类型的子元素。:nth-of-type()
可以更精确地基于元素类型来选择子元素。:nth-of-type(n+2)
是更合适的选择器。我最近在写CSS的时候用了SASS。我在WordPress上建网站。我开发了一种CSS编写方法,我认为这是一种通过特定的Wordpress“页面”组织CSS的聪明方法。我的方法是: 1)通过一些php魔法,我给每个新的Wordpress“page”一个独特的类,一直在body标签上。所以如果我的站点有4个页面,每个页面上的body标签都有一个独特的类,如:,等。 我想这会给我一个很好的“捷径”来设
本文向大家介绍sass SCSS,包括了sass SCSS的使用技巧和注意事项,需要的朋友参考一下 示例 就像在Sass中一样,SCSS变量用于存储一个值,该值将在整个SCSS文档中多次使用。 变量通常用于存储常用的属性值(例如字体和颜色),但可以用于任何属性的任何值。 SCSS使用该$符号声明变量。 !default如果要仅在尚未分配新值的情况下为该变量分配新值,则可以在声明变量时使用:
我有这个: 我想选择类为col-md-4,6,8,12的排班的孩子。有没有什么好办法一次全选? 可以有多个行DIV,我将使用wrapAll将每个行DIV的子级包装到其他DIV中。所以如果我使用wrapAll,它只是将其他行div的所有内容转移到第一个行div。如果我将选择器查询放在循环内部,它只是继续包装子项乘以行divs的数量。我不想让这种事发生。 你们听懂了吗?
我是一个新生的QA,我在这里尝试编写一个Protractor脚本,从下拉列表中选择一个选项。我的下拉列表中有两个选项,我正在尝试从数字中选择它。 这是我正在使用的代码。 默认情况下,选项 2 在页面加载时处于选中状态。我需要的是从下拉列表中选择选项1。但是,我的代码不会这样做。 下面是选择选项的代码片段。 提前感谢:)
正如您在代码中所看到的,我希望“&”指的是“.app”,因为它在其他地方以及node_sass中都起作用。 这是样式化组件中的一个bug还是我遗漏了什么?下面是复制问题的codesandbox链接:- https://codesandbox.io/s/jolly-visvesvaraya-ibjd8?file=/src/app.js
问题内容: 我正在研究一个jQuery主题,其中包括对尽可能多的表单元素进行样式化。最初,它是为Webkit(Chrome)开发的。现在,我也想使其与Firefox一起使用。 问题是;Firefox在某些特定于Webkit的语法上存在问题。 例如: 问题是位。删除它,Firefox运行正常。它也做到这一点对于其他类似语法,并使用所有其他的事情标签。它可以识别出自己的标签,虽然很好。 Webkit似