LoginSignup
3
2

More than 5 years have passed since last update.

StylusでOldなIEにも対応したOpacity

Posted at

こんなやつをMixinで書きたい

css
a:hover {
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: 0.5;
}

通常運転でMixin書こうにも、途中でコロンで区切られてたり、最後は関数になってたりと色々課題が多い。

stylus
opacity(val)
  filter progid:DXImageTransform.Microsoft.Alpha(Opacity=val * 50);
  opacity val

a
  &:hover
    opacity(0.5)

調べたら、やりたいことそのまま公式に書いてあった。
unquote()を使用するといいらしい。
この例では変数でIEのサポートも管理してくれていて大変便利だと思った。

stylus
support-for-ie ?= true

opacity(n)
  if(support-for-ie) {
     filter unquote('progid:DXImageTransform.Microsoft.Alpha(Opacity=' + round(n * 100) + ')')
  }
  opacity n

a
  &:hover
    opacity(0.5)
css
//出力結果
a:hover {
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: 0.5;
}
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2