Yes...sort of...
The question is a little vague but can we remove the white 'part' of an image and let us see the background color of the element behind it?
Yes we can...with mix-blend-mode
.
body {
background: blue;
text-align: center;
}
div {
mix-blend-mode: multiply;
display: inline-block;
margin: 1em auto;
}
<div>
<img src="http://images.clipartpanda.com/penguin-clip-art-penguin_clip_art_7050.jpg" alt="" />
</div>
Note: this is only showing that background of the element behind the div holding the image....nothing happens if you add a background color to the wrapping div.
For that you might need yet another wrapper.
body {
background: blue;
text-align: center;
}
div.parent {
display: inline-block;
margin: 1em auto;
background: red;
}
div.child {
mix-blend-mode: multiply;
}
<div class="parent">
<div class="child">
<img src="http://images.clipartpanda.com/penguin-clip-art-penguin_clip_art_7050.jpg" alt="" />
</div>
</div>
or perhaps as a background to a pseudo-element:
body {
background: blue;
text-align: center;
}
.child {
width: 200px;
height: 200px;
background: red;
margin: 1em auto;
position: relative;
background-color: red;
}
div.child::before {
mix-blend-mode: multiply;
content: '';
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background-image: url(http://images.clipartpanda.com/penguin-clip-art-penguin_clip_art_7050.jpg);
background-size: cover;
z-index: 0;
}
<div class="child"></div>