CSS clip-path 属性

CSS clip-path 语法

在 CSS 中,clip-path 属性用于定义元素的裁剪路径,从而控制元素的显示区域。其中,任何超出裁剪路径的部分都将被隐藏。

语法:

clip-path: none | 函数;

说明:

none 表示不裁剪,显示全部内容。clip-path 属性是通过不同的 CSS 函数 来定义裁剪区域的,常用的函数如下表所示。

clip-path 裁剪函数
函数 说明
circle() 裁剪为圆形
ellipse() 裁剪为椭圆
polygon() 裁剪为多边形
path() 使用 SVG 路径裁剪
inset() 向内裁剪,并支持圆角

注意:

  • clip-path 适用于所有元素(包括行内元素)。注意,它会创建一个新的层叠上下文(Stacking Context)。
  • clip-path 属性会裁剪元素的内容、背景、边框、阴影等一切视觉内容。
  • clip-path 剪裁掉的部分不可见,但不会响应鼠标事件(比如点击、悬停等)。

CSS clip-path 摘要

属于 CSS 裁剪属性
使用频率
是否继承
默认值 none
兼容性 查看
官方文档 查看
MDN 查看

CSS clip-path 示例

接下来,我们通过几个简单的例子来讲解一下 clip-path 属性是如何使用的。

示例 1:clip-path: circle() 裁剪圆形

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: lightskyblue;
            clip-path: circle(50% at 50% 50%);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

clip-path: circle() 裁剪圆形

分析:

clip-path: circle(50% at 50% 50%);

对于上面这句代码,circle() 表示裁剪形状为 “圆形”,第一个 50% 指的是圆的半径(相对于元素的宽)。at 50% 50%; 表示圆心位于元素宽度(x 坐标)和高度(y 坐标)的 50% 处,即元素正中心。

示例 2:clip-path: polygon() 裁剪三角形

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: coral;
            clip-path: polygon(50% 0, 0 100%, 100% 100%);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

clip-path: polygon() 裁剪三角形

分析:

clip-path: polygon(x1 y1, x2 y2, x3 y3, ...);

polygon():指定一个多边形裁剪形状,通过一系列坐标点定义。

坐标点:每个点由 x y 坐标组成,表示多边形的顶点,坐标可以是百分比(如 50%)或绝对单位(如 px)。

连接规则:坐标点按顺序连接形成闭合多边形,起点自动连接到终点。

clip-path: polygon(50% 0, 0 100%, 100% 100%);

polygon() 通过三个坐标点 (50% 0, 0 100%, 100% 100%) 定义一个三角形裁剪区域。只有三角形内的内容可见,三角形外的内容被隐藏。

示例 3:clip-path 结合 SVG 实现复杂裁剪

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: hotpink;
            clip-path: url(#starClip);
        }
    </style>
</head>
<body>
    <svg width="0" height="0">
        <defs>
            <clipPath id="starClip">
                <path d="M100,10 L120,80 L190,80 L130,120 L150,190 L100,150 L50,190 L70,120 L10,80 L80,80 Z">
            </clipPath>
        </defs>
    </svg>
    <div></div>
</body>
</html>

页面效果如下图所示。

clip-path 结合SVG实现复杂裁剪

分析:

在这个例子中,首先创建一个 200 x 200 像素的粉红色方形(div)。然后使用 SVG 定义一个星形裁剪路径(clipPath),通过 path 绘制十个点的星形。

最后,将星形裁剪路径应用于 div,使 div 的显示区域被裁剪成星形,只显示星形内的粉红色内容。

上一篇: filter

下一篇: writing-mode

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号