Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 分组选择器_Css_Sass - Fatal编程技术网

Css 分组选择器

Css 分组选择器,css,sass,Css,Sass,我有这个sass代码: .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-brand { &:hover { color: #fff; } } 此输出: .navbar-default .navbar-nav > li > a:hover:hover, .navbar-default .navbar-brand:hover { color: #fff

我有这个sass代码:

.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-brand {
    &:hover {
    color: #fff;
    }
}
此输出:

.navbar-default .navbar-nav > li > a:hover:hover,
.navbar-default .navbar-brand:hover {
  color: #fff;
}
但我想:

.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-brand,
.navbar-default .navbar-brand:hover {
    color: #fff;
}
如何在父级和子级中使用相同的属性而不使用sass重复父级?

尝试以下方法:

$white:#fff;
.navbar默认值{
.navbar品牌{
颜色:$白色;
&:悬停{
颜色:$白色;
}
}
.navbar导航>li>a:悬停{
颜色:$白色;
}
}
试试这个:

$white:#fff;
.navbar默认值{
.navbar品牌{
颜色:$白色;
&:悬停{
颜色:$白色;
}
}
.navbar导航>li>a:悬停{
颜色:$白色;
}

}
不幸的是,仅仅用符号和并不能准确地完成您的要求。符号(&)总是被父选择器替换。在您的情况下,选择父选择器。但是您可以做的是从第一个选择器中删除
:悬停
,然后抛出一个
@extend
。我创建了一个名为“.primary color”的新选择器,它将保存颜色

.primary-color {
  color: white;
}
.navbar-default .navbar-brand {
    @extend .primary-color;
}
.navbar-default .navbar-nav > li > a,
.navbar-default .navbar-brand {
    &:hover {
        @extend .primary-color;
    }
}
这将编译为以下CSS:

.primary-color, .navbar-default .navbar-brand, .navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-brand:hover {
  color: white;
}
@extend在编译CSS的方式上与mixin略有不同。我不喜欢它给你我创建的额外的“.primary color”类,但除此之外,你可以得到你想要的

可能设置比需要的要复杂一些。我只想添加您在问题中提到的额外父选择器,以获得您想要的结果


这是我在sass-ampersand上写的一篇文章,可能会有所帮助

不幸的是,仅仅用符号是不可能做到你所要求的。符号(&)总是被父选择器替换。在您的情况下,选择父选择器。但是您可以做的是从第一个选择器中删除
:悬停
,然后抛出一个
@extend
。我创建了一个名为“.primary color”的新选择器,它将保存颜色

.primary-color {
  color: white;
}
.navbar-default .navbar-brand {
    @extend .primary-color;
}
.navbar-default .navbar-nav > li > a,
.navbar-default .navbar-brand {
    &:hover {
        @extend .primary-color;
    }
}
这将编译为以下CSS:

.primary-color, .navbar-default .navbar-brand, .navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-brand:hover {
  color: white;
}
@extend在编译CSS的方式上与mixin略有不同。我不喜欢它给你我创建的额外的“.primary color”类,但除此之外,你可以得到你想要的

可能设置比需要的要复杂一些。我只想添加您在问题中提到的额外父选择器,以获得您想要的结果


这是我在sass-ampersand上写的一篇文章,可能会有所帮助

这是一个优雅而清晰的解决方案,没有太复杂(像我的一样)。两个答案都很好(@richfinelli&@karldawson),非常感谢!但我真的不认为这种情况有什么好处,所以我会用标准CSS保留它,只使用变量中的颜色。这是一个优雅而清晰的解决方案,不像我的解决方案那样过于复杂。两个答案都很好(@richfinelli&@Karl Dawson),非常感谢!但是真诚地说,我看不出在这种情况下有什么好处,所以我将使用标准CSS保留它,只使用变量中的颜色。如果您将
.primary color
更改为
%primary color
(Sass占位符),然后将其用作
@extend:%primary color
,则可以保存正在输出的未使用的类:)@Karl Dawsom-这样更好。我还以为会有这样的事呢!不用担心,谢谢你的安瓿和文章-我在本周早些时候读过这篇文章,以防我忘记了使用它们的一两个技巧。如果你将
.primary color
更改为
%primary color
(Sass占位符),然后将其用作
@extend:%primary color
,您将未使用的类保存为输出:)@Karl Dawsom-这更好。我还以为会有这样的事呢!不用担心,谢谢你的安培士和文章-我在本周早些时候读过,以防我忘记了一两个使用它们的技巧。