今天在css-tricks上看到一篇文章,那篇文章让我不禁心头一震,强大的CSS啊,居然能画出这么多基本的图形。图形包括基本的矩形、圆形、 椭圆、三角形、多边形,也包括稍微复杂一点的爱心、钻石、阴阳八卦等。当然有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,我希望你用的是 firefox或者chrome,当然IE也能看一部分的。那好,下面就一起来看看我们是如何用纯CSS来画这些图形的,如果你也觉得很震撼,推荐给你的 朋友吧。
最终效果:
CSS代码如下:
1
2
3
4
5
|
# square {
width : 100px ;
height : 100px ;
background : red ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
|
#rectangle { width : 200px ;
height : 100px ;
background : red ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
|
# circle {
width : 100px ;
height : 100px ;
background : red ;
-moz-border-radius: 50px ;
-webkit-border-radius: 50px ;
border-radius: 50px ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
|
#oval { width : 200px ;
height : 100px ;
background : red ;
-moz-border-radius: 100px / 50px ;
-webkit-border-radius: 100px / 50px ;
border-radius: 100px / 50px ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
|
#triangle-up { width : 0 ;
height : 0 ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
border-bottom : 100px solid red ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
|
#triangle-down { width : 0 ;
height : 0 ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
border-top : 100px solid red ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
|
#triangle- left {
width : 0 ;
height : 0 ;
border-top : 50px solid transparent ;
border-right : 100px solid red ;
border-bottom : 50px solid transparent ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
|
#triangle- right {
width : 0 ;
height : 0 ;
border-top : 50px solid transparent ;
border-left : 100px solid red ;
border-bottom : 50px solid transparent ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
|
#triangle-topleft { width : 0 ;
height : 0 ;
border-top : 100px solid red ;
border-right : 100px solid transparent ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
|
#triangle-topright { width : 0 ;
height : 0 ;
border-top : 100px solid red ;
border-left : 100px solid transparent ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
|
#triangle-bottomleft { width : 0 ;
height : 0 ;
border-bottom : 100px solid red ;
border-right : 100px solid transparent ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
|
#triangle-bottomright { width : 0 ;
height : 0 ;
border-bottom : 100px solid red ;
border-left : 100px solid transparent ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
9
|
#parallelogram { width : 150px ;
height : 100px ;
margin-left : 20px ;
-webkit-transform: skew( 20 deg);
-moz-transform: skew( 20 deg);
-o-transform: skew( 20 deg);
background : red ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
|
#trapezoid { border-bottom : 100px solid red ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
height : 0 ;
width : 100px ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#star-six { width : 0 ;
height : 0 ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
border-bottom : 100px solid red ;
position : relative ;
} #star-six:after { width : 0 ;
height : 0 ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
border-top : 100px solid red ;
position : absolute ;
content : "" ;
top : 30px ;
left : -50px ;
} |
最终效果:
CSS代码如下:
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
|
#star-five { margin : 50px 0 ;
position : relative ;
display : block ;
color : red ;
width : 0px ;
height : 0px ;
border-right : 100px solid transparent ;
border-bottom : 70px solid red ;
border-left : 100px solid transparent ;
-moz-transform: rotate( 35 deg);
-webkit-transform: rotate( 35 deg);
-ms-transform: rotate( 35 deg);
-o-transform: rotate( 35 deg);
} #star-five:before { border-bottom : 80px solid red ;
border-left : 30px solid transparent ;
border-right : 30px solid transparent ;
position : absolute ;
height : 0 ;
width : 0 ;
top : -45px ;
left : -65px ;
display : block ;
content : '' ;
-webkit-transform: rotate( -35 deg);
-moz-transform: rotate( -35 deg);
-ms-transform: rotate( -35 deg);
-o-transform: rotate( -35 deg);
} #star-five:after { position : absolute ;
display : block ;
color : red ;
top : 3px ;
left : -105px ;
width : 0px ;
height : 0px ;
border-right : 100px solid transparent ;
border-bottom : 70px solid red ;
border-left : 100px solid transparent ;
-webkit-transform: rotate( -70 deg);
-moz-transform: rotate( -70 deg);
-ms-transform: rotate( -70 deg);
-o-transform: rotate( -70 deg);
content : '' ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#pentagon { position : relative ;
width : 54px ;
border-width : 50px 18px 0 ;
border-style : solid ;
border-color : red transparent ;
} #pentagon:before { content : "" ;
position : absolute ;
height : 0 ;
width : 0 ;
top : -85px ;
left : -18px ;
border-width : 0 45px 35px ;
border-style : solid ;
border-color : transparent transparent red ;
} |
最终效果:
CSS代码如下:
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
|
#hexagon { width : 100px ;
height : 55px ;
background : red ;
position : relative ;
} #hexagon:before { content : "" ;
position : absolute ;
top : -25px ;
left : 0 ;
width : 0 ;
height : 0 ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
border-bottom : 25px solid red ;
} #hexagon:after { content : "" ;
position : absolute ;
bottom : -25px ;
left : 0 ;
width : 0 ;
height : 0 ;
border-left : 50px solid transparent ;
border-right : 50px solid transparent ;
border-top : 25px solid red ;
} |
最终效果:
CSS代码如下:
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
|
#octagon { width : 100px ;
height : 100px ;
background : red ;
position : relative ;
} #octagon:before { content : "" ;
position : absolute ;
top : 0 ;
left : 0 ;
border-bottom : 29px solid red ;
border-left : 29px solid #eee ;
border-right : 29px solid #eee ;
width : 42px ;
height : 0 ;
} #octagon:after { content : "" ;
position : absolute ;
bottom : 0 ;
left : 0 ;
border-top : 29px solid red ;
border-left : 29px solid #eee ;
border-right : 29px solid #eee ;
width : 42px ;
height : 0 ;
} |
最终效果:
CSS代码如下:
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
|
#heart { position : relative ;
width : 100px ;
height : 90px ;
} #heart:before, #heart:after { position : absolute ;
content : "" ;
left : 50px ;
top : 0 ;
width : 50px ;
height : 80px ;
background : red ;
-moz-border-radius: 50px 50px 0 0 ;
border-radius: 50px 50px 0 0 ;
-webkit-transform: rotate( -45 deg);
-moz-transform: rotate( -45 deg);
-ms-transform: rotate( -45 deg);
-o-transform: rotate( -45 deg);
transform: rotate( -45 deg);
-webkit-transform-origin: 0 100% ;
-moz-transform-origin: 0 100% ;
-ms-transform-origin: 0 100% ;
-o-transform-origin: 0 100% ;
transform-origin: 0 100% ;
} #heart:after { left : 0 ;
-webkit-transform: rotate( 45 deg);
-moz-transform: rotate( 45 deg);
-ms-transform: rotate( 45 deg);
-o-transform: rotate( 45 deg);
transform: rotate( 45 deg);
-webkit-transform-origin: 100% 100% ;
-moz-transform-origin: 100% 100% ;
-ms-transform-origin: 100% 100% ;
-o-transform-origin: 100% 100% ;
transform-origin : 100% 100% ;
} |
最终效果:
CSS代码如下:
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
|
#infinity { position : relative ;
width : 212px ;
height : 100px ;
} #infinity:before, #infinity:after { content : "" ;
position : absolute ;
top : 0 ;
left : 0 ;
width : 60px ;
height : 60px ;
border : 20px solid red ;
-moz-border-radius: 50px 50px 0 50px ;
border-radius: 50px 50px 0 50px ;
-webkit-transform: rotate( -45 deg);
-moz-transform: rotate( -45 deg);
-ms-transform: rotate( -45 deg);
-o-transform: rotate( -45 deg);
transform: rotate( -45 deg);
} #infinity:after { left : auto ;
right : 0 ;
-moz-border-radius: 50px 50px 50px 0 ;
border-radius: 50px 50px 50px 0 ;
-webkit-transform: rotate( 45 deg);
-moz-transform: rotate( 45 deg);
-ms-transform: rotate( 45 deg);
-o-transform: rotate( 45 deg);
transform: rotate( 45 deg);
} |
最终效果
CSS代码如下:
1
2
3
4
5
6
7
8
|
#egg { display : block ;
width : 126px ;
height : 180px ;
background-color : red ;
-webkit-border-radius: 63px 63px 63px 63px / 108px 108px 72px 72px ;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40% ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
#pacman { width : 0px ;
height : 0px ;
border-right : 60px solid transparent ;
border-top : 60px solid red ;
border-left : 60px solid red ;
border-bottom : 60px solid red ;
border-top-left-radius: 60px ;
border-top-right-radius: 60px ;
border-bottom-left-radius: 60px ;
border-bottom-right-radius: 60px ;
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#talkbubble { width : 120px ;
height : 80px ;
background : red ;
position : relative ;
-moz-border-radius: 10px ;
-webkit-border-radius: 10px ;
border-radius: 10px ;
} #talkbubble:before { content : "" ;
position : absolute ;
right : 100% ;
top : 26px ;
width : 0 ;
height : 0 ;
border-top : 13px solid transparent ;
border-right : 26px solid red ;
border-bottom : 13px solid transparent ;
} |
最终效果:
CSS代码如下:
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
|
#burst -12 {
background : red ;
width : 80px ;
height : 80px ;
position : relative ;
text-align : center ;
} #burst -12: before, #burst -12: after {
content : "" ;
position : absolute ;
top : 0 ;
left : 0 ;
height : 80px ;
width : 80px ;
background : red ;
} #burst -12: before {
-webkit-transform: rotate( 30 deg);
-moz-transform: rotate( 30 deg);
-ms-transform: rotate( 30 deg);
-o-transform: rotate( 30 deg);
transform: rotate( 30 deg);
} #burst -12: after {
-webkit-transform: rotate( 60 deg);
-moz-transform: rotate( 60 deg);
-ms-transform: rotate( 60 deg);
-o-transform: rotate( 60 deg);
transform: rotate( 60 deg);
} |
最终效果:
CSS代码如下:
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
|
#burst -8 {
background : red ;
width : 80px ;
height : 80px ;
position : relative ;
text-align : center ;
-webkit-transform: rotate( 20 deg);
-moz-transform: rotate( 20 deg);
-ms-transform: rotate( 20 deg);
-o-transform: rotate( 20 eg);
transform: rotate( 20 deg);
} #burst -8: before {
content : "" ;
position : absolute ;
top : 0 ;
left : 0 ;
height : 80px ;
width : 80px ;
background : red ;
-webkit-transform: rotate( 135 deg);
-moz-transform: rotate( 135 deg);
-ms-transform: rotate( 135 deg);
-o-transform: rotate( 135 deg);
transform: rotate( 135 deg);
} |
最终效果:
CSS代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#cut-diamond { border-style : solid ;
border-color : transparent transparent red transparent ;
border-width : 0 25px 25px 25px ;
height : 0 ;
width : 50px ;
position : relative ;
margin : 20px 0 50px 0 ;
} #cut-diamond:after { content : "" ;
position : absolute ;
top : 25px ;
left : -25px ;
width : 0 ;
height : 0 ;
border-style : solid ;
border-color : red transparent transparent transparent ;
border-width : 70px 50px 0 50px ;
} |
CSS代码如下:
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
|
#yin-yang { width : 96px ;
height : 48px ;
background : #eee ;
border-color : red ;
border-style : solid ;
border-width : 2px 2px 50px 2px ;
border-radius: 100% ;
position : relative ;
} #yin-yang:before { content : "" ;
position : absolute ;
top : 50% ;
left : 0 ;
background : #eee ;
border : 18px solid red ;
border-radius: 100% ;
width : 12px ;
height : 12px ;
} #yin-yang:after { content : "" ;
position : absolute ;
top : 50% ;
left : 50% ;
background : red ;
border : 18px solid #eee ;
border-radius: 100% ;
width : 12px ;
height : 12px ;
} |
好了,就到这里了,一共28个,个人觉得后面几个比较犀利。这些代码的来源是css-tricks。由青藤屋博客整理,转载请保留原文链接:
http://www.itivy.com/ivy/archive/2012/1/16/css-shape.html
相关推荐
文章还提到了如何绘制爱心和阴阳八卦等稍微复杂的图形,虽然内容未完全展示,但这些图形的实现原理通常是通过多边形边框技巧或使用CSS的变换(transform)功能来进一步构建复杂形状。 绘制爱心可以使用两个相邻的...
本文将深入探讨如何使用纯CSS绘制各种几何图形,包括三角形、圆形(半圆、1/4圆)以及多边形(平行四边形、梯形、五边形、六边形、八边形)。 首先,让我们从最简单的形状——三角形开始。在CSS中,我们不能直接...
【标题】"纯CSS3几何多边形图形动画特效.zip" 涉及的主要知识点是CSS3中的图形绘制和动画效果。CSS3是层叠样式表的第三个版本,相较于CSS2,它引入了许多新的特性,使得网页设计变得更加丰富多彩。在这个项目中,...
这意味着将一张完整的图片拆分成多个多边形区域,这些区域可以是三角形、矩形或梯形等。这种技术通常用于创建马赛克效果或者实现特定的艺术风格。分割过程可以通过算法实现,比如使用三角剖分算法(如 ear cutting ...
在Web开发中,利用div和CSS来创建各种多边形是一种常见的技巧,它可以极大地丰富网页设计的视觉效果。本教程的"div-css制作多边形.zip"文件包含了一系列相关资源,如HTML文件(index.html、readme.html)、相关...
WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中进行2D和3D图形渲染。它使得开发者可以在网页上实现复杂的交互式图形,而无需借助插件。"Webgl旋转三角形源码"是WebGL学习的基础教程,通常...
首先,我们来探讨CSS如何构建基本的几何图形。CSS通过设置`border-radius`、`transform`、`background-color`等属性来创建各种形状。以下是一些常见的CSS几何图形及其制作方法: 1. **正方形和矩形**:最基础的形状...
在本例中,我们可以将一张图片切割成多个多边形(如三角形、矩形或梯形)部分,这通常通过计算每个多边形的顶点坐标来实现。切割过程可能涉及到图像的拉伸和裁剪,以适应预定义的形状。 CSS在其中的角色主要是为...
僵尸宝宝的头像可能包含圆形或椭圆形来表示头部,矩形或梯形来构建身体,以及多边形如三角形或五边形来制作手脚。CSS3提供了`border-radius`属性来创建圆角,`clip-path`或`mask`来定义复杂的形状。开发者可以通过...
本文将深入探讨如何使用HTML5 Canvas来绘制三角形、矩形以及更复杂的多边形。 首先,我们需要了解Canvas的核心组件,即CanvasRenderingContext2D对象。这个对象提供了各种属性和方法,用于控制在Canvas元素上绘制的...
1. **矢量图形**: SVG可以定义国旗的各个形状,如矩形、三角形、多边形等,通过路径数据表示,确保无论放大多少倍,国旗的细节都能清晰可见。 2. **内联样式与属性**: SVG元素可以直接内联CSS样式,方便控制国旗的...
本示例聚焦于“绘制规则多边形”这一主题,利用SuperMap iClient 6R for JavaScript,我们可以创建并展示出各种几何形状,如矩形、正方形、圆形以及具有固定边数的多边形等。 SuperMap iClient 6R是SuperMap公司...
SVG中可以创建多种形状,如矩形、圆形、线、多边形等。在这个特效中,我们主要使用`<polygon>`元素来绘制三角形。`<polygon>`元素通过指定一系列的点坐标来形成一个多边形,例如: ```html ,y1 x2,y2 x3,y3" fill=...
"css画尖框div"这个主题就是关于如何用CSS技巧来创建带有尖角的矩形或任何其他形状的div。 在CSS中,我们可以通过调整边框宽度、边框颜色以及边框类型来控制边框的外观。为了创建尖角,我们需要使用边框的宽度和...
例如,一个简单的三角形可以通过旋转一个矩形的边角来实现。 再者,过渡和动画(animations)让图标在状态之间平滑地转换。这不仅限于颜色变化,还可以包括尺寸调整、位置移动等。这为网页添加了动态元素,提高了...
2. 实现直线、曲线、椭圆(圆)、矩形(圆角矩形)、三角形(直角三角形、等边三角形、任意三角形)、多边形的绘制。3. 绘制过程中,可以选择颜色,选择颜色有两种方式:颜色选择、颜色拾取。可以进行颜色填充,即对...
接着,通过`<path>`、`<polygon>`或`<rect>`等元素来构建形状,每个元素都有其特定的属性,如`d`属性用于定义路径数据,`points`属性用于定义多边形的顶点,`x`和`y`属性用于定义矩形的位置等。然后,使用CSS3的属性...
实现直线、曲线、椭圆(圆)、矩形(圆角矩形)、三角形(直角三角形、等边三角形、任意三角形)、多边形的绘制。 绘制过程中,可以选择颜色,选择颜色有两种方式:颜色选择、颜色拾取。可以进行颜色填充,即对选定...
而多边形元素则常采用扁平化设计,通过三角形、矩形、梯形等形状的组合,创造出立体感和动态效果,为网页增添了几何美学和现代感。 网站模板的结构通常包括头部、导航栏、主体内容区、侧边栏和页脚等部分。在“线条...