Как создать трапецию с вогнутой стороной в CSS3?

Я пытаюсь создать трапецию с одной вогнутой стороной.

Я предпочитаю решение CSS3, которое совместимо с браузерами и отзывчиво.

Я нашел этот пост, который предоставляет решение, очень похожее на мое ожидаемое решение. Однако я предпочитаю, чтобы вогнутая сторона была не такой круглой, как в представленном решении, чего я пока не смог достичь.

Очень важно, что форма поддерживает альфа-канал (rgba), потому что я хочу поместить изображение позади формы, которая должна просвечивать через форму.

Решение должно выглядеть следующим образом:

Трапеция с вогнутой стороной

1 ответ

Решение

Вы можете использовать div создать прямоугольник с нужным размером. Установить div в position: relative а также overflow: hidden,

Затем используйте псевдоэлемент с position: absolute и непрозрачный 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>

Настройте указанные свойства, чтобы трапеция выглядела так, как вы хотите.

Другие вопросы по тегам