萨斯@extend基地/默认不还扩展伪类?(Sass @extend base/default wi

2019-06-27 01:46发布

我知道我可以@extend包含.foo:徘徊,但有什么办法也没有扩展定义的伪类喜欢@extend的.foobar基地/默认属性:悬停:活跃,等等?

例如 ,我会如何改变如下这样.foobar仅适用包含.foo的默认状态?

.foo {
    & {
         color:blue;
    }
    &:hover {
         background-color: black;
    }
}

.foobar {
     @extend .foo;
     &:hover {
          //As is, I have to override. Any better way?
          background-color: transparent;
     }
}

(如果没有办法用无礼的话要做到这一点,有没有达到同样的效果优选的方法是什么?)

Answer 1:

你必须重写你的选择以这样的方式,你只扩展正是你想要的部分:

%foo {
    color:blue;
}

.foo {
    @extend %foo;

    &:hover {
         background-color: black;
    }
}

.foobar {
    @extend %foo;

    &:hover {
         background-color: transparent;
    }
}

但是,这取决于你将如何将触角延伸/重用你的包含.foo类,新@content指令可能是更好的路要走。

@mixin foo {
    color: blue;

    &:hover {
        @content;
    }
}

.foo {
    @include foo {
        background-color: black;
    }
}

.foobar {
    @include foo {
        background-color: transparent;
    }
}


文章来源: Sass @extend base/default without also extending pseudo-classes?