I\'m adding a black border on images with a blue background and while doing so, it appears to add an ever so noticeable background colored outline on the INSIDE of the borde
There are several ways to avoid that annoying border-radius background bleed:
Put the <img>
in a wrapper element, and add padding to the wrapper, with a background color that matches the <img>
's border. This way, any antialiasing that happens on the image will take into account the background color of the wrapper, rather than the background color of the page.
Add a background color to your <img>
that matches the border color. It'll use the <img>
's background color instead of the page background color to do the antialiasing.
Don't bother with a border. Add padding to your <img>
equal to the border size you want, and add a background color in the border color you want. This gets you the same effect with the least amount of code.
Here's a JSFiddle with each of these methods: https://jsfiddle.net/4zpL98au/14/
There's a quite simple solution for this problemen, just by adding a background color:
background:#000;
border-radius: 100%;
border: 3px solid #000;
@stvnrynlds gave an interesting answer and I wanted to test this out myself with actual code.
I have created a snippet below with both versions for comparison.
.test1 - uses padding with a wrapper instead of a border
.test2 - uses border only
.test1{
border-radius: 50%;
width:50px;
height: 50px;
padding:5px;
background:black;
}
.test1 img{
border-radius:50%;
}
.test2 img{
border-radius: 50%;
border: 5px solid black;
}
<div class="test1"><img src="http://i.imgur.com/4LM6DpN.gif"/></div>
<div class="test2"><img src="http://i.imgur.com/4LM6DpN.gif"/></div>
Zooming in 500% into the browser you can see the end results: