Apply blend mode to drop-shadow only

眉间皱痕 提交于 2020-05-29 06:53:29

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/52838406/apply-blend-mode-to-drop-shadow-only

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!