欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CSS做等边三角形

程序员文章站 2024-02-20 14:13:28
...

这里我列举的两种方法:一种用边框也就是border实现(比较简单)另一种是用五个div旋转溢出隐藏实现

一、用border

在我们平常使用边框的时候往往是一个很窄的边框,所以在视觉效果上边框看似为直线,事实呢?

给一个小的盒子加一个很宽的边框,如下:

html代码:

<div id="triangle"></div>

css代码:

#triangle{
		margin:0 auto;

		width: 20px;
		height: 20px;
		border-left: 173.2px solid red;
		border-top: 100px solid blue;
		border-right: 173.2px solid green;
		border-bottom: 100px solid black;
	}

CSS做等边三角形

可以明显的看出其实并不是像想的那样边框是直线或者矩形。其实它是体型滴~

下面我们去掉盒子的宽度(都变为0),css如下:

#triangle{
		margin:0 auto;

		width: 0px;
		height: 0px;
		border-left: 173.2px solid red;
		border-top: 100px solid blue;
		border-right: 173.2px solid green;
		border-bottom: 100px solid black;
	}

CSS做等边三角形

 

由四个三角形组成的矩形就出来了。。。如果我们想要三角形只需要把其中的三个三角形(即边框)的颜色变为透明即可

 

#triangle{
		margin:0 auto;

		width: 0px;
		height: 0px;
		border-left: 173.2px solid transparent;
		border-top: 100px solid transparent;
		border-right: 173.2px solid green;
		border-bottom: 100px solid transparent;
	}

CSS做等边三角形

三角形出来了。。。

而三角形的角度只需要通过调节边框的长度即可控制,具体多少就是简单的数学问题

了(三角函数,勾股定理。。)

上述例中长度大概按 1 : 2 : 1.732 来就是正三角形了

如果看着不舒服或者要求需要可以用 transform:rotate(指定角度);旋转即可

二、用五个div

<div class="d1">
    <div class="d2">
        <div class="d3">
            <div class="d4">
                <div class="d5"></div>
            </div>		
        </div>
    </div>
</div>
.d1,.d2,.d3,.d4,.d5{
			width: 200px;
			height: 200px;
			overflow: hidden;
			position: absolute;
		}
		/*d1与d4位置重合*/
		.d1{
			left:50%;
			top: 20%;
			border: 1px solid pink;
			transform: rotate(30deg);
			transform-origin:200px 200px;
		}
		.d2{
			transform: rotate(-30deg);
			transform-origin:0 200px;
			/*background: blue;*/
		}
		.d3{
			transform: rotate(-30deg);
			transform-origin:200px 200px;
			border: 1px solid red;
			background: red;
		}
		.d4{
			border: 1px solid green;
			background: green;
			transform: rotate(-30deg) ;
			transform-origin:200px 0;

		}
		.d5{
			border: 1px solid black;
			background: black;
			transform: rotate(-30deg) ;
			transform-origin:0 0;
		}

在没有设置溢出隐藏时:

CSS做等边三角形

然后 加上overflow:hidden:

CSS做等边三角形

这个超麻烦。。还是border吧,自己玩玩还可以