关于网页中圆角实现

在我们日常的开发中,经常会碰到需要将div的border设置为圆角效果,已达到美化,提高用户体验的目的。

从历史的角度来说,圆角效果的实现一般都是很棘手的问题。一般都是通过图片以及JavaScript方式来实现。在CSS3之前,CSS不支持直接设置圆角的属性。于是在新一代的CSS中增加了圆角效果设置属性,即

W3C标准属性:border-radius

但是遗憾的是主流浏览器对其的支持层次不齐,早前版本浏览器不支持此属性,这也就造成在日常的开发中,为了保证兼容性,此属性的应用还没有被普及,常常要做一些舍近求远的做法。

 

一个兼容性好的解决方案,才是我们真正需要的,所以下面介绍两种:

   1、基于传统的Javascript方式控制圆角效果的兼容性很好的解决方案:

这种方式实现的解决方案有很多,这里就用其中很优秀的 curvycorners来说明。为什么要使用curvycorners.js呢?因为其屏蔽了各种浏览器的差异,在内容解决兼容性问题,使得我们使用时变得很方便。下面就是其使用例子:

   1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
   2: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   3: <head>
   4: <title>curvyCorners Demo 1</title>
   5: <script type="text/JavaScript" src="../curvycorners.src.js"></script>
   6: <style>
   7:  
   8: #myBox {
   9:     margin: 0.5in auto;
  10:     color: #fff;
  11:     width: 60%;
  12:     padding: 20px;
  13:     text-align: left;
  14:     background-color: #f00;
  15:     border: 3px solid #fff;
  16: }
  17:  
  18: html,body {
  19:     height: 100%;
  20:     text-align: center;
  21:     font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
  22:     font-size: 12px;
  23:     margin: 0px;
  24:     background-image: url(pattern.gif);
  25:     color:#FA0;
  26: }
  27:  
  28: </style>
  29: <script type="text/JavaScript">
  30:  
  31:   curvyCorners.addEvent(window, 'load', initCorners);
  32:  
  33:   function initCorners() {
  34:     var settings = {
  35:       tl: { radius: 20 },
  36:       tr: { radius: 20 },
  37:       bl: { radius: 20 },
  38:       br: { radius: 20 },
  39:       antiAlias: true
  40:     }
  41:     curvyCorners(settings, "#myBox");
  42:   }
  43:  
  44: </script>
  45: </head>
  46:  
  47: <body>
  48: <h1>curvyCorners Demo 1</h1>
  49:  
  50:   <div id="myBox">
  51:       It's my box. If you saw the radius effect, you got it!
  52:   </div>
  53:  
  54: </body>
  55: </html>

从上例中,很容就知道怎么使用cruvycorners了,在使用网页中引用cruvycorners.js文件,通过tl,tr, bl, br来分别控制div的四角,在通过cruvyCorners()函数将其应用到需要圆角效果的div上。就这么简单。

当然,在CruvyCorners v2.0.x开始提供了直接的CSS的方式,使用方式CSS3没有什么大的区别,请参考下面例子。

   2、沿用CSS3的优良特性,是那些不支持CSS3的浏览器,也能够正确解析CSS3的新增属性:

    使不支持CSS3的浏览器拥有解析CSS3新属性的能力可以借助 ie-ccs3.htc 。IE-CCS3其实就是使IE6、7、8能够解析CCS3新属性的脚本。它的使用也很方便,就在需要用到CSS3新特性的地方添加一个behavior属性,就可以了。如:

.box {
  -moz-border-radius: 15px; /* Firefox */
  -webkit-border-radius: 15px; /* Safari and Chrome */
  border-radius: 15px; /* Opera 10.5+, future browsers, and now also Internet Explorer 6+ using IE-CSS3 */

  behavior: url(ie-css3.htc); /* This lets IE know to call the script on all elements which get the 'box' class */
}

其实,需要说明的是-moz-border-radius是火狐实现属性,-webkit-border-radius是webkit内核的实现,即Safri和Chrome,而border-radius的标准属性。其中behaviour属性是必须的,值为ie-ccs3.htc的路径。

posted @ 2012-04-11 16:46  斯洛波维亚  阅读(464)  评论(0编辑  收藏  举报