CSS三角形绘制

html-css017

CSS三角形绘制,第1张

当div宽度为0,高度为0的时候,只设置border的大小和四边不同颜色可看到下图,只保留一边的颜色,另外三边的颜色设置为transparent可得到一个方向的三角形。因此,可延伸出设置一边的border的颜色,相邻两边的border设置为transparent可得到一个方向的三角形。

border的大小的值为三角形底边上的高,三角形的底为相邻两边的border的高的和,如下图所示的红色锐角三角形

若想实现直角三角形的效果,如下图所示直角在左上的三角形,按原理可设置上border和左border的颜色,另外两条边的颜色为transparent,此样式可简写为只设置上border的颜色,另一条相邻的右border为transparent

你也许会遇到要画个奇怪三角形的时候,只要参考锐角三角形的方式,找到三角形底边和高,计算出三角形高和把相邻两条边的高相加作为底部,你可以画出各种各样的三角形,如果再加上角度旋转的css,你便啥三角形都能画!

此类三角形解决思路通常使用两个不同颜色的三角形做颜色叠加,比如做如上图所示的边框为1px的红色边框白色底三角形,就先画一个红色三角形,再画一个尺寸少2px的白色底三角形,然后设置两个三角形的position将三角形重叠,这里使用伪元素实现

1、向上正箭头

2、向下正箭头

3、向左正箭头

4、向右正箭头

5、向左上箭头

6、向右上箭头

7、向左下箭头

8、向右下箭头

1、理论

三角形实现原理:宽度width为0;height为0;

(1)有一条横竖边(上下左右)的设置为border-方向:长度 solid red,这个画的就是底部的直线。其他边使用border-方向:长度 solid transparent。

(2)有两个横竖边(上下左右)的设置,若斜边是在三角形的右边,这时候设置top或bottom的直线,和右边的斜线。若斜边是在三角形的左边,这时候设置top或bottom的直线,和左边的斜线。

二、实现

2.1 Triangle Up

#triangle-up {width:0    height:0    

border-left:50px solid transparent    

border-right:50px solid transparent    

border-bottom:100px solid red}

2.2 Triangle Down

#triangle-down {width:0    height:0  

  border-left:50px solid transparent    

border-right:50px solid transparent    

border-top:100px solid red}

2.3 Triangle Left

#triangle-left {

width:0  

  height:0  

  border-top:50px solid transparent  

  border-right:100px solid red   

 border-bottom:50px solid transparent}

2.4 Triangle Right

#triangle-right {width:0    

height:0    

border-top:50px solid transparent   

 border-left:100px solid red    

border-bottom:50px solid transparent}

2.5 Triangle Top Left

#triangle-topleft {width:0  

  height:0    

border-top:100px solid red   

 border-right:100px solid transparent}

2.6 Triangle Top Right

#triangle-topright {width:0   

 height:0  

  border-top:100px solid red    

border-left:100px solid transparent}

2.7 Triangle Bottom Left

#triangle-bottomleft {width:0   

 height:0    

border-bottom:100px solid red   

 border-right:100px solid transparent}

2.8 Triangle Bottom Right

#triangle-bottomright {width:0    

height:0   

 border-bottom:100px solid red    

border-left:100px solid transparent}