Sass Mixin Error for IE specific filters like -ms-filter

前端 未结 3 1749
青春惊慌失措
青春惊慌失措 2020-12-31 05:11

I\'m trying to make a button mixin like this:

=default_button(!lighter, !darker) 
  :border= 1px !lighter solid
  :background-color #e3e3e3
  :background= -w         


        
相关标签:
3条回答
  • 2020-12-31 05:18

    Solved it like this, but still looking for alternative suggestions on the best way...

    =default_button(!lighter, !darker) 
      text-shadow= 1px 1px 3px darken(!darker, 8)
      border= 1px !darker solid
      background-color= !lighter
      background= -webkit-gradient(linear, 0 0, 0 100%, from(!lighter), to(!darker)) repeat-x, !darker
      background= -moz-linear-gradient(90deg, !darker, !lighter) repeat-x scroll 0 0 !darker
      -ms-filter = "progid:DXImageTransform.Microsoft.gradient(startColorstr='#{!lighter}', endColorstr='#{!darker}')"
      :zoom 1
      :margin 0 0 0 0
      :width auto
    

    The syntax for Sass has changed since this answer was originally posted. The modern sass (indented) syntax looks like this:

    =default_button($lighter, $darker) 
      text-shadow: 1px 1px 3px darken($darker, 8)
      border: 1px $darker solid
      background-color: $lighter
      background: -webkit-gradient(linear, 0 0, 0 100%, from($lighter), to($darker)) repeat-x, $darker
      background: -moz-linear-gradient(90deg, $darker, $lighter) repeat-x scroll 0 0 $darker
      -ms-filter: unquote("progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$lighter}', endColorstr='#{$darker}')")
      zoom: 1
      margin: 0 0 0 0
      width: auto
    
    0 讨论(0)
  • 2020-12-31 05:30

    Update your syntax to use : instead of = for the property definitions:

    =mixin($variable) 
      property: value
      property: $variable
    

    Check out the SASS Reference, though the examples are in SCSS rather than SASS indented style. Full index of the SASS documentation.

    0 讨论(0)
  • 2020-12-31 05:33

    Interpolation #{} doesn't work sometimes because it shortens hex color values. For example, it will shorten #334455 to #345, which breaks the filter syntax.

    SASS has a new function in version 3.2: ie-hex-str().

    Here is how I got it to work:

    filter: unquote("progid:DXImageTransform.Microsoft.gradient(startColorstr='")
    + ie-hex-str($start)
    + unquote("', endColorstr='")
    + ie-hex-str($stop)
    + unquote("',GradientType=0)"); /* IE6-9 */
    
    • SASS Changelog
    • SASS Functions
    0 讨论(0)
提交回复
热议问题