做一个有点弯曲的div

eng*_*nws 2 html javascript css css-shapes

我想这个问题已被问过十亿次,但只是另一个案例.

如何使用HTML/CSS(如果没有其他选项,JS - 我正在考虑画布或SVG):

在此输入图像描述

注意:div应该能够在整个绿色部分包含滚动背景图像.这应该适用于IE9 +和常见的移动设备(默认浏览器).此外,形状周围的空间需要保持透明(不能使用白色元素来创建圆形形状)

什么是更好的选择?

Man*_*mar 5

CSS实施

您可以在容器中创建边框形状并隐藏不需要的部分.我使用视口大小的单位是可扩展的.通过操作值可以进一步改善您的需求.

body {
  background: #F5F5F5;
}
.container {
  height: 70vh;
  overflow: hidden;
  display: inline-block;
  width: 30vh;
  background: white;
  margin: 0 10px;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}
.curve {
  background: transparent;
  border: 20vh solid #7cc576;
  border-radius: 35%;
  height: 100vh;
  transform: translateY(-20vh);
  width: 50vh;
}
.container-left-curved {
  transform: rotateY(180deg);
}
.container-right-curved {
  transform: rotateY(0deg);
}
Run Code Online (Sandbox Code Playgroud)
<div class="container container-left-curved">
  <div class="curve">
  </div>
</div>

<div class="container container-right-curved">
  <div class="curve">
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

SVG实施

我保存了您的图像并通过Inkscape编辑器生成了优化的SVG代码.这看起来比纯CSS解决方案好很多.

body {
  background: lightgray;
}
Run Code Online (Sandbox Code Playgroud)
<svg height="300px" width="200px" version="1.1" viewBox="0 0 492 746.00001" fill="#000">

  <g id="layer1" transform="translate(-119.71 -187.93)">
    <path id="path3349" d="m189.71 620.93c0-206.67-0.33548-311-1-311-0.55 0-1-2.25-1-5s-0.45-5-1-5-1-1.9984-1-4.441c0-2.4425-0.45-4.7191-1-5.059-0.55-0.33992-1-1.9415-1-3.559s-0.45-2.941-1-2.941-1-1.0984-1-2.441c0-1.3425-0.45-2.7191-1-3.059-0.55-0.33992-1-1.9415-1-3.559s-0.45-2.941-1-2.941-1-0.88631-1-1.9696-0.9-3.572-2-5.5304c-1.1-1.9585-2-4.2222-2-5.0304 0-0.80827-0.45-1.4696-1-1.4696s-1-0.9-1-2-0.45-2-1-2-1-0.9-1-2-0.45-2-1-2-1-0.9-1-2-0.45-2-1-2-1-0.9-1-2-0.45-2-1-2-1-0.59015-1-1.3114c0-0.72129-0.9-2.2775-2-3.4582s-2-2.7323-2-3.448-0.9-1.8633-2-2.5503c-1.1-0.68696-2-2.0459-2-3.0198 0-0.97393-0.9-2.4195-2-3.2123-1.1-0.79284-2.0021-1.9047-2.0046-2.4708-0.002-0.56608-1.3525-2.4673-3-4.225-1.6474-1.7577-3-3.5577-3.0056-4-0.006-0.44232-2.2557-3.1613-5-6.0422-2.7444-2.8809-4.9897-5.6545-4.9897-6.1636 0-0.50907-2.534-3.4395-5.6312-6.512l-5.6312-5.5864h207.31 207.31l11.311 11.25c6.2212 6.1875 11.317 11.7 11.325 12.25 0.007 0.55 1.788 2.8 3.9571 5s3.9659 4.7875 3.9929 5.75 0.52562 1.75 1.1081 1.75c0.58246 0 0.73793 0.51953 0.34549 1.1545-0.39555 0.64-0.27852 0.88566 0.2626 0.55123 0.98336-0.60775 4.3329 2.601 4.3329 4.1507 0 0.45847 0.9 1.6481 2 2.6436 1.1 0.99549 2 2.6402 2 3.655s0.45 1.845 1 1.845 1 0.59015 1 1.3114c0 0.72129 0.9 2.2775 2 3.4582s2 2.8406 2 3.6886c0 0.84799 0.45 1.5418 1 1.5418s1 0.9 1 2 0.45 2 1 2 1 0.9 1 2 0.45 2 1 2 1 0.9 1 2 0.47656 2 1.059 2c0.58246 0 0.81241 0.39901 0.51101 0.88669-0.30141 0.48768 0.12204 1.4428 0.94098 2.1224 0.81894 0.67966 1.489 2.0806 1.489 3.1133s0.45 1.8776 1 1.8776 1 1.35 1 3 0.45 3 1 3 1 1.1516 1 2.559c0 1.4514 0.43284 2.2915 1 1.941 0.58342-0.36057 1 0.65628 1 2.441 0 1.6825 0.45 3.059 1 3.059s1 1.8 1 4 0.45 4 1 4 1 1.8 1 4 0.45 4 1 4 1 2.25 1 5 0.45 5 1 5c0.66452 0 1 104 1 310v310h-210-210v-311z"
    fill="#7ac474" />
  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)