网站设计 webdesign
当前位置:首页 > 网站建设专题 > 网站设计
css3中圆角和阴影的实验
发布日期:2010-07-27 阅读次数:1004 字体大小:

主题折腾了不少东西,又看到了很多问题,尤其是IE,全系列全部不支持CSS3,唉,实在不行的话只能妥协用图片了。无奈~~在CSS3里面比较常 用的是 border-radius(圆角)和 box-shadow(阴影)。而关于这两个一起用会出现啥,一直没有遇到过。

昨天在 A-shun 那里看到了一点 chrome 下关于css3的小bug,border-radius和box-shadow一起用会溢出来四个边角。我一直在用chrome,所以对这个问题很好奇 哈,遂求教于万能的互联网,终于发现这个问题果然是存在的。

首先:这篇文章是翻译的,来自这里—-【传送门】。下 面是正文。

在他(原作者)创建 DeCal 的过程中, 为了增强视觉效果,使用了一些CSS3的渲染技术。主要包括了3个:box-shadow 、border-radius 和 RGBa 。

有趣的是不同浏览器对这些渲染技术的支持情况。像3.6+ 和 Opera 10.5+这些浏览器,是灰常有前途滴;但另外一些,诸如 Safari 和 Chrome,在支持上就不那么完整或者说,是有漏洞的。在他创建的这个日历视图上来看,他在按钮上使用了如上全部3个渲染效果。下面的是原本为橙色按钮 测试有关的CSS:

#cal td.smd_cal_event span a {
 background: #fab102;
 padding: 4px 10px 5px 10px;
 border: 1px solid #fff;
 border-bottom: 1px solid #363d50;
 -moz-border-radius: 10px;
 -webkit-border-radius: 10px;
 border-radius: 10px;
 -moz-box-shadow:
  inset 0 4px 7px 0 #fff25f,
  inset 0 -2px 4px 0 rgba(255, 242, 94, 0.4),
  inset 0 -4px 8px 0 rgba(207, 75, 3, 0.9),
  0 2px 4px 0 rgba(0, 0, 0, 0.4);
 -webkit-box-shadow:
  inset 0 4px 7px 0 #fff25f,
  inset 0 -2px 4px 0 rgba(255, 242, 94, 0.4),
  inset 0 -4px 8px 0 rgba(207, 75, 3, 0.9),
  0 2px 4px 0 rgba(0, 0, 0, 0.4);
 box-shadow:
  inset 0 4px 7px 0 #fff25f,
  inset 0 -2px 4px 0 rgba(255, 242, 94, 0.4),
  inset 0 -4px 8px 0 rgba(207, 75, 3, 0.9),
  0 2px 4px 0 rgba(0, 0, 0, 0.4);
 }

我们从一些简单的 background color和padding的语法开始,逐步地添加一些top/bottom border的定义,之后是为各种浏览器引擎使用的border-radius(圆角效果)(定义起来很烦人),之后是为各种浏览器引擎使用的繁杂的 box-shadows(唉,真是浪费带宽哪!)。我们在视觉方面,为CSS写了冗长的代码,但是做这些显然要比直接用一个背景图片要划算的多。(为便于 比较,以上的CSS代码大约有700 bytes大;但是等效的背景图片很轻易地就达到6-7k,另外还得加上HTTP请求。)

感谢 Kevin 的投稿