【发布时间】:2019-08-12 02:26:47
【问题描述】:
https://i.imgur.com/D69glPV.png - 我正在尝试使用 CSS/HTML 创建这个设计。我最初的想法是创建一个白色的“波浪”容器,用 SVG 形状包裹图标,但我想知道你是否真的可以只用 CSS 来制作它?你们将如何处理这个问题? :)
【问题讨论】:
https://i.imgur.com/D69glPV.png - 我正在尝试使用 CSS/HTML 创建这个设计。我最初的想法是创建一个白色的“波浪”容器,用 SVG 形状包裹图标,但我想知道你是否真的可以只用 CSS 来制作它?你们将如何处理这个问题? :)
【问题讨论】:
你这样做的方式是使用 SVG 过滤器: SVG goo on Codepen
您也可能想阅读此The Gooey Effect
最重要的是定义一个goo 过滤器。接下来绘制几个圆圈 (border-radius:50%;) 并应用 svg 过滤器。
SVG 元素的大小无关紧要,您可以将其隐藏起来。
body{background:skyBlue;}
svg{position:absolute;left:-10em;}
.wrap {
display: block;
margin:0 auto;
width: 300px;
height: 260px;
position: relative;
filter:url(#goo);
}
.wrap div {
position: absolute;
left: 0px;
top: 90px;
height: 80px;
width: 80px;
border-radius:50%;
background-color: white;
color:red;
text-align:center;
line-height:80px;
}
.wrap div:nth-child(2){
left: 90px;
}
.wrap div:nth-child(3){
left: 180px;
}
<svg width="1" height="1">
<defs>
<filter id="goo">
<feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
<feColorMatrix in="blur" mode="matrix"
values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 40 -10" result="goo"/>
<feBlend in="SourceGraphic" in2="goo" />
</filter>
</defs>
</svg>
<div class ="wrap">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
【讨论】:
feGaussianBlur 的stdDeviation 并增加feColorMatrix 的alpha alpha 值(本例中为40)。但是,如果您需要这些项目彼此远离,则需要考虑将其绘制为 SVG 形状