Как разделить фон страницы вертикальной полилинией? - PullRequest
0 голосов
/ 13 ноября 2018

I найдено как разбить страницу по вертикальной линии - см. jsfiddle : enter image description here

Код ниже -

body {
    background-color: white;
}

#background {
    position: fixed;
    top: 0px;
    left: 0px;
    width: 50%;
    height: 100%;
    background-color: black;
    z-index: 1;
}

#content {
    position: relative;
    z-index: 2;
    padding: 30px;
    text-align: center;
    font-weight: bold;
    color: red; 
    font-family: Arial, sans-serif;
}

Теперь я хотел бы заменить вертикальную линию полилинией, чтобы получить что-то вроде этого: enter image description here

Как я могу сделать это с помощью CSS?

P.S. Я не могу использовать фоновое изображение, так как полилинии могут быть разными (точки будут иметь разные координаты).

1 Ответ

0 голосов
/ 13 ноября 2018

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

body {
  margin:0;
}
.box {
  height:100vh;
  background:
    linear-gradient(to bottom right,#000 49.8%,transparent 50%) 0 0/70% 120%,
    linear-gradient(to top right,#000 49.8%,transparent 50%) 0 0/60% 70%,
    linear-gradient(#000,#000) 0 100%/50% 31%,
    linear-gradient(to bottom right,#000 49.8%,transparent 50%) 55.3% 100%/10% 30.2%;
  background-repeat:no-repeat;
}
<div class="box">

</div>

Вы также можете рассмотреть clip-path внутри псевдоэлемента, и это будет проще (https://bennettfeely.com/clippy/)

body {
  margin:0;
}
.box {
  height:100vh;
  position:relative;
}
.box:before {
  content:"";
  position:absolute;
  top:0;
  left:0;
  bottom:0;
  right:20%;
  background:#000;
  -webkit-clip-path: polygon(0 0, 72% 0, 59% 33%, 68% 62%, 47% 100%, 0 100%);
clip-path: polygon(0 0, 72% 0, 59% 33%, 68% 62%, 47% 100%, 0 100%);
}
<div class="box">

</div>
...