border-radiusとoverflow: hidden;を指定した際、Safariでborder-radiusが効かないことがあったので、対応方法をメモ。
サンプルコード
border-radiusとoverflow: hidden;で円形にマスクをかけて、オンマウス時に子要素のimgを拡大させるようにします。
HTML
<div class="circle"> <img src="img.jpg" width="200" height="200"> </div>
CSS
.circle {
width: 200px;
height: 200px;
overflow: hidden;
border-radius: 100px;
}
.circle img {
transition: 500ms;
}
.circle:hover img {
transform: scale(1.1);
}
これで問題ないかと思ったのですが、Safariだとオンマウスしてimgがアニメーションしている間、マスクが解除されてしまっていました。
Safariでうまくいかなかった場合のデモページ
対応方法としては、マスクを設定している要素にz-indexを指定するといいようです。
CSS
.circle {
position: relative;
z-index: 1;
width: 200px;
height: 200px;
overflow: hidden;
border-radius: 100px;
}
.circle img {
transition: 500ms;
}
.circle:hover img {
transform: scale(1.1);
}
【参考サイト】
同じ不具合で悩んでいたため、大変助かりました。
ありがとうございました!
mankindさん
コメントありがとうございます。
お役に立てたようでよかったです!