提到CSS的border相信大家一点都不陌生,利用CSS的border可以为元素添加边框,例如,我们为一个id为triangle的元素添加一个边框:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#triangle{
width:100px;
height:100px;
border:1px solid #000000;
margin: 0 auto;
}
</style>
<body>
<div id="triangle"></div>
</body>
</html>
效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/3ba87f901c98bcd30ca8c3153ed4e93f.png)
效果很简单,现在我们将四个border分别设置不一样的颜色,并加大一下宽度。
![](https://i-blog.csdnimg.cn/blog_migrate/1f321271a90497e49086c43405a7f467.png)
再把#triangle的宽度和高度都去掉,就变成了图1-3的效果。
![](https://i-blog.csdnimg.cn/blog_migrate/98fcd3bc3afad021984af362432bd3e3.png)
接下来我们将上面的border去掉,变成了面1-4的效果。
![](https://i-blog.csdnimg.cn/blog_migrate/433474aa7faf268c16ebabc4b84aabeb.png)
然后将左右两边的border设为透明,最终效果如图1-5所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8bba3ead6af3dccdd42a7b0ad39965be.png)
最终代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#triangle{
width:0;
height:0;
border-right:50px solid transparent;
border-bottom:50px solid #ADFF2F;
border-left:50px solid transparent;
margin: 0 auto;
}
</style>
<body>
<div id="triangle"></div>
</body>
</html>
通过以上操作我们会得到一个等腰直角三角形(该等腰直角三角形的底边宽度为左右两个border宽度之和),如果我们想得到一个非直角的等腰三角形呢?下面我们进行三角形角度的控制。那么怎么去控制角度呢?一个等腰三角形在不改变底的情况下通过改变高度即可完成对角度的控制。也就是说我们只要将我们得到的三角形变得高一点即可,我们在之前的代码基础上把底部高度变为60px,效果如图1-6所示。
![](https://i-blog.csdnimg.cn/blog_migrate/af558dc066cbe22325cc07311439ff12.png)
现在我们完成了对三角形角度的控制,接下来我们将得到三角形变为一个等边三角形,只要将高调整为底的倍即可,此处不做展示。
现在我们利用上面制作三角形的思路,用纯CSS实现一个消息框,效果如图1-7所示。
![](https://i-blog.csdnimg.cn/blog_migrate/0ed87c9ff72cf12fd39723972b27fe50.png)
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#message{
width:150px;
height:60px;
position: relative;
margin:0 auto;
padding:5px;
border:1px solid #cccccc;
border-radius: 5px;
background: #ffffff;
filter:drop-shadow(0 0 2px #999999);
}
#message:before{
content: "";
width:0;
height:0;
position: absolute;
left: -10px;
top:29px;
border-top:6px solid transparent;
border-right:10px solid #cccccc;
border-bottom:6px solid transparent;
}
#message:after{
content: "";
width:0;
height:0;
position: absolute;
left: -9px;
top:29px;
border-top:6px solid transparent;
border-right:10px solid #ffffff;
border-bottom:6px solid transparent;
}
</style>
<body>
<div id="message">hello World!</div>
</body>
</html>