在制做前端项目时,咱们常常会遇到制做下拉功能时有个小三角,除了咱们用图片背景或者iconFont以外,咱们能够用CSS来实现。前端
首先咱们制做一个正常的模块,添加不一样颜色的边框来看下吧!spa
HTML代码:3d
<div class\="demo\_0"\></div\>
CSS代码:code
.demo_0 { width: 100px; height: 100px; margin: 100px auto; border: 20px solid transparent; border-color: black blue chocolate coral }
咱们会发现每一个边框给咱们呈现出的是一个有棱角的四边形的渲染效果,接下来咱们把这个模块的width
和height
都设为0,看下效果:blog
CSS代码:图片
.demo_0 { width: 0; height: 0; margin: 100px auto; border: 20px solid transparent; border-color: black blue chocolate coral }
这时咱们发现渲染出的效果是否是有四个三角形状的图像,这就是咱们模块width
和height
都设为0时,咱们给它设置边框的渲染效果。
接下来咱们把某一个方向的border的border-width
设为0来看下效果:it
CSS代码:class
.demo_0 { width: 0; height: 0; margin: 100px auto; border: 20px solid transparent; border-color: black blue chocolate coral; border-bottom:0; }
到这里咱们就能够总结出:原理
(1)制做三角形须要将该模块:宽度width
为0,高度height
为0;渲染
(2)制做不一样方向的相似等腰三角形时,须要将某一个方向的border-方向:高度 solid coral
,相对方向border-相对方向不设置任何参数,其余方向的border-其余方向:**不一样高度** solid **transparent**
;进设置三个方向便可。
(3)制做不一样方向的相似直角三角形时,须要将上下某一个方向的border-(top|bottom):高度 solid coral
,左右某一方向的border-(left|right):**相同高度** solid **transparent**
;仅设置两个方向便可。
.triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid coral; }
.triangle-down { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 100px solid coral; }
.triangle-left { width: 0; height: 0; border-top: 50px solid transparent; border-right: 100px solid coral; border-bottom: 50px solid transparent; }
.triangle-right{ width: 0; height: 0; border-top: 50px solid transparent; border-left: 100px solid coral; border-bottom: 50px solid transparent; }
.triangle-topleft { width: 0; height: 0; border-top: 100px solid coral; border-right: 100px solid transparent; }
.triangle-topright { width: 0; height: 0; border-top: 100px solid coral; border-left: 100px solid transparent; }
(7)Triangle Bottom Left
.triangle-bottomleft { width: 0; height: 0; border-bottom: 100px solid coral; border-right: 100px solid transparent; }
(8)Triangle Bottom Right
.triangle-bottomRight { width: 0; height: 0; border-bottom: 100px solid coral; border-left: 100px solid transparent; }