首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在SASS中,括号没有在#{$var}之后编译?

为什么在SASS中,括号没有在#{$var}之后编译?
EN

Stack Overflow用户
提问于 2013-08-16 11:45:33
回答 1查看 778关注 0票数 4

我有以下@mixin SASS:

代码语言:javascript
复制
@mixin complexTransform($axis, $perspective, $degrees, $axis2, $px) {

    -webkit-transform: 
        perspective( $perspective )
        rotate#{ $axis }( $degrees )
        translate#{ $axis2 }( $px );

    -moz-transform: 
        perspective( $perspective )
        rotate#{ $axis }( $degrees )
        translate#{ $axis2 }( $px );

    -o-transform: 
        perspective( $perspective )
        rotate#{ $axis }( $degrees )
        translate#{ $axis2 }( $px );

    -ms-transform:
        perspective( $perspective )
        rotate#{ $axis }( $degrees )
        translate#{ $axis2 }( $px );

    transform:
        perspective( $perspective )
        rotate#{ $axis }( $degrees )
        translate#{ $axis2 }( $px );
}

除了rotate#{$axis}和translate#{$axis}之后的括号外,一切都编译得很好。这就是编译后的CSS的样子:

代码语言:javascript
复制
  -webkit-transform: perspective(600px) rotateX45deg translateY75px;
  -moz-transform: perspective(600px) rotateX45deg translateY75px;
  -o-transform: perspective(600px) rotateX45deg translateY75px;
  -ms-transform: perspective(600px) rotateX45deg translateY75px;
  transform: perspective(600px) rotateX45deg translateY75px;

我做错了什么?或者这样做是完全错误的?

提前谢谢你!

艾德特:不介意!找到了解决办法..。这可能有点“讨厌”,但至少有效。我在这里张贴它,以防其他人遇到同样的问题。

下面是改进的工作混合器:

代码语言:javascript
复制
@mixin complexTransform($axis, $perspective, $degrees, $axis2, $px) {

    -webkit-transform:
        perspective( $perspective + px )
        rotate#{$axis +"(" $degrees +deg +")" }
        translate#{ $axis2 +"(" + $px +px +")" };

    -moz-transform:
        perspective( $perspective + px )
        rotate#{$axis +"(" $degrees +deg +")" }
        translate#{ $axis2 +"(" + $px +px +")" };

    -o-transform:
        perspective( $perspective + px )
        rotate#{$axis +"(" $degrees +deg +")" }
        translate#{ $axis2 +"(" + $px +px +")" };

    -ms-transform:
        perspective( $perspective + px )
        rotate#{$axis +"(" $degrees +deg +")" }
        translate#{ $axis2 +"(" + $px +px +")" };

    transform:
        perspective( $perspective + px )
        rotate#{$axis +"(" $degrees +deg +")" }
        translate#{ $axis2 +"(" + $px +px +")" };
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-29 16:18:07

稍加修改,我发现这个混合方案更适合我的需求:

代码语言:javascript
复制
 @mixin keyframeBuilder($animationName, $f, $startParams, $stopParams) {
        @-webkit-keyframes $animationName {
            from { -webkit-transform: $f+'('#{$startParams}')' }
            to   { -webkit-transform: $f+'('#{$stopParams}')' }
        }
        @-moz-keyframes $animationName {
            from { -moz-transform: $f+'('#{$startParams}')' }
        to   { -moz-transform: $f+'('#{$stopParams}')' }
        }
        ... (other vendor prefixes)
    }

所以当我打电话的时候

代码语言:javascript
复制
@include keyframeBuilder(spin, rotate, 0deg, 360deg);

它产生:

代码语言:javascript
复制
@-webkit-keyframes spin {
  from {
    -webkit-transform: rotate(0deg); }

  to {
    -webkit-transform: rotate(360deg); } }

@-moz-keyframes spin {
  from {
    -moz-transform: rotate(0deg); }

  to {
    -moz-transform: rotate(360deg); } }

@-o-keyframes spin {
  from {
    -o-transform: rotate(0deg); }

  to {
    -o-transform: rotate(360deg); } }

@keyframes spin {
  from {
    transform: rotate(0deg); }

  to {
    transform: rotate(360deg); } }

我希望这也能对某人有所帮助!)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18272579

复制
相关文章

相似问题

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