实现一个CSS三角形

在 CSS 中,可以通过巧妙地使用 border 属性来实现一个三角形。这种方法利用了边框的斜切特性,通过设置不同方向的边框宽度和颜色,将元素的内容区域缩小为 0,从而形成一个三角形。

以下是实现三角形的详细步骤和代码示例:


实现原理

  1. 元素的宽度和高度设置为 0:将元素的 widthheight 设置为 0,使其内容区域消失。
  2. 设置边框:通过设置不同方向的边框宽度和颜色,利用边框的斜切特性形成三角形。
  3. 隐藏不需要的边框:将不需要显示的边框颜色设置为透明(transparent)。

代码示例

1. 向上的三角形

1
<div class="triangle-up"></div>
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 #007bff;
}

效果

  • 一个底边为 100px,高度为 100px 的蓝色三角形。

2. 向下的三角形

1
<div class="triangle-down"></div>
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 #007bff;
}

效果

  • 一个底边为 100px,高度为 100px 的蓝色三角形,方向向下。

3. 向左的三角形

1
<div class="triangle-left"></div>
1
2
3
4
5
6
7
.triangle-left {
width: 0;
height: 0;
border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-right: 100px solid #007bff;
}

效果

  • 一个底边为 100px,高度为 100px 的蓝色三角形,方向向左。

4. 向右的三角形

1
<div class="triangle-right"></div>
1
2
3
4
5
6
7
.triangle-right {
width: 0;
height: 0;
border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-left: 100px solid #007bff;
}

效果

  • 一个底边为 100px,高度为 100px 的蓝色三角形,方向向右。

5. 斜边三角形(等腰直角三角形)

1
<div class="triangle-right-angle"></div>
1
2
3
4
5
6
.triangle-right-angle {
width: 0;
height: 0;
border-bottom: 100px solid #007bff;
border-right: 100px solid transparent;
}

效果

  • 一个等腰直角三角形,直角在左下角。

进阶:通过伪元素实现三角形

在实际开发中,我们通常使用伪元素(::before::after)来实现三角形,这样可以避免额外的 HTML 元素。

示例:在按钮上添加一个向下的三角形

1
<button class="btn-with-arrow">点击我</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.btn-with-arrow {
position: relative;
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
cursor: pointer;
}

.btn-with-arrow::after {
content: '';
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-top: 8px solid #007bff;
}

效果

  • 按钮下方有一个小三角形,形成下拉箭头的效果。