Как установить пользовательский фон с помощью свойства CSS clip-path?

Я борюсь с clip-path свойство для создания абстрактного фона, и я не хочу использовать файл изображения или SVG, я пытался с этим свойством, но я не могу достичь этого результата: введите описание изображения здесь

мой основной код:

.bg{
  height: 100vh;
    margin: 0;
}
.shape-1{
     -webkit-clip-path: polygon(0 0, 10% 45%, 100% 0);
    clip-path: polygon(0 10%, 40% 36%, 100% 0);
    background:  #3e19c6;
    height: 100%;
    width: 100%;
    position: absolute;
    margin: 0;
    z-index: -1; 
}


.shape-2{
  -webkit-clip-path: polygon(0 62%, 100% 21%, 100% 100%, 0% 100%);
    clip-path: polygon(0 62%, 90% 21%, 100% 100%, 0% 85%);
background:  #c61951;
height: 100%;
width: 100%;
position: absolute;
margin: 0;
z-index: -1;   
}
<div class="bg">
    <div class="shape-1">    </div>
    <div class="shape-2">    </div>
</div>

1 ответ

Решение

Вы можете обратиться к этому полезному веб-сайту, который позволяет создавать сложные формы и комбинировать их для создания фона.

.bg{
 height: 100vh;
    margin: 0;
}
.shape-1{
    -webkit-clip-path: polygon(0 0, 0 45%, 100% 0);
    clip-path: polygon(0 0, 0 36%, 100% 0);
    background:  #3e19c6;
    height: 100%;
    width: 100%;
    position: absolute;
    margin: 0;
    z-index: -1;    
    
}

.shape-2{
    -webkit-clip-path: polygon(0 62%, 100% 21%, 100% 100%, 0% 100%);
    clip-path: polygon(0 62%, 100% 21%, 100% 100%, 0% 100%);
background:  #c61951;
height: 100%;
width: 100%;
position: absolute;
margin: 0;
z-index: -1;   
}
<div class="bg">
    <div class="shape-1">    </div>
    <div class="shape-2">    </div>
</div>

Незачем clip-path для этого вы можете добиться этого более поддерживаемым способом, учитывая фон и градиент, и только один элемент. Это также будет отзывчивым:

body {
 margin:0;
 height:100vh;
 background:
  linear-gradient(to top left,transparent 49.8%, #3e19c6 50%) top/100% 30%,
  linear-gradient(to bottom right,transparent 49.8%, #c61951 50%) 0 30%/100% 30%,
  linear-gradient(#c61951,#c61951) bottom/100% 49.5%;
  
 background-repeat:no-repeat;
}

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