最近的chrome blog又更新了,里面提到了一个shape()函数,体验了一下,好用,但是有一定的上手成本~
该方法主要是应用于针对clip-path上,可以实现兼具响应式的同时可以支持非多边形状。
clip-path
clip-path 是一个 CSS 属性,用于定义一个可视区域,元素的内容将被限制在这个区域内。常见的剪裁形状包括:圆形、椭圆、多边形、SVG 路径
👇下面的动图为多边形生成网址,bennettfeely.com/clippy
下面分别举例用polygon
和path
,来一起回顾一下clip-path。预览链接🔗
/* 对话框 polygon */
clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%);
/* 流线 path */
clip-path: path("M 0 20 C 25 0 75 40 100 20 V 80 C 75 100 25 60 0 80 z");
path和polygon优缺点对比
方法 | 优势 | 缺陷 |
---|---|---|
polygon() | ✅百分比坐标响应式 | ❌仅支持直线多边形 |
svg path() | ✅支持复杂曲线路径 | ❌绝对单位无法自适应 |
shape()
现在shap()可以支持复杂曲线路径和响应式。除此之外,还允许混合单位(百分比、vw、calc等),支持CSS变量和数学函数动态调整路径。
方法 | polygon() | path() | shape() |
---|---|---|---|
响应式支持 | ✅ | ❌ | ✅ |
曲线路径 | ❌ | ✅ | ✅ |
动态参数(CSS变量) | 有限 | ❌ | ✅ |
应用案例
动态参数
各类形状
效果图 | 核心代码 |
---|---|
基础语法
官方语法说明
,起始点;by
,相对值;
to:绝对值
数据说明(速记):
关键词 | 说明 | 关键词 | 说明 |
---|---|---|---|
from | 起始点 | line | 线段 |
hline | 水平线 | vline | 垂直线 |
curve | 贝塞尔曲线 | close | 闭合标志 |