使用负半径的 div 使阴影看起来正确

Posted

技术标签:

【中文标题】使用负半径的 div 使阴影看起来正确【英文标题】:Make shadow looks correct with div with negaitve radius 【发布时间】:2018-04-10 08:26:50 【问题描述】:

如何使用 css 在图像上绘制具有如此负半径的 div,我的问题的重点是如何在这个圆形区域使用阴影?我尝试对 ::before,::after 元素使用一些技巧,它适用于负半径,但是当我尝试对这个元素使用阴影时,它看起来不正确,因为这个 div 的所有正方形都开始可见。

enter image description here

.side-menu__corner 
  width: 12px;
  height: 12px;
  background: blue;
  position: relative;
  overflow: hidden;



.side-menu__corner:before 
  content: "";
  display: block;
  background: white;
  position: absolute;
  bottom: -9px;
  left: -9px;
  width: 20px;
  height: 20px;
  border-radius: 20px;
<div class="side-menu__corner">
</div>

【问题讨论】:

【参考方案1】:

您可以像这样使用带有径向渐变的阴影滤镜:

.box 
   width:200px;
   height:200px;
   margin:50px;
   background:radial-gradient(circle at bottom left,transparent 70%,blue 71%);
   filter:drop-shadow(0px 0px 11px #000);
<div class="box">

</div>

【讨论】:

以上是关于使用负半径的 div 使阴影看起来正确的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 圆角半径和阴影问题

边框阴影box-shadow

CSS3阴影效果

具有拐角半径和阴影视图的 UIView 不会在拐角处剪辑子视图

css3中的部分属性

如何用JS给网页的一个DIV添加一个阴影,使鼠标移入的时候阴影出现鼠标移出的时候阴影消失