我只能使用CSS创建此形状吗?

Iva*_*S95 3 html css css-shapes

我正在为具有特定形状的网页构建英雄部分,此刻,我只是将图像用作实际部分背景的叠加层,但我希望减少提出的请求数量,想知道是否可以使用CSS完成以下形状:

在此处输入图片说明

因此,黑色部分是实际图像所在的位置,而白色部分是我尝试使用CSS构建的部分;

Tem*_*fif 7

这是一个具有一个元素的想法,并且radial-gradient可以对其进行近似

.box {
  width: 400px;
  height: 200px;
  display:inline-block;
  overflow:hidden;
  position:relative;
}
.box:before,
.box:after{
  content:"";
  position:absolute;
  top:0;
  left:0;
  right:50%;
  bottom:0;
  background:
    radial-gradient(100% 116.3% at top   right, transparent 99%,#fff 100%) top,
    radial-gradient(100% 116.3% at bottom left, #fff 99%,transparent 100%) bottom;
  background-size:100% 50%;
  background-repeat:no-repeat;
}
.box:after {
  right:0;
  left:50%;
  transform:scaleX(-1);
}

body {
  background:linear-gradient(to right, purple, blue);
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">

</div>
Run Code Online (Sandbox Code Playgroud)

然后,您可以调整左/右/底部属性,以通过一些oveflow和重叠来控制总体形状:

.box {
  width: 400px;
  height: 200px;
  display:inline-block;
  overflow:hidden;
  position:relative;
}
.box:before,
.box:after{
  content:"";
  position:absolute;
  top:0;
  left:-2px;
  right:40%;
  bottom:-45%;
  background:
    radial-gradient(100% 116.3% at top   right, transparent 99%,#fff 100%) top,
    radial-gradient(100% 116.3% at bottom left, #fff 99%,transparent 100%) bottom;
  background-size:100% 50%;
  background-repeat:no-repeat;
}
.box:after {
  right:-2px;
  left:40%;
  transform:scaleX(-1);
}

body {
  background:linear-gradient(to right, purple, blue);
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">

</div>
Run Code Online (Sandbox Code Playgroud)


这是使用SVG代替的想法radial-gradient

.box {
  height: 200px;
  overflow:hidden;
  position:relative;
}
.box:before,
.box:after{
  content:"";
  position:absolute;
  top:0;
  left:0;
  right:50%;
  bottom:0;
  background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" preserveAspectRatio="none"><path fill="white" d="M64 64 C56 30 8 48 0 0 L0 64 Z"/></svg>');
  background-size:100% 100%;
}
.box:after {
  right:0;
  left:50%;
  transform:scaleX(-1);
}

body {
  background:linear-gradient(to right, purple, blue);
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">

</div>
Run Code Online (Sandbox Code Playgroud)

这是一个编辑SVG的不错的在线工具:http : //jxnblk.com/paths/。只需在路径末尾附加路径并进行编辑即可;

http://jxnblk.com/paths/?d=M64 64 C56 30 8 48 0 0 L0 64 Z
Run Code Online (Sandbox Code Playgroud)

  • 我还是想用SVG来保持代码干净,但这令人印象深刻。 (5认同)