Is it possible to blend only the drop-shadow of an element with the color of the element it is overlapping?
For example: I have one element overlapping the other. The element on top has a light-grey drop shadow. The element below is black. I don't want any blend applied to either of the elements themselves but want the drop-shadow of the overlapping element to blend with color of the element below, creating a darker grey where the shadow falls on the overlapped element.
If I wanted to apply the effect to the entire element including the drop-shadow then this can be achieved using mix-blend-mode: multiply. I effectively want to use mix-blend-mode on the drop-shadow only - can this be done?
You can't do this, but what you can do is apply the drop-shadow to a pseudo-element that is the same size and uses a multiply blend mode.
.above {
position: absolute;
background: green;
width: 100px;
height: 100px;
}
.above::before {
box-shadow: 3pt 3pt 0 0 dodgerblue;
mix-blend-mode: multiply;
content: "";
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
}
.below {
position: absolute;
top: 50px;
left: 50px;
width: 100px;
height: 100px;
background: red;
}
<div class="below">
</div>
<div class="above">
</div>
I used these colours for illustrative purposes, but you can replace them with your own.