13

我的想法是我想为 和 编写input[type=text]静默input[type="password"]input[type=submit]。然后,我会将@extend它们作为变量传递给 mixin。

我的解析器抛出这个错误;

Syntax error: Invalid CSS after "   @extend ": expected selector_sequence, was "$type;"

这是我的代码;

%text {
    (text styling)
}

%password {
    @extend %text;
}

%submit {
    padding: .5em;
    background-color: $button-color;
    border: none;
    cursor: pointer;
    color: white;
    border: 1px solid darken($button-color, 20%);
    &:hover {
        @include transition;
        background-color: darken($button-color, 10%);
    }
}

@mixin input($type) {
    margin-bottom: 1.5em;
    margin-left: 0;
    outline: none;
    @extend $type;
}

任何帮助,将不胜感激

4

2 回答 2

19

尝试使用变量插值

@extend #{$type};

有关SASS 参考的更多信息

于 2013-07-09T10:47:47.327 回答
2

虽然 Fabrizio 的回答在形式上是正确的,但请考虑不要那样做。

任何类型的编程都有一条很好的规则:“保持简单,愚蠢!” 又名亲吻

尽管 SASS 提供了extend 和 mixins 等高级工具,但这并不意味着您应该尽可能多地使用它们。当你不需要的时候不要让你的代码变得复杂!

此代码完全符合您的要求:将样式应用于input[...]选择器:

input {
    margin-bottom: 1.5em;
    margin-left: 0;
    outline: none;
}

input[type=text], input[type=password] {
    font-family: Verdana; // Text styles
} 

input[type=submit]  {
    padding: .5em;
    background-color: $button-color;
    border: none;
    cursor: pointer;
    color: white;
    border: 1px solid darken($button-color, 20%);
    &:hover {
        @include transition;
        background-color: darken($button-color, 10%);
    }
}

如果您想将样式应用于自定义类/ID,请考虑以下方法:

/////////////////
// Silent classes
/////////////////

%input {
    margin-bottom: 1.5em;
    margin-left: 0;
    outline: none;
}

%text {
    @extend %input;
    font-family: Verdana;
}

%password {
    @extend %text;
}

%submit {
    @extend %input;
    padding: .5em;
    background-color: $button-color;
    border: none;
    cursor: pointer;
    color: white;
    border: 1px solid darken($button-color, 20%);
    &:hover {
        @include transition;
        background-color: darken($button-color, 10%);
    }
}



///////////////////////////
// Applying silent classes:
///////////////////////////

.some .weirdly .nested input[type=text] {
    @extend %text;
}

.password {
    @extend %password;
}

#the-submit-button {
    @extend %submit;
}

演示:http ://sassbin.com/gist/5956909/

于 2013-07-09T12:19:29.343 回答