CSS-функция `superellipse()`
Базовая поддержка Ограниченная доступность
Эта функция не входит в Baseline, поскольку не работает в некоторых наиболее широко используемых браузерах.
Экспериментальная: Это экспериментальная технология
Перед использованием в производственной среде внимательно ознакомьтесь с таблицей совместимости с браузерами.
Экспериментальная: Это экспериментальная технология
Перед использованием в производственной среде внимательно ознакомьтесь с таблицей совместимости с браузерами.
superellipse() — это CSS-функция, которая задаёт кривизну эллипса и используется для определения формы углов напрямую или с помощью ключевых слов <corner-shape-value>.
Синтаксис
superellipse(infinity) superellipse(4) superellipse(1.7) superellipse(0) superellipse(-2.8) superellipse(-3) superellipse(-infinity)
Параметры
-
<number> - Число в диапазоне от
-infinityдоinfinityвключительно.
Возвращаемое значение
Форма суперэллипса.
Описание
Функция superellipse() возвращает форму суперэллипса, которая используется для задания значений corner-shape. Суперэллипс — это замкнутая симметричная кривая, занимающая промежуточное положение между прямоугольником и эллипсом. Он напоминает эллипс, сохраняющий геометрические свойства своих двух осей.
Форма суперэллипса вычисляется с использованием модифицированной версии эллипса. Следующее уравнение задаёт эллипс с центром в начале координат:
Переменные a и b обозначают радиусы эллипса, а координаты x и y — точки на его окружности.
Окружность — это эллипс, у которого радиусы, то есть a и b в предыдущем уравнении, имеют одинаковую длину. Если a и b равны r, уравнение окружности можно записать так:
В этом уравнении x и y — координаты точек на окружности, а r — радиус окружности с центром в точке (0, 0). Эллипс получается масштабированием окружности вдоль оси x и/или y.
Форма суперэллипса создаётся заменой показателя степени 2 в каждом случае на 2K, где K — аргумент, переданный функции superellipse(), который изменяет кривизну эллипса:
На следующей схеме показаны различные значения superellipse() для верхнего правого угла контейнера: infinity, 1, 0, -1 и -infinity:
- Значение
K, равное0, создаёт прямую линию. Это значение можно использовать для создания скошенных углов; оно соответствует ключевому словуbevelиз<corner-shape-value>. - Значение
K, равное1, создаёт обычный эллипс, соответствующий ключевому словуround. - Значение
K, равное>1, делает форму эллипса более квадратной;2соответствует ключевому словуsquircle. - Значение
K, равноеinfinity, создаёт идеальный квадрат (соответствующий ключевому словуsquare), хотя значенияK, равные10или больше, практически неотличимы от квадрата. - Отрицательные значения
Kдают вогнутую кривую, в результате чего углы изгибаются внутрь, образуя выемки. ЗначениеK, равное-1, соответствует ключевому словуscoop, а-infinityсоответствует ключевому словуnotch.
Положительный или отрицательный суперэллипс будет выглядеть симметричным суперэллипсу с обратным значением.
Примечание: При любом переданном значении параметра K функция superellipse() всегда возвращает одно и то же значение для этого значения K. При применении этого значения к двум элементам внешний вид углов может различаться, если отличаются размеры блоков или значения border-radius.
Формальный синтаксис
<superellipse()> =
superellipse( [ <number> | infinity | -infinity ] )
Примеры
Сравнение значений superellipse()
В этом примере два ползунка <input type="range"> позволяют перебирать различные значения corner-shape superellipse() и значения border-radius, чтобы сравнить их влияние на контейнер. Для краткости код скрыт, но полное объяснение примера сравнения значений суперэллипса приведено на справочной странице corner-shape.
<form>
<div>
<label for="superellipse-slider">Choose a superellipse() value:</label>
<input
type="range"
id="superellipse-slider"
min="-5"
value="0"
max="5"
step="0.1" />
</div>
<div>
<label for="radius-slider">Choose a border-radius value:</label>
<input type="range" id="radius-slider" min="0" value="45" max="90" />
</div>
</form>
<section></section>
html {
font-family: "Helvetica", "Arial", sans-serif;
}
body {
width: fit-content;
margin: 20px auto;
}
section {
display: flex;
justify-content: center;
align-items: center;
flex: 100%;
margin-top: 20px;
}
form div {
margin-top: 5px;
display: flex;
}
section {
width: 100%;
height: 180px;
background-color: orange;
background-image: linear-gradient(
to bottom,
rgb(255 255 255 / 0),
rgb(255 255 255 / 0.5)
);
}
section {
box-shadow: 1px 1px 3px gray;
}
const rectangle = document.querySelector("section");
const superEllipseRange = document.getElementById("superellipse-slider");
const borderRadiusRange = document.getElementById("radius-slider");
function setCorners() {
const seValue = `superellipse(${superEllipseRange.value})`;
rectangle.style.cornerShape = seValue;
const brValue = `${borderRadiusRange.value}px`;
rectangle.style.borderRadius = brValue;
rectangle.innerHTML = `<div><code>corner-shape: ${seValue};</code><br><code>border-radius: ${brValue};</code></div>`;
}
superEllipseRange.addEventListener("input", setCorners);
borderRadiusRange.addEventListener("input", setCorners);
setCorners();
Примечание: См. также пример сравнения значений <corner-shape-value>.
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
superellipse |
139 |
139 |
Нет |
123 |
Нет |
139 |
Нет |
91 |
Нет |
30.0 |
139 |
Нет |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/superellipse