IE 特定过滤器(例如 -ms-filter)的 Sass Mixin 错误
我正在尝试制作一个像这样的按钮混合:
=default_button(!lighter, !darker)
:border= 1px !lighter solid
:background-color #e3e3e3
:background= -webkit-gradient(linear, 0 0, 0 100%, from(!lighter), to(!darker)) repeat-x, #d0581e
:background= -moz-linear-gradient(90deg, !darker, !lighter) repeat-x scroll 0 0 #d0581e
:filter= progid:DXImageTransform.Microsoft.gradient(startColorstr='!lighter', endColorstr='!darker')
:-ms-filter= "progid:DXImageTransform.Microsoft.gradient(startColorstr='!lighter', endColorstr='!darker')"
:zoom 1
:margin 0 0 0 0
:width auto
:padding 2px 14px 2px 14px
:border-radius 10px
:-webkit-border-radius 10px
:-moz-border-radius 10px
:color #FFF
当我编译 sass 时,以 -filter 和 -ms-filter 开头的行出现此错误:
SASS::SyntaxError:预期的 rparen 令牌,是 single_eq 令牌
我很确定这是我对 = 的放置,但我不太确定如何正确编写它。如果我传递十六进制值而不是 !lighter, !darker,它就会起作用,因为这样我就可以像这样删除 = 符号:
:filter progid:DXImageTransform.Microsoft.gradient(startColorstr='#F89F16', endColorstr='#d0581e')
:-ms-filter "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F89F16', endColorstr='#d0581e')"
I'm trying to make a button mixin like this:
=default_button(!lighter, !darker)
:border= 1px !lighter solid
:background-color #e3e3e3
:background= -webkit-gradient(linear, 0 0, 0 100%, from(!lighter), to(!darker)) repeat-x, #d0581e
:background= -moz-linear-gradient(90deg, !darker, !lighter) repeat-x scroll 0 0 #d0581e
:filter= progid:DXImageTransform.Microsoft.gradient(startColorstr='!lighter', endColorstr='!darker')
:-ms-filter= "progid:DXImageTransform.Microsoft.gradient(startColorstr='!lighter', endColorstr='!darker')"
:zoom 1
:margin 0 0 0 0
:width auto
:padding 2px 14px 2px 14px
:border-radius 10px
:-webkit-border-radius 10px
:-moz-border-radius 10px
:color #FFF
When I compile the sass, i get this error for the lines beginning with -filter and -ms-filter:
SASS::SyntaxError: Expected rparen token, was single_eq token
I'm pretty sure it's my placement of the ='s, but I'm not exactly sure how to write it correctly. It works if I pass the hex values instead of !lighter, !darker, because then I can remove the = sign like so:
:filter progid:DXImageTransform.Microsoft.gradient(startColorstr='#F89F16', endColorstr='#d0581e')
:-ms-filter "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F89F16', endColorstr='#d0581e')"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
像这样解决了它,但仍在寻找最佳方法的替代建议......
自从这个答案最初发布以来,Sass 的语法已经改变。现代 sass(缩进)语法如下所示:
Solved it like this, but still looking for alternative suggestions on the best way...
The syntax for Sass has changed since this answer was originally posted. The modern sass (indented) syntax looks like this:
更新语法以使用
:
而不是=
作为属性定义:查看 SASS 参考,尽管示例是 SCSS 而不是 SASS 缩进样式。完整的SASS 文档索引。
Update your syntax to use
:
instead of=
for the property definitions:Check out the SASS Reference, though the examples are in SCSS rather than SASS indented style. Full index of the SASS documentation.