🌋

SafariのCSS対策

2022/08/14に公開

2022年6月16日, IEのサポート終了により我々Webエンジニアの心には安寧がもたらされました. しかし, その平和も束の間, 長くは続きませんでした. かのSafariによってエンジニアの心は再び漆黒の闇に包まれてしまったのです.

環境

  • OS X Yosemite 10.10.5
  • Safari 10.1.2

FlexboxのGap

flexのgapは新しいSafariでも未だに動かないようです. 以下を参考に, Safariの時だけFlexbox子要素の方にmarginを付けると解決できました. 間違ってFlexboxの親の方に付けたりもしましたのでお気を付けください. 必要に応じて:first-child:first-lastも併せてご利用ください.

@media not all and (min-resolution:.001dpcm) {
  @supports (not (translate: none)) {
    // Safari 14.0.x だけに適用される CSS
  }
}

https://zenn.dev/mimi/scraps/1f442c47fb807e
https://johnykei.net/front-end/css/fallback-of-gap-property-in-flexbox-for-safari-under-14-1/

position: absolute;

position: absolute;はちょっとズレたりするらしいですね.

https://www.azukipan.com/posts/css-safari/

position: sticky;

position: sticky;display: inlineなどと組み合わせると使えないらしいですね. display: flexだと使えるとこのことですですが, なぜか動かない. 調べたところposition: -webkit-sticky;の併記も必要だったようです. これで解決しました.

position: -webkit-sticky;
position: sticky;
display: flex;

https://zenn.dev/tigerr/articles/82fc091cfe69bd
https://ecmemo.net/safari-sticky-problem

おわりに

個人的に生じていた問題は解決したので一旦ここまでにします. 他にも問題が見つかったら追記します.

Discussion