学习css的clip-path属性

简介: 【7月更文挑战第1天】了解CSS `clip-path`属性,用于定义元素显示区域的裁剪形状,如圆形、椭圆、多边形、矩形及SVG路径。通过配合过渡和动画,可创建动态交互效果。例如,`clip-path: circle(radius at center);`用于创建圆形裁剪,`polygon`用于自定义多边形。还可以使用`path()`引用SVG路径数据。[资源推荐:bennettfeely.com/clippy/](https://bennettfeely.com/clippy/),提供交互式工具测试不同形状。

前言

通过本文的学习,你将会学到

  • 认识并学习css属性clip-path的一些用法
  • 配合过渡和动画创建好玩的交互

Clip-path 认识

1. 介绍

clip-path 是 CSS 的一个属性,它允许你定义一个剪裁区域,用于裁剪元素的显示区域。这个剪裁区域可以是基本形状、SVG 路径、或是外部图像等。被裁剪的元素只会显示在定义的剪裁区域内,超出部分会被隐藏。

2. 用法

clip-path 的基本语法列表:

圆形(circle)

   clip-path: circle(radius at center);

示例:

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

椭圆形(ellipse)

   clip-path: ellipse(rx ry at cx cy);

示例:

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

多边形(polygon)

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

示例:

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

内置形状(inset)

   clip-path: inset(top right bottom left);

示例:

   clip-path: inset(10% 20% 30% 40%);

SVG 路径(path)

   clip-path: path('SVG path data');

示例:

   clip-path: path('M10 10 H 90 V 90 H 10 L 10 10');

URL 引用(url)

   clip-path: url(#clipPathId);

示例:

   clip-path: url(#myClipPath);

none(无剪切路径)

   clip-path: none;

3. 基本形状

3.1 圆形 (circle)

        img {
   
            width: 200px;
            height: auto;
            object-fit: cover;
            border-radius: 10px;
            /* 添加过渡 */
            transition: 0.5s;
            /* 初始状态 */
            clip-path: circle(100%);
        }

        img:hover {
   
            cursor: pointer;
            clip-path: circle(50%);
        }

上面的例子会将 图片 裁剪成一个圆形,圆心位于元素的中心,半径为元素的宽度或高度的一半。

效果如下:

1721036698601.png

鼠标悬浮之后

image.png

3.2 椭圆 (ellipse)

        img {
   
            width: 500px;
            height: auto;
            object-fit: cover;
            border-radius: 10px;
            /* 添加过渡 */
            transition: 0.5s;
            /* 初始状态 */
            clip-path: ellipse(100% 100% at 50% 50%);
        }

        img:hover {
   
            cursor: pointer;
            clip-path: ellipse(50% 50% at 50% 50%);
        }

当鼠标悬停在图像上时,剪切区域变为一个椭圆形,水平和垂直半径变为图像尺寸的 50%

image.png

悬浮之后进行裁剪属性值的变化

image.png

3.3 矩形

inset 形状用于创建一个矩形剪切区域,类似于内边距(padding)。

语法:

clip-path: inset(top right bottom left);

示例

        img {
   
            width: 500px;
            height: auto;
            object-fit: cover;
            transition: 0.5s;
            /* 初始状态 */
            clip-path: inset(0 0 0 0)
        }

        img:hover {
   
            cursor: pointer;
            clip-path: inset(10% 20% 30% 40%);
        }

效果:

初始状态(clip-path: inset(0 0 0 0))

+-------------------------+
|                         |
|                         |
|                         |
|        图像未裁剪        |
|                         |
|                         |
|                         |
+-------------------------+

image.png

悬停状态 (clip-path: inset(10% 20% 30% 40%))


+-------------------------+
|                         |
|       +--------+        | 10%
|       |        |        |
|  40%  |        |  20%   |
|       |裁剪区域|        |
|       |        |        |
|       +--------+        | 30%
|                         |
+-------------------------+

裁剪区域距离图像顶部 10%,右侧 20%,底部 30%,左侧 40%。因此,裁剪区域显示图像的中心部分,四周有一定的内边距。
4.jpg

3.4 多边形 (polygon) [重要]

clip-pathpolygon 用法允许我们创建一个多边形的剪切区域。我们可以使用一系列的顶点来定义这个多边形,每个顶点由一个 x 和 y 坐标值表示,坐标值可以是像素、百分比或其他单位。

语法

clip-path: polygon(x1 y1, x2 y2, x3 y3, ...);
  • xy 坐标:可以是百分比或像素值,表示顶点的位置。百分比是相对于元素的尺寸。

  • 多边形顶点顺序:按顺时针或逆时针顺序定义顶点,最后一个顶点会自动连接到第一个顶点。
    当然,我可以用 Markdown 和文本描述来画出基本形状的坐标图,并提供相应的 CSS 代码。

  1. 三角形
  (50% 0%)
     /\
    /  \
   /    \
(0% 100%)(100% 100%)
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  1. 五边形
        (50% 0%)
        /      \
  (0% 38%)    (100% 38%)
     \        /
      \      /
  (18% 100%)(82% 100%)
clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
  1. 六边形
    (25% 0%)   (75% 0%)
      /          \
     /            \
(0% 50%)        (100% 50%)
     \            /
      \          /
    (25% 100%)  (75% 100%)
clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
  1. 矩形
(0% 0%)------------(100% 0%)
  |                    |
  |                    |
  |                    |
(0% 100%)----------(100% 100%)
clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
  1. 平行四边形
(25% 0%)------------(75% 0%)
     \                \
      \                \
(0% 100%)----------(50% 100%)
clip-path: polygon(25% 0%, 75% 0%, 50% 100%, 0% 100%);

示例代码


<style>
    .shape {
    
      width: 300px;
      height: 300px;
      background: url('your-image-url.jpg') no-repeat center/cover;
      margin: 20px;
    }
    .triangle {
    
      clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
    }
    .pentagon {
    
      clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
    }
    .hexagon {
    
      clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);
    }
    .rectangle {
    
      clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
    }
    .parallelogram {
    
      clip-path: polygon(25% 0%, 75% 0%, 50% 100%, 0% 100%);
    }
</style>

    <div style="display: flex; gap: 1rem;">
        <div class="shape triangle"></div>
        <div class="shape pentagon"></div>
        <div class="shape hexagon"></div>
        <div class="shape rectangle"></div>
        <div class="shape parallelogram"></div>
    </div>

效果:

5.jpg

3.5 使用 SVG 路径

你可以使用 path() 函数来定义一个 SVG 路径作为剪裁区域。

.element {
   
  clip-path: path('M 10 10 H 90 V 90 H 10 L 10 10');
}

上面的例子会将 .element 裁剪成一个使用 SVG 路径定义的形状。

相应资源网站推荐

https://bennettfeely.com/clippy/
6.jpg

目录
相关文章
|
7天前
|
前端开发
了解 css中 backface-visibility 属性
了解 css中 backface-visibility 属性
13 0
|
23天前
|
前端开发
5.CSS学习(浮动)
【7月更文挑战第29天】
29 4
学习CSS3 中的渐变、阴影与遮罩
CSS3的渐变、阴影和遮罩特性极大地丰富了网页设计。渐变让颜色平滑过渡,赋予页面流动美感;阴影增加元素立体感,引导视觉焦点;遮罩通过隐藏或显示部分元素创造独特视觉效果。这些特性组合使用,可打造丰富多彩、立体生动的视觉体验,并可通过CSS3动画增强动态效果,使网页更具活力。正确应用这些特性需考虑参数调整及跨浏览器兼容性,以确保最佳展示效果。
|
8天前
|
前端开发
CSS常用滤镜属性讲解
本文介绍了CSS滤镜的几种常用效果,包括高斯模糊、亮度和对比度调整、灰度化、图像反转、透明度调整、饱和度调整及复古滤镜等。例如,使用`blur(10px)`可使图像产生模糊效果,包裹层设置`overflow: hidden`可避免边缘模糊;`brightness(150%)`和`contrast(150%)`分别增强图像亮度和对比度;`grayscale(1)`将图像转为灰度;`invert(1)`实现图像颜色完全反转;`opacity(0.5)`调整图像半透明;`saturate(350%)`增加饱和度;`sepia(100%)`营造复古深褐色调;`hue-rotate(180deg)`改变
17 4
CSS常用滤镜属性讲解
|
8天前
|
前端开发
了解 css中 backface-visibility 属性
`backface-visibility` 是一个CSS属性,用于3D转换时控制元素背面的可见性,以优化渲染性能。默认情况下,背面被隐藏以减少不必要的渲染。此属性有两值:`visible` 表示背面可见;`hidden`(默认值)则隐藏背面。 通过双面卡片案例演示了其用法:两个重叠盒子,一个显示图片,另一个显示文字且初始状态为背面朝外。鼠标悬停时,图片盒子翻转显示背面,文字盒子翻转显示正面,同时设置 `backface-visibility: hidden` 以确保背面不被渲染。 兼容性良好,广泛支持现代浏览器。
18 2
了解 css中 backface-visibility 属性
|
4天前
|
前端开发
CSS - 使用 clip-path 轻松实现正六边形块状元素
如何使用CSS的`clip-path`属性来创建正六边形的块状元素。文章提供了详细的HTML和CSS代码示例,展示了如何实现六边形的布局和样式,并通过CSS动画增强了视觉效果。最终效果是一个包含文本的可交互的正六边形元素,当鼠标悬停时会改变颜色。
10 0
CSS - 使用 clip-path 轻松实现正六边形块状元素
|
5天前
|
前端开发 UED 开发者
使用 CSS 的 line-height 属性来提高可读性
使用 CSS 的 line-height 属性来提高可读性
6 0
|
7天前
|
前端开发
CSS常用滤镜属性讲解
CSS常用滤镜属性讲解
16 0
|
11月前
|
Web App开发 前端开发 容器
CSS进阶: 选择器进阶、背景相关属性、元素显示模式、CSS特性
CSS进阶: 选择器进阶、背景相关属性、元素显示模式、CSS特性
131 1