CSS Shape Functions
The following functions define shapes for use within CSS properties. They should all be usable within the clip-path, shape-outside, and offset-path properties, but browser support varies.
The shapes are measured according to a reference box (such as the content-box, margin-box, fill-box, or view-box), which varies according to the property.
Some details may change, check the CSS specs for the latest definitions.
circle()#circle(radius)circle(at position)circle(radius at position)-
Defines a circle with the specified radius, centered at the specified position. The parameters and defaults are as follows:
radius-
-
a length (with units) or a percentage (proportional to the reference-box diagonal, following the formula defined in “Percentage Lengths”), or a
calc()combination of the two -
or one of the keywords
closest-sideorfarthest-side(beware: the*-cornerkeywords from CSS radial gradients are not currently valid!) -
default is
closest-side
-
position-
-
is defined using the standard CSS syntax (as in
background-position) -
can use keywords (
top,bottom,left,right, andcenter), lengths, or percentages (of reference box width or height) -
if lengths or percentages are used, the first value is the horizontal position
-
default is
center center
-
ellipse()#ellipse(x-radius y-radius)ellipse(at position)ellipse(x-radius y-radius at position)-
Draws an ellipse with the specified radii, centered at the specified position.
x-radiusandy-radius-
-
use the same options as the
radiusofcircle(), except that percentages are relative to the reference-box width (x-radius) or height (y-radius). -
there must be two values (in the current version of the spec).
-
default is
closest-side closest-side
-
position-
-
uses the same syntax as
circle()
-
inset(inset-distances)#inset(inset-distances round corner-radii)-
Draws a rectangle or rounded rectangle, measured by an inset distance from the reference box.
inset-distances-
-
between 1 and 4 values
-
the order is top, left, bottom, right, with missing values filled in according to the same rules as CSS
margin,padding, etc. -
each value is either a length with units or a percentage (of the reference box width or height), or a
calc()combination of the two -
negative values create an outset rectangle, larger than the reference box
-
corner-radii-
-
uses the syntax of the
border-radiusshorthand -
between 1 and 4 length or percentage values (starting with the top-left corner and going clockwise, with missing values taken from the opposite corner)
-
to set different values for the vertical and horizontal radius, separate them with a slash (
/); horizontal values are before the slash, vertical values after -
values must be positive, and will be clamped to the width or height of the box being rounded
-
polygon(point, point, point …)#polygon(fill-rule, point, point, point …)-
Draws an arbitrary shape made up of straight-line edges.
point-
-
two length values, percentages, or
calc()combinations, separated by whitespace -
the first value is horizontal (x) position of the point, second is vertical (y)
-
there can be any number of points in the list, each two-value pair separated by commas
-
note that the whitespace/comma rules are much stricter than for SVG
<polygon> -
there must be at least one point for the function to be valid; for most uses you’ll need three points to get a useful shape
-
fill-rule-
-
either
nonzeroorevenodd, with interpretation the same as for thefill-ruleproperty -
default
nonzero
-
path(path-data)#path(fill-rule, path-data)-
Draws an arbitrary shape, which can have straight lines, curves, and disconnected sub-paths or holes.
path-data-
-
a quoted string of SVG path data, following the syntax in the Path Commands guide
-
fill-rule-
-
same as for
polygon()
-