CSS 使用 Sass 仅从元素中选择直接子元素
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30290820/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Select only direct children from element with Sass
提问by SuperDJ
Lets say I have the following html:
假设我有以下 html:
<header class="header">
<div class="title">
<h1>Home</h1>
</div>
<div class="logo">
<img src="#" alt="Logo">
</div>
<div class="account">
<div class="options">
</div>
<div class="search">
</div>
</div>
</header>
And I have the following SCSS:
我有以下 SCSS:
header {
height: 4.1rem;
div {
width: 33%;
float: left;
height: 4.1rem;
line-height: 4.1rem;
color: #fff;
&.title {
h1 {
font-weight: normal;
font-size: 3rem;
padding: 0;
margin: 0;
}
}
&.logo {
text-align: center;
}
&.account {
}
}
}
Now the problem that I have is that divs options
and search
are 33% percent of account
which is logic as I have div {width: 33%}
. I know I can select direct child elements with:
现在我遇到的问题是 divoptions
和search
33%account
是逻辑,因为我有div {width: 33%}
。我知道我可以选择直接子元素:
header {
> div {
}
}
But this doesn't help even if I put the >
infront of all other classes. I also know I can say that the width should be 0 or what ever again in .account
but I would like to prevent this.
但是,即使我把>
所有其他类放在前面,这也无济于事。我也知道我可以说宽度应该是 0 或什么,.account
但我想防止这种情况。
回答by Drops
Try this:
尝试这个:
...
& > div {width: 33%;}
div {
float: left;
height: 4.1rem;
line-height: 4.1rem;
color: #fff;
...
Take out div width and apply it only on direct children. Leave rest as is.
Here is quick fiddle(remove .option
and .search
styles later, its only for visualisation).
取出 div 宽度并将其仅应用于直接子级。保持原样休息。这是快速小提琴(稍后删除.option
和.search
样式,仅用于可视化)。
Please edit your question and better explain what exactly you want to achieve.
请编辑您的问题并更好地解释您想要实现的目标。
回答by ryanpcmcquen
I am not certain I understand you. But I think you want a combination of direct children and child pseudo selectors, in pure CSS:
我不确定我理解你。但我认为您想要在纯 CSS 中组合直接子选择器和子伪选择器:
header > div:first-child {
}
Or, for the second div:
或者,对于第二个 div:
header > div:nth-child(2) {
}
You could also use the not
selector:
您还可以使用not
选择器:
header > div:not(.account) {
}
to exclude any unwanted div's.
排除任何不需要的 div。
回答by DINA TAKLIT
Use the &
with >
inside the parent element. Example:
在父元素内使用&
with >
。例子:
.services{
& > div {
margin-bottom: 25px;
}
}