CSS clip-path property
The primary purpose of the clip-path
property is to create a clipping region that sets which part of an element should be visible. Think of it as a mask where only the defined region is shown, and everything outside of it is hidden.
Syntax and Values
The basic syntax for the clip-path
property is:
clip-path: <value>;
The values it can take include:
- Keyword values: The most straightforward is
none
, which means no clipping is applied. <clip-source>
values: For example,url(resources.svg#c1)
, which references a specific SVG clipPath element.<geometry-box>
values: These includemargin-box
,border-box
, etc., which define the reference box for the clipping region.<basic-shape>
values: These are predefined shapes likeinset()
,circle()
,ellipse()
,polygon()
, andpath()
.
Using Basic Shapes
Basic shapes provide a simple way to define clipping regions:
inset()
: This defines an inset rectangle. For instance,clip-path: inset(10% 20% 30% 40%)
clips the element with the specified offsets.circle()
: It defines a circle. Example:clip-path: circle(50% at 50% 50%)
creates a circle centered in the middle of the element.ellipse()
: Like circle but for ellipses.clip-path: ellipse(50% 25% at 50% 50%)
creates an ellipse.polygon()
: Defines a polygon.clip-path: polygon(0% 0%, 100% 0%, 50% 100%)
creates a triangle.path()
: This is for more complex shapes using SVG path definitions.
Geometry Boxes
The reference box for the basic shape determines the coordinates’ system:
margin-box
: Outermost box, including margins.border-box
: Includes the border.padding-box
: Up to the padding edge.content-box
: Just the content.fill-box
: Uses the object bounding box as reference.stroke-box
: Considers the stroke of the SVG.view-box
: Uses the SVG’s view box.
Practical Examples
When using clip-path
with HTML, it’s applied directly to the element. With SVG, it references a clipPath
element. For instance, a circle clip in HTML might be clip-path: circle(50%)
, while in SVG, you’d define a clipPath
element and reference it with url(#myClip)
.
Comparatively, SVG offers more flexibility, especially for complex shapes, but HTML is more straightforward for simple clippings.
Browser Compatibility
Most modern browsers support the clip-path
property. However, it’s always a good idea to check compatibility tables and test across browsers. For unsupported browsers, consider fallback designs or polyfills.