|
|
1
Temani Afif
6 年前
您可以尝试使用具有径向渐变的多个背景,并为阴影应用下拉阴影过滤器:
.box {
width:200px;
height:100px;
margin:10px;
background:
linear-gradient(#f00,#f00) top/100% calc(100% - 25px),
radial-gradient(85px 30px at bottom,transparent 50%,#f00 52%) 0 calc(100% - 8px)/80px 20px,
radial-gradient(85px 30px at 50% 10px,#f00 50%,transparent 52%) 80px 100%/80px 30px,
radial-gradient(85px 30px at bottom,transparent 50%,#f00 52%) 160px calc(100% - 8px)/80px 20px;
background-repeat:no-repeat;
filter:drop-shadow(0 0 5px blue);
}
<div class="box">
</div>
如果您想要更多,只需添加更多渐变,将它们交替并每次增加背景位置:
.box {
width:300px;
height:100px;
margin:10px;
background:
linear-gradient(#f00,#f00) top/100% calc(100% - 25px),
/* top curve */
radial-gradient(85px 30px at bottom,transparent 50%,#f00 52%) 0 calc(100% - 8px)/80px 20px,
/* bottom curve */
radial-gradient(85px 30px at 50% 10px,#f00 50%,transparent 52%) 80px 100%/80px 30px,
/* top curve */
radial-gradient(85px 30px at bottom,transparent 50%,#f00 52%) 160px calc(100% - 8px)/80px 20px,
/* bottom curve */
radial-gradient(85px 30px at 50% 10px,#f00 50%,transparent 52%) 240px 100%/80px 30px;
background-repeat:no-repeat;
filter:drop-shadow(0 0 5px blue);
}
<div class=“box”>
</部门>
使用CSS变量更容易,您还可以控制曲线:
.box {
--p:80px;
--top:radial-gradient(calc(var(--p) + 5px) 30px at bottom,transparent 50%,#f00 52%);
--bottom:radial-gradient(calc(var(--p) + 5px) 30px at 50% 10px,#f00 50%,transparent 52%);
width:300px;
height:100px;
margin:10px;
background:
linear-gradient(#f00,#f00) top/100% calc(100% - 25px),
var(--top) calc(0*var(--p)) calc(100% - 8px)/var(--p) 20px,
var(--bottom) calc(1*var(--p)) 100% /var(--p) 30px,
var(--top) calc(2*var(--p)) calc(100% - 8px)/var(--p) 20px,
var(--bottom) calc(3*var(--p)) 100% /var(--p) 30px,
var(--top) calc(4*var(--p)) calc(100% - 8px)/var(--p) 20px,
var(--bottom) calc(5*var(--p)) 100% /var(--p) 30px;;
background-repeat:no-repeat;
filter:drop-shadow(0 0 5px blue);
}
<div class="box">
</div>
<div class="box" style="--p:100px;">
</div>
<div class="box" style="--p:60px;">
</div>
另一种简化语法:
.box {
--p:80px;
--top:radial-gradient(calc(var(--p) + 5px) 30px at bottom,transparent 50%,#f00 52%);
--bottom:radial-gradient(calc(var(--p) + 5px) 30px at 50% 10px,#f00 50%,transparent 52%);
width:300px;
height:100px;
padding-bottom:25px;
box-sizing:border-box;
margin:10px;
background:
var(--top) calc(0*var(--p)) calc(100% - 8px),
var(--bottom) calc(1*var(--p)) 100% ,
var(--top) calc(2*var(--p)) calc(100% - 8px),
var(--bottom) calc(3*var(--p)) 100% ,
var(--top) calc(4*var(--p)) calc(100% - 8px),
var(--bottom) calc(5*var(--p)) 100% ,
#f00 content-box;
background-size:var(--p) 20px,var(--p) 30px;
background-repeat:no-repeat;
filter:drop-shadow(0 0 5px blue);
}
<</部门>
</部门>
<div class=“box”style=“--p:60px;”gt;
|