由于以前作一个页面出现了不少三角,开始直接用图片感受并非很好用,看着老是怪怪的颜色还很难调整的跟背景同样,就搜了一波代码直接用上了,过后想了一下感受不知道具体原理是什么,很奇怪为何边框能设置成三角的样式。因而搜了一波原理整理以下css
由于不多用到很粗的边框,并且90%的状况下咱们用边框都是一个颜色的。因此我发现我并不知道边框究竟是什么样子的,一直一来我都觉得四条边都是一条线(不要告诉我就我一我的这样认为)。spa
实验了一下才发现边框愈来愈粗的时候,很明显每条边都是一个梯形3d
由于以前看的代码都会写上width: 0; height: 0;
当时不理解为何,如今很容易就能想到,用极限的思惟,当内容大小趋近与零的时候,每一个边就是一个三角了。code
这个时候就能够看到三角已经出现,咱们要作的就是把其余边设置为透明的就能够获得咱们须要的三角了。orm
经过分别取消边框发现下面几种状况:blog
明白了这些以后,再看代码是否是感受就很清晰了呢?而后咱们就能够作出更多形状的三角。有了这些形状再加上旋转属性,基本全部的场景都能使用。图片
.box { /* 内部大小 */ width: 0px; height: 0px; /* 边框大小 只设置三条边*/ border-top: #4285f4 solid; border-right: transparent solid; border-left: transparent solid; border-width: 85px; /* 其余设置 无关紧要*/ margin: 50px; }
利用对边的状况,作出更小的直角三角形rem
.box { /* 内部大小 */ width: 0px; height: 0px; /* 边框大小 只设置两条边*/ border-top: #4285f4 solid; border-right: transparent solid; border-width: 85px; /* 其余设置 */ margin: 50px; }
经过更改底边的长度能够作出各类不一样的三角形it
.box { /* 内部大小 */ width: 0px; height: 0px; /* 边框大小 */ border-top: #4285f4 170px solid; border-right: transparent 85px solid; border-left: transparent 85px solid; /* 其余设置 */ margin: 50px; }
把伪元素设置成三角,再经过定位肯定位置,就能够制做出来经典的对话气泡了。io
.bubbly { position: absolute; top: 30%; left: 50%; transform: translate(-50%, -50%); background: #00ccbb; border-radius: 8px; width: 200px; padding: 40px 10px; text-align: center; color: white; font-size: 20px; .bubbly:after { content: ''; position: absolute; bottom: 0; left: 50%; border: 34px solid transparent; border-top-color: #00ccbb; border-bottom: 0; border-left: 0; margin: 0 0 -34px -17px; }
经过对四条边的长度的设置,还能够作出各类各样的三角形,几乎全部三角的形状均可以设置出来。
另外还能够经过设置宽高中的一项为0另外一个不为0,来设置出体形的形状,你们能够自由实验