I have an image placed inside a div, the div has rounded corners which works as a mask to hide the image corners and display it as a circle. It works in all browser except for Safari! does anyone knows how to fix it?
I tried -webkit-padding-box, -webkit-mask-box-image but both didn't work.
HTML:
<div class="cat"><img src="images/colorful-flowers-hd-wallpaper.jpg" /></div>
CSS:
.cat{
    width: 128px;
    height: 128px;
    margin: 20px 96px 0px 96px;
    position: relative;
    float: left;
    border-radius: 50%;
    overflow: hidden;
    border-top: 1px solid #111;
    border-bottom: 1px solid #fff;
    background: #fff;
    -webkit-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.6);
    box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.6);
}
.cat img{
    position: absolute;
    border: none;
    width: 138px;
    height: 138px;
    top: -8px;
    left: -8px;
    cursor: pointer;
}
fiddle
The best way around this is by specifying overflow: hidden; on the parent element.
This is due to the fact that the parent element has border-radius applied to it but the image doesn't have any. The image tries to overflow and hence override the border-radius applied on the parent element.
Simple Solution:
In addition to setting the border-radius on parent element, you also need to add following CSS rule to the img tag:
img {
   border-radius: inherit;
}
Caveat:
If your image does not load correctly and you still want the border-radius to be applied, the above approach may not work and you may have to use the following CSS rule on the parent element:
div {
   overflow: hidden;
}
Note that overflow: hidden must be used with caution as it may interfere with other pseudo-elements you may have with respect to the parent element.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With