#css
#css
Вопрос:
Я хочу иметь div, где верхняя часть имеет черный фон и является многоугольником(0 0, 100% 0, 100% 780 пикселей, 0 670 пикселей). Другая часть фона этого div должна быть белой. Как я могу это сделать?
Ответ №1:
Когда вы говорите «полигон», вы имеете в виду полигон пути клипа?
Может быть, что-то вроде этого? Я произвольно сделал DIV 1000×1000.
.polygon-bg
{ width: 1000px;
height: 1000px;
position: relative;
}
.polygon-bg::before
{ background-color: Lime;
content: "";
clip-path: polygon(0 0, 100% 0, 100% 780px, 0 670px);
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.polygon-bg .content
{ position: relative;
z-index: 2;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="polygon-bg">
<div class="content">
<h1>Some text...</h1>
</div>
</div>
</body>
</html>
Комментарии:
1. Это хороший пример рисования полигона, но каков наилучший способ сделать его фоном для div? Нужно ли нам помещать его в собственный div, который будет находиться за основным div?
2. @AHaworth, просто поместите содержимое в div.
3. @Linux4Life531 да, это было бы нормально, если вы можете изменить HTML [вопрос помечен только CSS, но я предполагаю, что они могут изменить HTML, если он принадлежит им] — и это более понятный способ рисования (с использованием пути клипа), чем способ фонового изображения в моем ответе, где жонглированиепрозрачный и другой цвет не сразу бросается в глаза.
4. Я отредактировал приведенный выше код. Путь клипа отсечет содержимое, но если вы используете его как элемент before и позиционируете его абсолютно, это может сработать. Просто убедитесь, что любой контент, который вы, возможно, захотите перекрыть, будет расположен относительно с более высоким z-индексом. Чтобы сделать текст более заметным, я изменил цвет bg на lime, но, очевидно, можно внести изменения в цвет.
Ответ №2:
Для простой формы, подобной этой, вы могли бы использовать линейные градиенты в объявлении CSS фонового изображения, поскольку у вас может быть столько «изображений», сколько вам нравится, разделенных запятыми, и каждое со своим собственным позиционированием.
Ваша фигура представляет собой прямоугольник с треугольником внизу. Вместо того, чтобы использовать разные цвета для слияния друг с другом, мы можем просто использовать черный как для начального, так и для конечного цветов.
Итак, вот фрагмент для создания класса с именем polygon, который сделает цвет фона div белым и наложит один черный полигон.
.polygon {
width:400px;/* set these as required */
height:1024px;
background:
linear-gradient(black,black) top/100% 670px,
linear-gradient(to bottom left,black 50%,transparent 50%) 0px 670px /100% 110px;
background-color:white;
background-repeat:no-repeat;
}
<div class="polygon"></div>