CSS border实现三角形
今天实在闲得慌,上午html练手,仿写博客园的横向导航菜单。下午没事情做到CodePlex上闲狂,突然留意了一下codeplex上的一个导航特效:如下
上图中红色圈出来的地方下方有个小三角,以前碰到这样的图形脑子里总是认为那是一张图片。我很随意的就用firebug查看了下,结果找了半天没有图片,发现是li里面有一个超链接a和一个没有任何内容的div,
原型代码如下:
根本不是我想的那样,不是一张图片。接着在firebug里里面各种修改这个div的css属性发现,下面的那个三角形确实是div生成的。
我就把相应的属性一个个复制出来进行试验,结果奇妙的各种三角形和梯形生就呈现在我的眼前。下面是一个例子:
html 代码:
<!DOCTYPE html> <html> <head> <title>css border生成各种三角形</title> <style type="text/css"> div{width:0;height:0;border-style:solid;border-width:10px;} #down{border-color:#7B4F9D #fff #fff #fff;} #up{border-color:#fff #fff #7B4F9D #fff;} #left{border-color:#fff #7B4F9D #fff #fff;} #right{border-color:#fff #fff #fff #7B4F9D;} #left-down{border-width:30px 10px;border-color:#7B4F9D #fff #FFF #7B4F9D;} </style> </head> <body> <div id="down"></div> <div id="up"></div> <div id="left"></div> <div id="right"></div> <div id="left-down"></div> </body> </html>
效果图如下:
写了这么长时间的html到现在才发现这样也成呀。于是乎在google,百度搜索了一下,居然搜出一大片的效果实例,一下是比较有参考性的博客连接:
http://www.zhangxinxu.com/wordpress/?p=651, http://www.csscss.org/csssample/2010223694.shtml 。
看了鑫空间 实例,居然还能实现一些圆角效果,技术还真是神奇呀。不过遗憾的是浏览器到底是怎么样解析border叠加效果的就不知所以然了。这里有人简单的介绍了下http://zsuczw.iteye.com/blog/1314976 ,不过我认为那只是猜测的,不是根本原因解释,还有待研究。今天收获不小,期待明天的收获更多。。。
不抛弃,不放弃