Подтвердить что ты не робот

Создание диагональной линии/раздела/границы с помощью CSS

Я пытаюсь создать диагональную линию на веб-странице, чтобы действовать как разрыв раздела/раздела. Это по сути разделение цвета. Я не могу использовать изображение, как если бы страница была увеличена, изображение будет pixelate. Поэтому мне нужно иметь возможность рисовать диагональную линию непосредственно в нижней части div, как показано на рисунке ниже.

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

Есть ли способ рисовать диагональные линии в CSS? Как вы можете видеть, мне нужно создать div размером 90px и иметь разделительную/диагональную линию в этом div. Затем я могу взглянуть на добавление изображения, но главная проблема - не знать, возможно ли это с помощью CSS.

Diagonal section separator

4b9b3361

Ответ 1

С svg это довольно просто:

svg {
  display: block;
  width: 100%;
  height: 90px;
  background: yellow;
}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 10" preserveAspectRatio="none">
  <polygon points="100 0 100 10 0 10" />
</svg>

Ответ 2

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

Изначально разделил это на 2 отдельных div/треугольника и присоединил их, но благодаря web-tiki и kaiido усовершенствовал его, чтобы использовать только 1 div и минимальный CSS

*{
  border: 0;
  padding: 0;
  margin: 0;
}

#gradient {
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 90px 100vw 0 0;
  border-color: yellow black transparent transparent;
  transform: scale(1.0001);
}
<div id="gradient"></div>

Ответ 3

Используйте линейный градиент

div {
  height: 90px;
  background-image: linear-gradient(to bottom right, yellow, yellow 50%, black 50%, black);
}
<div></div>

Ответ 4

Вы можете использовать CSS3 clip:

.yellow {
  width: 100%;
  height: 90px;
  background: yellow;
  -webkit-clip-path: polygon(100% 0, 0 0, 0 100%);
  clip-path: polygon(100% 0, 0 0, 0 100%);
}
.black {
  width: 100%;
  height: 90px;
  background: black;
  -webkit-clip-path: polygon(100% 0, 0 100%, 100% 99%);
  clip-path: polygon(100% 0, 0 100%, 100% 99%);
  margin-top: -90px;
}
<div class="yellow"></div>
<div class="black"></div>

Ответ 5

Вы можете сделать это, используя градиент.

body {
  height: 200px;
  margin: 0 0 20px 0;
  background-color: transparent;
  background-size: 20px 20px;
  background-image:
     -webkit-repeating-linear-gradient(-45deg, black, black 1px, transparent 1px, transparent 14px);
  background-image:
     -moz-repeating-linear-gradient(-45deg, black, black 1px, transparent 1px, transparent 14px);
  background-image:
     -o-repeating-linear-gradient(-45deg, black, black 1px, transparent 1px, transparent 14px);
  background-image:
     repeating-linear-gradient(-45deg, black, black 1px, transparent 1px, transparent 14px);
}

JSFiddle