superellipse()
The superellipse()
CSS function defines the curvature of an ellipse, and is used to specify corner shapes either directly, or via <corner-shape-value>
keywords.
Syntax
superellipse(infinity)
superellipse(4)
superellipse(1.7)
superellipse(0)
superellipse(-2.8)
superellipse(-3)
superellipse(-infinity)
Parameters
<number>
-
A number in the range of
-infinity
toinfinity
, inclusive.
Return value
A superellipse shape.
Description
The superellipse()
function returns a superellipse shape, which is used to specify corner-shape
values. A superellipse is a closed curve symmetric shape between a rectangle and an ellipse. It resembles an ellipse that retains the geometric features of its two axes.
The superellipse shape is calculated using a modified version of an ellipse. The following equation defines an ellipse centered at the origin:
The a
and b
variables refer to the radii of the ellipse, while the x
and y
coordinates are points on the ellipse's circumference.
A circle is an ellipse where the radii, the a
and b
in the previous equation, are the same length. With a
and b
both equal to r
, the equation for a circle can be written as:
In this equation, the x
and y
are coordinates of points on the circle's circumference, and the r
is the radius of the circle, with the center of the circle being (0, 0)
. The ellipse is produced by scaling a circle shape along the x
and/or y
axis.
A superellipse shape is created by replacing the 2
exponent in each case with 2K, K
being the argument passed to the superellipse()
function, which modifies the curvature of the ellipse:
The following diagram illustrates different superellipse()
values for the top right corner of a container: infinity
, 1
, 0
, -1
, and -infinity
:
- A
K
value of0
creates a straight line. This value can be used to create bevelled corners and corresponds to the<corner-shape-value>
bevel
keyword. - A
K
value of1
creates an ordinary ellipse, corresponding to theround
keyword. - A
K
value of>1
makes the ellipse shape more square;2
corresponds to thesquircle
keyword. - A
K
value ofinfinity
creates a perfect square (corresponding to thesquare
keyword), althoughK
values of10
or more are virtually indistinguishable from a square. - Negative
K
values result in a concave curve, resulting in corner shapes that are curved inward, or "scooped out". AK
value of-1
corresponds to thescoop
keyword and-infinity
corresponds to thenotch
keyword.
A negative or positive superellipse would appear symmetrical to a superellipse with its inverse value.
Note:
For any K
parameter value passed, the superellipse()
function's return value will always be the same for that K
value. When that value is applied to two elements, the appearance of the corner shape may differ if the box size or border-radius
values differ.
Formal syntax
<superellipse()> =
superellipse( <number [-∞,∞]> |
infinity |
-infinity )
Examples
>superellipse()
value comparison
In this example, two <input type="range">
sliders allow you to cycle through many different corner-shape
superellipse()
values and border-radius
values enabling you to compare the effects of each on a container. The code is hidden for brevity, but the full explanation of the superellipse value comparison is provided on the corner-shape
reference page.
Note:
See also the <corner-shape-value>
value comparison example.
Specifications
Specification |
---|
CSS Borders and Box Decorations Module Level 4> # funcdef-superellipse> |
Browser compatibility
Loading…