banner
banner
banner
NEWS LETTER

CSS-画多边形

Scroll down

知识篇

clip-path — 直接裁出图形,无需拼接元素实现图形

说明
inset() 裁剪出一个矩形
circle() 裁剪出一个圆形
ellipse() 裁剪出一个椭圆
polygon() 裁剪出一个多边形
path 裁剪出一个任意形状
(使用 SVG 填充规则和一个 SVG 路径定义)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>多边形案例</title>
<style>
.line {
display: flex;
align-items: center;
background-color: rgb(164, 192, 245);
}
.leaf {
height: 152px;
width: 200px;
clip-path: inset(10px round 152px 5px);
line-height: 152px;
background-color: cadetblue;
text-align: center;
}
.shanbei {
height: 152px;
width: 200px;
clip-path: inset(10px round 20px 10px 150px);
line-height: 152px;
background-color: cadetblue;
text-align: center;
}
.roundjuxing {
height: 152px;
width: 200px;
clip-path: inset(10px 20px 10px 30px round 20px);
line-height: 152px;
background-color: cadetblue;
text-align: center;
}
.circle1 {
width: 200px;
height: 200px;
background-color: #ffb700;
margin-right: 40px;
text-align: center;
clip-path: circle(6rem at right center);
}
.circle2 {
width: 200px;
height: 200px;
background-color: #ffb700;
text-align: center;
margin-right: 40px;
clip-path: circle(10% at 2rem 90%);
}
.circle3 {
width: 200px;
height: 100px;
background-color: #ffb700;
margin-right: 40px;
text-align: center;
clip-path: circle(closest-side at 50% 50%);
}
.circle4 {
width: 200px;
height: 100px;
background-color: #ffb700;
text-align: center;
margin-right: 40px;
clip-path: circle(farthest-side at 50% 50%);
}
.ellipse1 {
width: 300px;
height: 200px;
text-align: center;
background-color: steelblue;
clip-path: ellipse(4rem 50% at right center);
}
.ellipse2 {
width: 300px;
height: 200px;
text-align: center;
background-color: steelblue;
clip-path: ellipse(closest-side closest-side at 50% 68%);
}
.ellipse3 {
width: 300px;
height: 200px;
text-align: center;
background-color: steelblue;
clip-path: ellipse(farthest-side farthest-side at 50% 68%);
}
.polygon1 {
width: 300px;
height: 200px;
text-align: center;
background-color: rgb(243, 117, 0);
clip-path: polygon(
0% 0%,
100% 0%,
100% 75%,
75% 75%,
75% 100%,
50% 75%,
0% 75%
);
}
.path1 {
width: 300px;
height: 300px;
text-align: center;
background-color: rgb(243, 117, 0);
clip-path: path(
'M 150 0 L 184 112 L 300 112 L 207 175 L 241 288 L 150 225 L 59 288 L 93 175 L 0 112 L 116 112 Z'
);
}
</style>
</head>
<body>
<div class="line">
<span>inset</span>
<div class="leaf">叶子</div>
<div class="shanbei">扇贝</div>
<div class="roundjuxing">圆角矩形</div>
</div>
<div class="line">
<span>circle</span>
<div class="circle1">方向值偏移</div>
<div class="circle2">数值偏移</div>
<div class="circle3">closest-side</div>
<div class="circle4">farthest-side</div>
</div>
<div class="line">
<span>ellipse</span>
<div class="ellipse1">方向值偏移</div>
<div class="ellipse2">closest-side</div>
<div class="ellipse3">farthest-side</div>
</div>
<div class="line">
<span>polygon</span>
<div class="polygon1">对话框</div>
</div>
<div class="line">
<span>path</span>
<div class="path1">五角星</div>
</div>
</body>
</html>

inset()

  • 一个参:整体 — clip-path: inset(30px);
  • 两个参:上 下 — clip-path: inset(30px 50px);
  • 三个参:上 左右 下 — clip-path: inset(100px 30px 50px);
  • 四个参:上 右 下 左 — clip-path: inset(20px 89px 50px 40px);
  • round(将角变成弧线):
    • 注意:round不能在第一位,round后面必须跟值,使用round不能输入负值
    • 叶子:整体 round 左上右下角 右上左下角 — clip-path: inset(10px round 152px 5px);
    • 扇形:整体 round 左上角 右上左下角 右下角 — clip-path: inset(10px round 20px 10px 150px);
    • 圆角矩形:前面四个就是裁出矩形 round 四个角的弧线大小clip-path: inset(10px 20px 10px 30px round 20px);

circle()

  • 参数一:可以是数值,也可以是closest-sidefarthest-side
  • 参数二:at 关键字,控制圆心位置,默认在中间,有 x 轴 y 轴 ,后面可以是数值也可以是方向值
  • closest-sidefarthest-side 区别
    • 使用 closest-side 时,裁剪出的圆会尽量小,以确保它不会超出矩形的边界。
    • 使用 farthest-side 时,裁剪出的圆会尽量大,以确保它能够覆盖到矩形的边界

ellipse()

  • 参数一:左右
  • 参数二:上下
  • 其它参数: at 关键字 控制圆心位置,默认中心
  • closest-sidefarthest-side 区别
    • 跟 circle 一样

polygon()

  • 以逗号分隔,格式 x1 y1 一组,最少三组,每一组都是以原物体的左上角为原点,按照顺序依次连接
  • 借助 https://bennettfeely.com/clippy/ 来拖拽出想要的图形,然后按顺序把 x,y 写进去。

path

  • 接收的 svg 路径,可以通过 Gpt 生成一段 svg 五角星的路径
其他文章
cover
CSS-基础篇
  • 24/10/30
  • 15:29
  • CSS&HTML
cover
CSS-动画篇
  • 24/10/30
  • 15:29
  • CSS&HTML
目录导航 置顶
  1. 1. 知识篇
    1. 1.1. clip-path — 直接裁出图形,无需拼接元素实现图形
    2. 1.2. 示例:
    3. 1.3. inset()
    4. 1.4. circle()
    5. 1.5. ellipse()
    6. 1.6. polygon()
    7. 1.7. path
请输入关键词进行搜索