从Sass元素中仅选择直接子元素

Sup*_*rDJ 20 css sass

可以说我有以下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>
Run Code Online (Sandbox Code Playgroud)

我有以下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 {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我遇到的问题是divs options,search其中33%account是逻辑,就像我一样div {width: 33%}.我知道我可以选择直接子元素:

header {
  > div {
  }
}
Run Code Online (Sandbox Code Playgroud)

但即使我把>所有其他课程都放在前面,这也无济于事.我也知道我可以说宽度应该是0或者再次进行,.account但我想防止这种情况.

Dro*_*ops 32

试试这个:

    ...
    & > div {width: 33%;}

    div {
      float: left;
      height: 4.1rem;
      line-height: 4.1rem;
      color: #fff;
      ...
Run Code Online (Sandbox Code Playgroud)

取出div宽度,仅适用于直接儿童.保持休息状态.这里是快速小提琴(稍后删除.option.search样式,它仅用于可视化).

请编辑您的问题,并更好地解释您想要实现的目标.


DIN*_*LIT 13

在父元素中使用&with >,如下所示:

.services {
    & > div {
        margin-bottom: 25px;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • &amp; 符号是不必要的 https://css-tricks.com/the-sass-ampersand/ (7认同)
  • 我认为投票的人会为他/她增加一些东西。 (6认同)
  • 正如您可能已经看到的,这是一个 5 年前的问题。您认为这个答案对已经提供的答案有何补充? (3认同)

rya*_*uen 6

我不确定我理解你。但我认为您想要在纯 CSS 中组合直接子选择器和子伪选择器:

header > div:first-child {
}
Run Code Online (Sandbox Code Playgroud)

或者,对于第二个 div:

header > div:nth-child(2) {
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用not选择器:

header > div:not(.account) {
}
Run Code Online (Sandbox Code Playgroud)

排除任何不需要的 div。