利用CSS的border以及它的属性值transparent来实现三角形,其中最主要的是要明白因为div的高度跟宽度都为0,margin,padding也为0,因此元素框的大小就是他的border的叠加,因为相邻boder会重叠,故存在内容宽高时其实任意一边存在的border都是梯形的,当div内容宽高为0时,border就表现为三角形,将四个border的颜色设置为transparent表示边框透明,而将右边框颜色再设置为红色就发现三角形出现了,其实这个三角形是右边框。css
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 0px; height: 0px; border: 100px solid transparent; border-right: 100px solid red; } </style> <div id="triangle-up"></div> </body> </html>
图解html
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 50px; height: 50px; border: 100px solid red; border-bottom: 100px solid red; } </style> <div id="triangle-up"></div> </body> </html>
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 0px; height: 0px; border: 100px solid red; } </style> <div id="triangle-up"></div> </body> </html>
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 0px; height: 0px; border: 100px solid transparent; border-right: 100px solid red; } </style> <div id="triangle-up"></div> </body> </html>
结合css其余特性定能作出更有趣的一些效果!segmentfault