1

我正在尝试创建一个带有凹面的梯形。

我更喜欢跨浏览器兼容且响应迅速的 CSS3 解决方案。

我发现这篇文章提供了一个与我预期的解决方案非常相似的解决方案。但是,我更喜欢凹面不要像提供的解决方案中那样圆,这是我目前无法实现的。

非常重要的是该形状支持 Alpha 通道 (rgba),因为我想在该形状后面放置一个图像,该图像应该通过该形状发光。

解决方案应如下所示:

带凹边的梯形

4

1 回答 1

1

您可以使用 adiv创建具有所需大小的矩形。设置divposition: relativeoverflow: hidden

position: absolute然后使用带有和 opaque的伪元素box-shadow

#container{
  width: 400px;
  height: 200px;
  background-image: url("http://www.menucool.com/slider/jsImgSlider/images/image-slider-2.jpg");
  padding: 50px;
}
#trapezoide{
  position:relative;
  overflow: hidden;
  
  /* Play with this properties to achieve the trapezoide just like you want. */
  height: 100px;
  width: 300px;
}

#trapezoide:before{
  content: "";
  border-radius: 50%;
  transform: translate(50%, -50%);
  position: absolute;
  box-shadow: 0 0 0 500px black;
  
  /* Play with this properties to achieve the trapezoide just like you want. */
  width: 800px;
  height: 800px;
  top: -288px;
  right: -100px;
}
<div id="container">
  <div id="trapezoide"></div>
</div>

调整指示的属性以使梯形看起来符合您的要求。

于 2016-12-02T11:47:11.817 回答