✍️
CSSのGradientをJSで上書きする際のCross Browser対応
概要
- CSSのグラデーション
linear-gradient
をJavaScriptで上書きしようとした際に、ブラウザ間で表示が異なる (※2019年2月時点) - 結論からいうと
-webkit-gradient
を使用することで対応が可能です。 - Volumeなど、動的に動かす必要のあるIndicatorを作成する際に、参考になるかと思います。
CSSの場合
-
linear-gradient
と-webkit-linear-gradient
のみの指定で、Chrome, Safari, Firefoxに対応できる - Firefoxも
-webkit-linear-gradient
で表示を確認 - Can I Use...を参照
JavaScriptの場合
JSでstyleを上書きしようとして、嵌ったのがSafariでした。CSSの場合は-webkit-linear-gradient
で問題ないのですが、JSで書き換えようとするとうまくいきませんでした。
解決策
調査・検証をしたところ、-webkit-gradient
だとChrome, Safari, Firefoxに対応できそうです(ただしIEは未確認)。確認のためサンプルコードを書きましたので、各ブラウザでご確認ください。
実装例
const box2 = document.getElementById('webkit-gradient')
box2.style.background = '-webkit-gradient(linear, left top, right top, color-stop(0.5, red), color-stop(0.5, blue))'
Discussion