一、前言
在前端开发中,常常需要用到各种多边形,特别是三角形。这篇文章将介绍如何使用CSS画多边形,包括三角形、四边形、五边形和六边形。这些技巧都是基于CSS的伪元素实现的。
二、如何画三角形
1. 直角三角形
直角三角形是最简单的三角形,它的两条边垂直相交。我们可以使用CSS的:before
和:after
伪元素来实现。
/* 一个等边直角三角形 */
.triangle {
width: 0;
height: 0;
border-top: 50px solid red;
border-right: 50px solid transparent;
position: relative;
}
.triangle:before {
content: "";
position: absolute;
width: 0;
height: 0;
border-bottom: 50px solid red;
border-right: 50px solid transparent;
left: -50px;
top: 0;
}
上面的代码中,我们使用了:before
伪元素来实现三角形的一条边,然后通过border-color: transparent
来实现其它两条边。需要注意的是,我们通过给三角形设position: relative
来让:before
伪元素相对于父元素进行定位。
2. 等边三角形
等边三角形三条边都相等。我们使用:before
伪元素来实现一个等边三角形。
/* 等边三角形 */
.triangle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid red;
position: relative;
}
.triangle:before {
content: "";
position: absolute;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid white;
left: -50px;
top: -50px;
}
为了让三角形成为等边三角形,我们需要将三个边的border-width
设为相等的长度。然后,我们使用:before
伪元素来在三角形的顶点处绘制一个白色的三角形,使得三角形看起来像是只有一个边是红色的。此外,:before
伪元素也是相对于父元素进行定位。
三、如何画四边形
四边形就像它的名字一样,有四个边。我们可以使用:before
和:after
伪元素来实现一个带边框的四边形。
/* 带边框的四边形 */
.quadrilateral {
position: relative;
width: 100px;
height: 80px;
border: 2px solid red;
}
.quadrilateral:before {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 30px solid transparent;
border-right: 50px solid red;
border-bottom: 30px solid transparent;
left: -2px;
top: -2px;
}
.quadrilateral:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 30px solid transparent;
border-left: 50px solid red;
border-bottom: 30px solid transparent;
right: -2px;
top: -2px;
}
我们先创建了一个有边框的四边形,并将其定位为相对。然后使用伪元素来创建两个三角形,在四边形的两个相对角上,使三角形相交,形成一个四边形。需要注意的是,在创建:before
伪元素时,我们使用了相对定位来让伪元素位于正方形的左上角,使用了负的border-width
来让它重叠在正方形上部和下部,从而创建出其顶点;创建:after
伪元素同理,只不过偏移量和方向不同。
四、如何画五边形
使用:before
和:after
伪元素,我们可以再次尝试创建一个多边形。这一次,我们将实现一个五边形。
/* 五边形 */
.pentagon {
position: relative;
width: 100px;
height: 100px;
background: red;
}
.pentagon:before {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 50px solid transparent;
border-right: 47px solid red;
border-bottom: 50px solid transparent;
left: 0;
top: 0;
}
.pentagon:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 50px solid transparent;
border-left: 47px solid red;
border-bottom: 50px solid transparent;
right: 0;
top: 0;
}
上面的代码和前面的代码差不多。我们先创建了一个正方形,并用红色填充;接着,我们在正方形的两个相对角上创建了两个三角形,从而形成了一个五边形。
五、如何画六边形
要画一个六边形,我们需要在正方形的四个角上创建四个三角形。
/* 六边形 */
.hexagon {
position: relative;
width: 100px;
height: 100px;
background: red;
}
.hexagon:before, .hexagon:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 50px solid transparent;
border-right: 25px solid red;
border-bottom: 50px solid transparent;
}
.hexagon:before {
left: -25px;
top: 0;
}
.hexagon:after {
right: -25px;
top: 0;
}
.hexagon:before:before, .hexagon:before:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 25px solid transparent;
border-right: 50px solid red;
border-bottom: 25px solid transparent;
left: 0;
top: -25px;
}
.hexagon:after:before, .hexagon:after:after {
content: "";
position: absolute;
width: 0;
height: 0;
border-top: 25px solid transparent;
border-left: 50px solid red;
border-bottom: 25px solid transparent;
right: 0;
top: -25px;
}
六边形是一种特殊的多边形,我们需要在正方形的四个角上创建四个三角形,从而形成六边形。上面的代码创建了一个六边形,我们可以看到,我们使用了四个三角形分别位于正方形的四个角处,每个三角形都是这个三角形中的一部分。在一个三角形中,我们设置了一个border-right
来制造出与周围三角形的连接。
六、总结
以上介绍了如何使用CSS绘制各种多边形,包括三角形、四边形、五边形和六边形。这些技巧都是基于CSS的伪元素来实现的。我们可以通过:before
和:after
伪元素来创建多边形中的各个部分,然后使用CSS的border
属性来绘制边框。希望这篇文章能对你有所帮助。