В shape-outside
управлінні власності як зміст буде обернути навколо обмежувальної рамки переміщуваного елемента. Зазвичай це так, щоб текст міг перетворюватися на фігури, такі як коло, еліпс або багатокутник:
.element ( float: left; shape-outside: circle(50%); width: 200px; height: 200px; )
Важливо зазначити, що ця властивість наразі працюватиме лише з плаваючими елементами, хоча це, швидше за все, зміниться в майбутньому. shape-outside
Властивість також можна маніпулювати з переходами або анімації.
Цінності
circle()
: для виготовлення кругових фігур.ellipse()
: для виготовлення еліптичних фігур.inset()
: для виготовлення прямокутних форм.polygon()
: для створення будь-якої фігури з 3 і більше вершинами.url()
: визначає, яке зображення слід використовувати для обгортання тексту.initial
: площа поплавця не зазнає змін.inherit
: успадковуєshape-outside
значення від батьків.
Наступні значення визначають, яке посилання на модель коробки слід використовувати для позиціонування фігури всередині:
margin-box
padding-box
border-box
Ці значення повинні бути додані до кінця, наприклад: shape-outside: circle(50% at 0 0) padding-box
. За замовчуванням використовується margin-box
посилання.
еліпс ()
.element ( shape-outside: ellipse(150px 300px at 50% 50%); )
ellipse()
Функція вимагає радіусів значення для х, у осі еліпса , за яким слід координати , щоб розташувати центр форми в межах його обмежувальної рамки. Наприклад, приклад вище розмістить центр еліпса у вертикальному та горизонтальному центрі .element
div:
Хоча демонстрація вище може припустити, що ми змінюємо форму самого div
себе, якщо додати межі та фонове зображення, ми виявимо, що обмежувальне поле насправді все ще прямокутне:
Можливо, було б краще подумати про це так: за допомогою shape-outside
властивості ми змінюємо взаємозв'язок інших елементів навколо елемента, а не геометрію самого елемента. Щоб виправити, що нам потрібно буде використовувати shape-outside
поряд із clip-path()
властивістю, як у цьому прикладі:
коло ()
.element ( shape-outside: circle(50%); )
Ця функція створює коло, а у наведеному вище прикладі коду створює коло з радіусом, що дорівнює половині висоти та ширини .element
. circle()
Функція може також використовувати один і той же синтаксис для позиціонування форми всередині.
url ()
.element ( shape-outside: url('circle.png.webp'); )
У цьому випадку ми маємо два плаваючі зображення, одне з обох боків блоку тексту. Оскільки обидва зображення мають shape-outside
властивість, тоді текст внизу буде уникати цих двох плаваючих знаків.
Також можна встановити shape-image-threshold
властивість, яка повідомлятиме браузер, які пікселі, залежно від їх прозорості, повинні створювати фігуру. Наприклад:
.element ( shape-outside: url('image.png.webp'); shape-image-threshold: 0.5; )
У цьому прикладі єдині пікселі, які створять фігуру, повинні мати прозорість 50% і вище. Значення від 0.0
(прозорий) до 1.0
(непрозорий) є дійсними.
багатокутник ()
.element ( shape-outside: polygon(0 0, 0 200px, 300px 600px); )
Ця функція створює будь-яку фігуру, яка має три або більше вершин, наприклад:
Важливо зазначити, що якщо ця властивість буде анімована, вона вимагає однакову кількість вершин при оголошенні анімованого стану:
.element ( shape-outside: polygon(0 0, 100% 0, 100% 100%, 0 100%); transition: shape-outside 1s; ) .element:hover ( shape-outside: polygon(0 0, 100% 50%, 100% 50%, 0 100%); )
вставка ()
.element ( shape-outside: inset(100px 100px 100px 100px 10px); /* shape-outside: inset(top right bottom left border-radius); */ )
inset()
це функція для створення прямокутних фігур, вона приймає п’ять параметрів, але п’ятий, для border-radius
є необов’язковою. Інші аргументи зміщуються всередину від краю .element
:
Вгорі ми маємо елемент, який має ширину 200 пікселів на висоту 200 пікселів, і ми компенсуємо форму в межах 50 пікселів у кожному напрямку, крім лівої сторони. Таким чином текст обернеться над формою, навіть якщо div поширюється на верх.
Підтримка браузера
Дані про підтримку веб-переглядача подані компанією Caniuse, яка містить більше деталей. Цифра вказує на те, що браузер підтримує цю функцію на цій версії та вище.
Робочий стіл
Chrome | Firefox | IE | Край | Сафарі |
---|---|---|---|---|
37 | 62 | Ні | 79 | 7,1 * |
Мобільний / планшетний
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 | 8 * |