假设我有以下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>
我有以下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 {
}
}
}
现在我遇到的问题是div options
和search
占account
的33%,这是我div {width: 33%}
的逻辑。我知道我可以选择直接子元素:
header {
> div {
}
}
但即使我把>
放在所有其他类的前面,这也无济于事。我也知道我可以说宽度应该是0或.account
中的任何一个但是我想阻止它。
答案 0 :(得分:27)
试试这个:
...
& > div {width: 33%;}
div {
float: left;
height: 4.1rem;
line-height: 4.1rem;
color: #fff;
...
取出div宽度并仅将其应用于直接儿童。保持休息状态。
以下是快速fiddle(稍后删除.option
和.search
样式,仅用于可视化。
请编辑您的问题并更好地解释您想要达到的目标。
答案 1 :(得分:2)
我不确定我理解你。但是我认为你想在纯CSS中使用直接子项和子伪选择器的组合:
header > div:first-child {
}
或者,对于第二个div:
header > div:nth-child(2) {
}
您还可以使用not
选择器:
header > div:not(.account) {
}
排除任何不需要的div。
答案 2 :(得分:2)
像这样在父元素中使用&
和>
:
.services {
& > div {
margin-bottom: 25px;
}
}