另一种方法:使用CSS3三角形和transform rotate
使用这种技术制作三角形形状非常容易。如果您喜欢看一个解释这种技术的动画,请看这里:
![gif动画:如何使用transform rotate制作三角形](https://istack.dev59.com/63AGJ.gif)
否则,以下是制作等腰直角三角形的详细解释,分为4个步骤(这不是一部悲剧)。
- 注1:对于非等腰三角形和花哨的东西,您可以查看第4步。
- 注2:在以下代码段中,供应商前缀未包含在内。它们包含在codepen demo中。
- 注3:以下说明的HTML始终是:
<div class="tr"></div>
步骤1:制作一个div
很容易,只需确保width = 1.41 x height
。您可以使用任何技术(请见此处),包括使用百分比和padding-bottom来维护宽高比并制作响应式三角形。在下面的图像中,div具有金黄色边框。
在该div中,插入一个伪元素,并将其设为父元素的100%宽度和高度。伪元素在以下图像中具有蓝色背景。
![使用transform roate制作CSS三角形第一步](https://istack.dev59.com/UdgtP.webp)
此时,我们有以下CSS:
.tr {
width: 30%;
padding-bottom: 21.27%;
position: relative;
}
.tr: before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #0079C6;
}
步骤 2:让我们旋转
首先,最重要的是定义旋转的基准点。 默认的基准点位于伪元素中心,而我们需要它在左下角。通过在伪元素中添加以下CSS:
transform-origin:0 100%;
或者 transform-origin: left bottom;
现在我们可以使用transform : rotate(45deg);
将伪元素顺时针旋转45度。
![使用CSS3创建三角形第2步](https://istack.dev59.com/mEaS1.webp)
此时,我们有了这个CSS:
.tr {
width: 30%;
padding-bottom: 21.27%;
position: relative;
}
.tr:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #0079C6;
transform-origin: 0 100%;
transform: rotate(45deg);
}
第三步:隐藏
为了隐藏赘余的伪元素部分(即溢出黄色边框的内容),你只需要在容器上设置overflow:hidden;
。去掉黄色边框后,你就得到了一个三角形!:
演示
![CSS三角形](https://istack.dev59.com/M2csZ.webp)
CSS:
.tr {
width: 30%;
padding-bottom: 21.27%;
position: relative;
overflow: hidden;
}
.tr:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #0079C6;
transform-origin: 0 100%;
transform: rotate(45deg);
}
步骤4:更深入地了解...
如演示所示,您可以自定义三角形:
- 通过使用
skewX()
使它们变得更薄或更平。
- 通过调整变换原点和旋转方向来使它们指向左侧、右侧或其他任何方向。
- 使用3D变换属性进行一些反射。
- 为三角形添加边框
- 在三角形内放置图像
- 更多...发挥CSS3的威力吧!
为什么要使用这种技术?
- 三角形很容易响应式设计。
- 您可以制作带有边框的三角形。
- 您可以保持三角形的边界。这意味着您只能在光标位于三角形内部时触发悬停状态或单击事件。这在某些情况下非常方便,例如此处,每个三角形都不能覆盖其相邻的三角形,因此每个三角形都有自己的悬停状态。
- 您可以制作一些炫酷的效果,如反射。
- 它将帮助您理解2D和3D变换属性。
为什么不使用这种技术?
- 主要缺点是浏览器兼容性,2D变换属性由IE9+支持,因此如果您计划支持IE8,则无法使用此技术。有关更多信息,请参见CanIuse。对于某些使用3D变换的炫酷效果,例如反射,浏览器支持为IE10+(有关更多信息,请参见CanIuse)。
- 如果您不需要响应式设计且简单的三角形就可以满足您的需求,则应该选择此处解释的边界技术:浏览器兼容性更好,而且由于这里的惊人帖子,更易于理解。