是否有可能引用另一个父母,而不仅仅是上述父母?

时间:2014-07-15 17:28:22

标签: sass

我有以下示例代码:

.level1 {
   // css

  .level2 {
  // css

     . level3 {
     // css
     color: red;
  }
}

然后

.level1.blue .level .level3 {
  color: blue
}

我想把第二条规则以某种方式放在代码的第一位,这样我就不会再重复这个结构了,我上面有两种颜色可能,这是否可能呢?

3 个答案:

答案 0 :(得分:3)

我并没有打算回答我自己的问题,但似乎我发现了我正在寻找的东西,只是它最近才被添加到sass中,并将在sass 3.4上提供。我相信这是一个尝试的预发布,但我还没有尝试过。

基本上我在寻找的东西已经在github上找到了我:

https://github.com/sass/sass/issues/286#issuecomment-49112243

所以在3.4你可以这样做:

.level1 {
  .level2 {
    .level3 {
       @at-root #{selector-append(".blue", &)} {
        color: blue;
      }
      color: red;
    }
  }
}

这正是我所寻找的。

有一些与父选择器(&)相关的添加内容,您可以在https://github.com/sass/sass/issues/1117

了解更多内容

请记住,在撰写本答案时,所有这些都是新的。

另见:https://github.com/sass/sass/blob/master/doc-src/SASS_CHANGELOG.md 并且:http://www.phase2technology.com/blog/everything-you-need-to-know-about-sass-3-4/

答案 1 :(得分:0)

此:

@mixin level3color($color) {
  .level2 {
    .level3 {
      color: $color;
    }
  }
}

.level1 {
  @include level3color(#FF0000);

  &.blue {
    @include level3color(#0000FF);
  }
}

产生这个:

.level1 .level2 .level3 {
  color: red;
}
.level1.blue .level2 .level3 {
  color: blue;
}

得爱mixins!

编辑:

这仍然非常干净(或者考虑到你正在尝试做的事情,至少是干净的),因为你仍然可以在那里拥有你的结构。

.level1 {
    // css

    .level2 {
        // css

        .level3 {
            // css
            color: red;
        }
    }

    &.blue   { @include level3color(blue); }
    &.yellow { @include level3color(yellow); }
}

答案 2 :(得分:-2)

一个简单的例子:

 .child{
    background-color:red;
    .parent:hover &{
      background-color:blue;
    }
  }

进入

.child {
  background-color: red;
}
.parent:hover .child {
  background-color: blue;
}

http://sassmeister.com/gist/e994e056d3cc3b342e2c