CSS技巧之圆角背景与三角形

前端开发中两个很不错的小技巧, CSS三角形与圆角背景. 的确, 它们都可以通过图片来实现, 但, 抛开用代码实现可以减小图片加载量不说, 当你遇到三角形或圆角背景下还有一层非纯色背景时, 你又不得不考虑IE6 png兼容问题, 嗯, IE6,万恶之源. 此时, CSS三角形及圆角背景将是上佳选择.

 

查看演示: 点此查看DEMO
CSS三角形与圆角背景案例应用
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 }

      
        
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 }

 

      
        
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 }

 

     
       
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><!--它就是三角形了,哈-->

 

原文发布于Mr.Think的博客: http://mrthink.net/css-common-round-triangle/   转载请注明出处.

你可能感兴趣的:(css)