shape-outside
Базовая линия Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Свойство shape-outside CSS определяет форму — которая может быть не прямоугольной — вокруг которой должен обтекаться смежный инлайновый контент. По умолчанию инлайновый контент обтекает его рамку; shape-outside предоставляет способ настройки этого обтекания, позволяя обтекать текст сложными объектами, а не простыми прямоугольниками.
Попробуйте
Синтаксис
/* Keyword values */ shape-outside: none; shape-outside: margin-box; shape-outside: content-box; shape-outside: border-box; shape-outside: padding-box; /* Function values */ shape-outside: circle(); shape-outside: ellipse(); shape-outside: inset(10px 10px 10px 10px); shape-outside: polygon(10px 10px, 20px 20px, 30px 30px); /* Shape box with basic shape */ shape-outside: circle() border-box; shape-outside: margin-box ellipse(); /* <url> value */ shape-outside: url(image.png); /* <gradient> value */ shape-outside: linear-gradient(45deg, #fff 150px, red 150px); /* Global values */ shape-outside: inherit; shape-outside: initial; shape-outside: revert; shape-outside: revert-layer; shape-outside: unset;
Свойство shape-outside задаётся значениями из списка ниже, которые определяют _область обтекания_ для _элементов с плавающим расположением_. Область обтекания определяет форму, вокруг которой инлайновый контент (элементы с плавающим расположением) будет обтекаться.
Значения
none-
Область обтекания не изменяется. Инлайновый контент обтекает рамку элемента, как обычно.
<shape-box>-
Область обтекания вычисляется в соответствии с формой границ плавающего элемента (как определено в модели CSS-ящика). Она может быть
margin-box,border-box,padding-box, илиcontent-box. Форма включает любые кривизны, созданные свойствомborder-radius(поведение подобноbackground-clip).margin-box-
Определяет форму, ограниченную внешним краем отступа. Радиусы углов этой формы определяются соответствующими значениями
border-radiusиmargin. Если коэффициентborder-radius / marginравен1или больше, то радиус угла рамкиborder-radius + margin. Если коэффициент меньше1, то радиус угла рамкиborder-radius + (margin * (1 + (ratio - 1) ^ 3)). border-box-
Определяет форму, ограниченную внешним краем границы. Форма следует стандартным правилам формирования радиусов границ для внешней части границы.
padding-box-
Определяет форму, ограниченную внешним краем отступа. Форма следует стандартным правилам формирования радиусов границ для внутренней части границы.
content-box-
Определяет форму, ограниченную внешним краем содержимого. Каждый радиус угла этого ящика — большее из значений
0илиborder-radius - border-width - padding.
<basic-shape>-
Область обтекания вычисляется на основе формы, созданной функцией
inset(),circle(),ellipse()илиpolygon(); другие функции<basic-shape>недействительны. Если также указан<shape-box>, он определяет ссылку на область для функции<basic-shape>. В противном случае область ссылки по умолчанию —margin-box. <image>-
Область обтекания извлекается и вычисляется на основе альфа-канала указанного
<image>, как определено вshape-image-threshold.
Примечание: Если изображение недействительно, эффект такой же, как если бы было указано ключевое слово none. Кроме того, изображение должно быть предоставлено с заголовками CORS, разрешающими его использование.
Формальное определение
| Начальное значение | none |
|---|---|
| Применимо к | элементам с плавающим расположением |
| Наследуется | нет |
| Вычисленное значение | как определено для <basic-shape> (с последующим shape-box, если указано), <image> с абсолютным URI, в противном случае, как указано. |
| Тип анимации | да, как указано для <basic-shape>, в противном случае нет |
Формальный синтаксис
shape-outside =
none |
[ <basic-shape> || <shape-box> ] |
<image>
<shape-box> =
<visual-box> |
margin-box
<image> =
<url> |
<gradient>
<visual-box> =
content-box |
padding-box |
border-box
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
Примеры
Отображение текста в виде воронки
HTML
<div class="main">
<div class="left"></div>
<div class="right"></div>
<p>
Sometimes a web page's text content appears to be funneling your attention
towards a spot on the page to drive you to follow a particular link.
Sometimes you don't notice.
</p>
</div>
CSS
.main {
width: 530px;
}
.left,
.right {
background-color: lightgray;
height: 12ex;
width: 40%;
}
.left {
clip-path: polygon(0 0, 100% 100%, 0 100%);
float: left;
shape-outside: polygon(0 0, 100% 100%, 0 100%);
}
.right {
clip-path: polygon(100% 0, 100% 100%, 0 100%);
float: right;
shape-outside: polygon(100% 0, 100% 100%, 0 100%);
}
p {
text-align: center;
}
Результат
Спецификации
| Спецификация |
|---|
| CSS Shapes Module Level 1 # shape-outside-property |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
shape-outside |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
circle |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
gradient |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
image |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
inset |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
none |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
path |
Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
polygon |
37 | 79 | 62 | 24 | 10.1 | 37 | 62 | 24 | 10.3 | 3.0 | 37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/shape-outside