这是一个有效的解决方案。它结合了使用filter: drop-shadow
在形状周围创建阴影和一些绝对定位来隐藏边框。
HTML
<div class="orbs">
<div class="big"></div>
<div class="small"></div>
<div class="big-overlay"></div>
</div>
CSS
.orbs
{
position:relative;
margin:50px;
-webkit-filter: drop-shadow(0 0 20px black);
}
.orbs div
{
border-radius:50%;
background-color:red;
border:5px solid orange;
position:absolute;
}
.big
{
z-index:1;
width:400px;
height:400px;
}
.small
{
z-index:2;
width:60px;
height:60px;
position:absolute;
top:20px;
left:20px;
}
.big-overlay
{
z-index:3;
width:400px;
height:400px;
top:5px;
left:5px;
background-color:red !important;
border:0 !important;
}
JSFiddle 示例。
请注意,filter:
并非所有浏览器都支持 CSS 属性(目前)(参考),并且该演示仅适用于-webkit-
启用的浏览器。
== 更新 ==
在查看Bojangles的出色答案并将其与我的结合时,您可以仅使用一个 HTML 元素来创建此形状。
HTML
<div class="shape"></div>
CSS
.shape
{
margin:50px;
width:400px;
height:400px;
border-radius:50%;
z-index:1;
background-color:red;
border:5px solid orange;
position:absolute;
-webkit-filter: drop-shadow(0 0 20px black);
}
.shape:before
{
content:'';
display:block;
z-index:2;
width:60px;
height:60px;
position:absolute;
top:20px;
left:20px;
border-radius:50%;
background-color:red;
border:5px solid orange;
position:absolute;
}
.shape:after
{
content:'';
display:block;
z-index:3;
width:400px;
height:400px;
border-radius:50%;
background-color:red !important;
border:0 !important;
position:absolute;
}
JSFiddle 示例。