Существуют различные подходы, которые могут быть приняты для создания этой формы. Ниже приведено подробное описание возможностей:
SVG
- рекомендуемый способ создания таких фигур. Он предлагает простоту и масштабируемость. Ниже приведены несколько возможных способов:
1- Использование элемента пути:
Мы можем использовать элемент SVG
path
для создания этой формы и заполнить ее каким-то твердым цвет, градиент или рисунок.
Для определения фигур в элементе path
используется только один атрибут d
. Этот атрибут содержит несколько коротких команд и несколько параметров, необходимых для работы этих команд.
Ниже приведен необходимый код для создания этой формы:
Ниже краткое описание команд path
, используемых в приведенном выше коде:
M
команда используется для определения начальной точки. Он появляется в начале и указывает точку, из которой должен начинаться рисование. L
используется для рисования прямых линий. Q
команда используется для рисования кривых. Z
используется для закрытия текущего пути. Выходное изображение:
Рабочая демонстрация:
svg {
width: 100%;
}
2. Clipping:
Clipping означает удаление или скрытие некоторых элементов элемента.
В этом подходе мы определяем область отсечения с помощью элемента SVG clipPath
и применяем это к прямоугольный элемент. Любая область, находящаяся за пределами отсекающей области, будет скрыта.
Ниже приведен код:
Ниже приведено краткое описание элементов, используемых в приведенном выше коде:
defs
используется для определения элемента / объектов для последующего использования в документе SVG. clipPath
element используется для определения области отсечения. rect
используется для создания прямоугольников. clip-path
используется для связывания пути обрезки, созданного ранее. Рабочая демонстрация:
svg {
width: 100%;
}
1- Использование псевдоэлемента:
Мы можем использовать псевдо-элемент ::before
или ::after
для создания этой фигуры. Шаги для создания этого приведены ниже:
::before
ИЛИ ::after
, имеющим ширину и высоту больше, чем его родитель. border-radius
], чтобы создать закругленную фигуру. overflow: hidden
в родительский элемент, чтобы скрыть ненужную часть. Необходимый HTML:
Все, что нам нужно, это один элемент div
, возможно имеющий некоторый класс, такой как shape
:
Рабочий демонстрационный файл:
.shape {
position: relative;
overflow: hidden;
height: 80px;
}
.shape::before {
border-radius: 100%;
position: absolute;
background: black;
right: -200px;
left: -200px;
top: -200px;
content: '';
bottom: 0;
}
2- Радиальный градиент:
В этом подходе мы будем использовать функцию CSS3 radial-gradient()
для рисования этой фигуры на элементе в качестве фона. Однако этот подход не создает очень четкое изображение, и он может иметь некоторые зубчатые углы.
Необходимый HTML:
Только один элемент div
с потребуется некоторый класс, т. е.
Необходимый CSS:
.shape {
background-image: radial-gradient(120% 120px at 50% -30px, #000 75%, transparent 75%);
}
Рабочая демонстрация:
.shape {
background: radial-gradient(120% 120px at 50% -30px, #000 75%, transparent 75%) no-repeat;
height: 80px;
}
Хотя это не требуется в этом случае, но для полноты, Я также добавляю этот подход. Это может быть полезно и в некоторых случаях:
HTML5 Canvas:
Мы можем нарисовать эту фигуру на элементе Canvas HTML5, используя функции пути:
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(0, 40);
ctx.quadraticCurveTo(311, 80, 622, 40);
ctx.lineTo(622, 0);
ctx.fill();
Ниже приведено краткое описание методов, используемых в приведенном выше коде:
beginPath()
используется для создания нового пути , Когда новый путь создан, будущие команды рисования направляются в путь. moveTo(x, y)
перемещает перо в координаты, заданные x
и y
. lineTo(x, y)
рисует прямую линию от текущего положения пера до точки, заданной x
и y
. quadraticCurveTo(cp1x, cp1y, x, y)
рисует кривую от текущего положения пера до точки, указанной в x
и y
с использованием контрольной точки, заданной параметрами cp1x
и cp1y
. fill()
заполняет текущий путь, используя правило ненулевой или четной обмотки. Полезные ресурсы: