Recursion 可以在Sass中编写递归选择器吗?
在Sass中有没有一种简单的方法来编写以下规则?我试图实现的是只为一个部分中的第一个h2设置边距顶部,而不管它嵌套的深度有多深Recursion 可以在Sass中编写递归选择器吗?,recursion,sass,Recursion,Sass,在Sass中有没有一种简单的方法来编写以下规则?我试图实现的是只为一个部分中的第一个h2设置边距顶部,而不管它嵌套的深度有多深 section { $first : '> *:first-child'; &, & #{$first}, & #{$first} #{$first}, & #{$first} #{$first} #{$first} { > h2 { &am
section {
$first : '> *:first-child';
&,
& #{$first},
& #{$first} #{$first},
& #{$first} #{$first} #{$first} {
> h2 {
&:first-child {
margin-top: 33px;
}
}
}
}
下面的mixin在一定程度上满足了您的需求。这样做的问题是,您将创建一大堆样式规则,这些规则需要在您继续操作时进行评估和放弃,并且无论您执行了多少,始终可能会有嵌套更深的内容。在这种情况下,类更有用,即使很好地使用可用的标记(比如每页只允许一个h2),也能更好地解决您的问题,但本质上,这是可行的:
@mixin first-ever-child($select, $limit:20, $root:''){
$nester: '>*:first-child';
@for $i from 1 through $limit {
$root: $root + $nester;
#{$root + ' ' + $select}{ @content; }
}
}
body {
@include first-ever-child(' h2'){
background: red;
}
}
默认情况下,上面的mixin将输出以下内容(当然,当pased为选择器元素时):
body>*:第一个孩子h2{
背景:红色;
}
正文>*:第一个子项>*:第一个子项h2{
背景:红色;
}
正文>*:第一个子项>*:第一个子项>*:第一个子项h2{
背景:红色;
}
正文>*:第一个孩子>*:第一个孩子>*:第一个孩子>*:第一个孩子h2{
背景:红色;
}
正文>*:第一个孩子>*:第一个孩子>*:第一个孩子>*:第一个孩子>*:第一个孩子h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
正文>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child>*:first child h2{
背景:红色;
}
否,只有标记中的第一个h2受规则影响。因此,您只希望第一个h2为红色。其他人都不应该受到影响?是的,但我不知道第一个h2嵌套的深度有多深,所以在一个页面中它可能是一级深(div>h2),在另一个四级深(div>div>div>div>h2)。我认为使用纯css是不可能的。div:first child>h2
一开始就不能全局解决这个问题吗?