Spec-Zone.ru › CSS

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. Суперэллипс — это замкнутая симметричная кривая, занимающая промежуточное положение между прямоугольником и эллипсом. Он напоминает эллипс, сохраняющий геометрические свойства своих двух осей.

Форма суперэллипса вычисляется с использованием модифицированной версии эллипса. Следующее уравнение задаёт эллипс с центром в начале координат:

x 2 a 2 + y 2 b 2 = 1

Переменные a и b обозначают радиусы эллипса, а координаты x и y — точки на его окружности.

Окружность — это эллипс, у которого радиусы, то есть a и b в предыдущем уравнении, имеют одинаковую длину. Если a и b равны r, уравнение окружности можно записать так:

x 2 + y 2 = r 2

В этом уравнении x и y — координаты точек на окружности, а r — радиус окружности с центром в точке (0, 0). Эллипс получается масштабированием окружности вдоль оси x и/или y.

Форма суперэллипса создаётся заменой показателя степени 2 в каждом случае на 2K, где K — аргумент, переданный функции superellipse(), который изменяет кривизну эллипса:

x 2 K + y 2 K = 1

На следующей схеме показаны различные значения superellipse() для верхнего правого угла контейнера: infinity, 1, 0, -1 и -infinity:

Line diagram illustrating the ellipses created using different K values, as described subsequently

  • Значение 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>.

Спецификации

Спецификация
Модуль CSS Borders and Box Decorations Level 4
# funcdef-superellipse

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
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
Нет

См. также

  • corner-shape
  • <corner-shape-value>
  • Модуль CSS borders and box decorations

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API