您的位置:首页 > Web前端 > CSS

CSS技巧之圆角背景与三角形实现方法

2010-11-05 23:18 856 查看
的确, 它们都可以通过图片来实现, 但, 抛开用代码实现可以减小图片加载量不说, 当你遇到三角形或圆角背景下还有一层非纯色背景时, 你又不得不考虑IE6 png兼容问题, 嗯, IE6,万恶之源. 此时, CSS三角形及圆角背景将是上佳选择.
查看演示
<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<meta name="author" content="Mr.Think青鸟" /> 
<meta name="keywords" content="Mr.Think,前端开发,WEB前端,前端技术,前端开发,WEB前端开发,用户体验,网站策划,网站优化,青鸟,javascript,jQuery,css,xhtml,html,UE,SEO,Mr.Think的博客,青鸟的博客,PHP爱好者,Bluebirdsky" /> 
<meta name="description" content="Mr.Think的博客,中文网名青鸟,现专注于WEB前端开发,同时也是一位PHP的爱好者.爱思考,有点代码洁癖,生吃过螃蟹腿,喜好肉食.这里是我记录知识与生活琐事的地方." /> 
<link rel="pingback" href="http://mrthink.net/xmlrpc.php" /> 
<link rel="alternate" type="application/rss+xml" title="Mr.Think的博客 RSS Feed" href="http://mrthink.net/feed/" /> 
<title>CSS技巧之圆角背景与三角形@Mr.Think</title> 
<style> 
/*reset css*/ 
body{background:#888;font-size:0.8em;letter-spacing:1px;font-family:\5fae\8f6f\96c5\9ed1; line-height:1.8em} 
div,em,p{margin:0;padding:0} 
input{font:12px/1.5 tahoma,arial,sans-serif; vertical-align:middle} 
h1{font-size:1em; font-weight:normal} 
h1 a{ padding:2px 3px;background:#047; color:#fff; text-decoration:none} 
h1 a:hover{background:#a40000; color:#fff; text-decoration:underline} 
h3{margin:1em auto; position:relative;color:#888; font-weight:bold;font-size:1em} 
.triangle{margin:20px} 
.round{margin:0 20px} 
.box{padding:10px;background:#cf6} 
/*round*/ 
.r_top, .r_bottom {display:block; background:transparent; font-size:1px}/*左上右上角和左下右下角的容器*/ 
.r_a, .r_b, .r_c, .r_d {display:block; overflow:hidden}/*四个圆角*/ 
.r_a, .r_b, .r_c{height:1px} 
.r_b, .r_c, .r_d{background:#cf6} 
.r_a {margin:0 5px} 
.r_b {margin:0 3px; border-width:0 2px} 
.r_c {margin:0 2px} 
.r_d {height:2px; margin:0 1px} 
/*triangle*/ 
.triangle em{display:block;width:0;height:0;font-size:0;line-height:0;border-width:40px;border-style:solid;border-color:#cf6 #fff #39c #ffc;_filter:chroma(color=#000000)/*色度滤镜,让IE6实现透明borderColor.滤镜的颜色值不可简写*/} 
.triangle em.a{border-color:transparent transparent #fff transparent;_border-color:#000 #000 #fff #000} 
.triangle em.b{border-color:transparent transparent transparent #fff;_border-color:#000 #000 #000 #fff} 
.triangle em.c{border-color:#fff transparent transparent transparent;_border-color:#fff #000 #000 #000} 
.triangle em.d{border-color:transparent #fff transparent transparent;_border-color:#000 #fff #000 #000} 
</style> 
</head> 
<body> 
<!--DEMO start--> 
<div class="round"> 
<!--左上角/右上角--> 
<div class="r_top"><em class="r_a"></em><em class="r_b"></em><em class="r_c"></em><em class="r_d"></em></div> 
<div class="box"> 
<h1><a href="http://mrthink.net/">Mr.Think的个人博客</a><br>@专注前端技术,热爱PHP,崇尚简单生活.</h1> 
<h3>返回文章页:<a href="http://mrthink.net/css-common-round-triangle/">CSS技巧之圆角背景与三角形@Mr.Think</a></h3> 
</div> 
<!--左下角/右下角--> 
<div class="r_bottom"><em class="r_d"></em><em class="r_c"></em><em class="r_b"></em><em class="r_a"></em></div> 
</div> 
<div class="triangle"> 
<em></em> 
<br> 
<em class="a"></em> 
<br> 
<em class="b"></em> 
<br> 
<em class="c"></em> 
<br> 
<em class="d"></em> 
<br> 
</div> 
</body> 
</html>

CSS圆角背景
通过改变层叠元素的margin值实现圆角效果.当然,有人会说不用这么麻烦,CSS3几句代码就可以搞定,但目前来说不实用,支持的浏览器没几个.

css部分
.r_top, .r_bottom {display:block; background:transparent; font-size:1px}/*左上右上角和左下右下角的容器*/ 
.r_a, .r_b, .r_c, .r_d {display:block; overflow:hidden}/*四个圆角*/ 
.r_a, .r_b, .r_c{height:1px} 
.r_b, .r_c, .r_d{background:#cf6} 
.r_a {margin:0 5px} 
.r_b {margin:0 3px; border-width:0 2px} 
.r_c {margin:0 2px} 
.r_d {height:2px; margin:0 1px}

html部分

<!--左上角/右上角--> 
<div class="r_top"><em class="r_a"></em><em class="r_b"></em><em class="r_c"></em><em class="r_d"></em></div> 
<div class="box"> 
.....内容容器..... 
</div> 
<!--左下角/右下角--> 
<div class="r_bottom"><em class="r_d"></em><em class="r_c"></em><em class="r_b"></em><em class="r_a"></em></div>

CSS三角形
这个就比较简单了, 把元素定义成块级0大小(0宽0高0字号0行高)后, 通过改变元素的border-color值实现. 本文用的是em元素, 当然, 如果你项目中用em比较频繁, 为避免冲突也可以用samp,strong等元素.
当然, 即便用CSS实现的三角形, 万恶的IE6还是会给你添点麻烦: IE6不支持border-color的transparent值, 怎么办? 为ie6单独写一个border-color值, 然后用chroma滤镜实现透明, 详见代码
css部分

em{display:block;width:0;height:0;font-size:0;line-height:0;border-width:40px;border-style:solid;border-color:#cf6 #fff #39c #ffc;_filter:chroma(color=#000000)/*色度滤镜,让IE6实现透明borderColor.滤镜的颜色值不可简写*/} 
em.a{border-color:transparent transparent #fff transparent;_border-color:#000 #000 #fff #000} 
em.b{border-color:transparent transparent transparent #fff;_border-color:#000 #000 #000 #fff} 
em.c{border-color:#fff transparent transparent transparent;_border-color:#fff #000 #000 #000} 
em.d{border-color:transparent #fff transparent transparent;_border-color:#000 #fff #000 #000}

html调用

<em><em><!--它就是三角形了,哈-->

本文只是CSS实现方法只是众多CSS方法中的一种, 更多的方法, 请自行Google .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: