首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用CSS技巧的Sass mixin

应用CSS技巧的Sass mixin
EN

Stack Overflow用户
提问于 2020-03-08 00:32:36
回答 1查看 148关注 0票数 1

我正在尝试创建在不同浏览器上应用CSS hack的mixin:

代码语言:javascript
运行
复制
@mixin browsers($browsers) {
    $selectors: (
        chrome: '&:not(*:root)',
        firefox: '@-moz-document url-prefix()',
        ie: '@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)'
    );

    @each $browser in $browsers {
        #{map-get($selectors, $browser)} {
            @content;
        }
    }
}

例如:

代码语言:javascript
运行
复制
#test {
    @include browsers(firefox ie) {
        background: red;
    }
}

预期的编译输出为:

代码语言:javascript
运行
复制
@-moz-document url-prefix() {
    #test {
        background: red;
    }
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
    #test {
        background: red;
    }
}

但失败的原因是:

代码语言:javascript
运行
复制
Error: expected selector.

@-moz-document url-prefix(){
^

当然,我可以在@each中使用if/else语句,比如:

代码语言:javascript
运行
复制
@if $browser == chrome {
    &:not(*:root) {
        @content;
    }
} @else if $browser == firefox {
    @-moz-document url-prefix() {
        @content;
    }
} @else if $browser == ie {
    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
        @content;
    }
}

但有没有可能做得更多...优雅?

EN

Stack Overflow用户

发布于 2020-03-09 19:08:37

你忘了一个逗号。

代码语言:javascript
运行
复制
#test {
    @include browsers(firefox ie) {
        background: red;
    }
}

应该是

代码语言:javascript
运行
复制
#test {
    @include browsers(firefox, ie) {
        background: red;
    }
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60579774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档