Skip to content

Corner Shape

The CSS corner-shape property controls how border-radius curves are drawn. Instead of standard circular arcs, you can use squircles (iOS-style), bevels, scoops, notches, and arbitrary superellipse values.

Browser Support

corner-shape is supported in Chrome 139+ (~68% of users). Firefox and Safari do not support it yet. All utilities are wrapped in @supports (corner-shape: squircle) and will be silently ignored in unsupported browsers.

Import

Included in @import 'tw-jib-css/experimental'. To import individually:

css
@import 'tw-jib-css/experimental/corner';

Quick Reference

Class Styles
corner-roundcorner-shape: round
corner-scoopcorner-shape: scoop
corner-bevelcorner-shape: bevel
corner-notchcorner-shape: notch
corner-squarecorner-shape: square
corner-squirclecorner-shape: squircle
corner-<number>corner-shape: superellipse(<number>)
corner-infinitycorner-shape: superellipse(infinity)
-corner-<number>corner-shape: superellipse(-<number>)
corner-t-<value>corner-top-left-shape + corner-top-right-shape: <value>
corner-r-<value>corner-top-right-shape + corner-bottom-right-shape: <value>
corner-b-<value>corner-bottom-left-shape + corner-bottom-right-shape: <value>

Basic Usage

Combine corner-* with rounded-* to change how corners are drawn:

Default round
Squircle

The corner-shape property modifies the curve shape — you still need border-radius (rounded-*) to set the corner size.

Named Shapes

Each named shape produces a distinct visual effect:

round
scoop
bevel
notch
square
squircle

Superellipse Values

Use numeric values to control the superellipse exponent:

0.5
1
2
3
infinity

Side and Corner Variants

Apply shapes to specific sides or individual corners:

corner-t-squircle
corner-tr-bevel
mixed

Physical vs Logical

LogicalLTR Equivalent
corner-s-*corner-l-*
corner-e-*corner-r-*
corner-ss-*corner-tl-*
corner-se-*corner-tr-*
corner-ee-*corner-br-*
corner-es-*corner-bl-*

Negative Values

Prefix with - to negate the superellipse exponent, which inverts the curve direction:

corner-1
-corner-1
corner-2
-corner-2
corner-3
-corner-3

Negative values work with all directional variants:

-corner-t-3
-corner-b-3
-corner-tl-3 corner-br-3
-corner-2 corner-t-squircle

Using a custom value

Use the corner-[<value>] syntax to set the corner shape based on a completely custom value:

corner-2.5
corner-[superellipse(4.2)]

Using a custom variable

For CSS variables, you can also use the corner-(--custom-property) syntax:

corner-(--brand-roundness)

This is just a shorthand for corner-[var(--brand-roundness)] that adds the var() function for you automatically.

Applying conditionally

Hover and focus states

Prefix a corner utility with a state variant like hover:* to only apply it in that state:

Hover for squircle