【バグ】Safariでborder-radiusがhoverアニメーション中に効かない場合の対応
以前案件で「iPhoneで丸くトリミングしてる画像が一瞬四角の画像になるんだけど?」と言われて調べたところiPnoneではなくSafariでborder-radiusが効かない場合があることがわかりました。 この記事ではその対処法を紹介します。
目次
Safariでborder-radiusがhoverアニメーション中に効かない場合の対応
border-radius
を指定している要素にz-index
を指定。
終わり!
ホントにこれだけで解決なのですが効かない状況を説明します。
Safariのバージョン
バージョン11.1.2
デモ
以下の丸い画像をhoverしたら拡大するアニメーションするデモを例に説明します。
※当然ですがSafariで見ないと効果がわからないです
HTML
<div class="c-coin">
<img src="coin.jpg" alt="画像" class="c-coin__image">
</div>
CSS(SCSS)
hoverすると画像が0.3秒で1.14倍になるCSS
.c-coin {
position: relative;
width: 200px;
height: 200px;
border-radius: 50%;
overflow: hidden;
}
.c-coin__image {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform .3s;
.c-coin:hover & {
transform: scale(1.14);
}
}
効かない状況
hoverアニメーションのtransition
で指定している.3s
つまり0.3秒間だけ効かないようです。
問題を解決したCSS
最初の述べたように
border-radius
を指定している要素にz-index
を指定。
.c-coin {
position: relative;
width: 200px;
height: 200px;
border-radius: 50%;
overflow: hidden;
z-index: 1;//border-radius指定している要素にz-indexを追加
}
.c-coin__image {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform .3s;
.c-coin:hover & {
transform: scale(1.14);
}
}
参考にさせていただいた記事
リンク