视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CSS3阴影box-shadow的使用和技巧总结_html/css_WEB-ITnose
2020-11-27 16:09:19 责编:小采
文档


本文摘自:http://blog.csdn.net/freshlover/article/details/7610269

text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果。随着html5和CSS3的普及,这一特殊效果使用越来越普遍。

基本语法是{box-shadow:[inset] x-offset y-offset blur-radius spread-radiuscolor}

对象选择器 {box-shadow:[投影方式] X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色}

box-shadow属性的参数设置取值:

阴影类型:此参数可选。如不设值,默认投影方式是外阴影;如取其唯一值“inset”,其投影为内阴影;

X-offset:阴影水平偏移量,其值可以是正负值。如果值为正值,则阴影在对象的右边,其值为负值时,阴影在对象的左边;

Y-offset:阴影垂直偏移量,其值也可以是正负值。如果为正值,阴影在对象的底部,其值为负值时,阴影在对象的顶部;

阴影模糊半径:此参数可选,,但其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊;

阴影扩展半径:此参数可选,其值可以是正负值,如果值为正,则整个阴影都延展扩大,反之值为负值时,则缩小;

阴影颜色:此参数可选。如不设定颜色,浏览器会取默认色,但各浏览器默认取色不一致,特别是在webkit内核下的safari和chrome浏览器下表现为透明色,在Firefox/Opera下表现为黑色(已验证),建议不要省略此参数。

浏览器的兼容:

为了兼容各主流浏览器并支持这些主流浏览器的较低版本,在基于Webkit的Chrome和Safari等浏览器上使用box-shadow属性时,我们需要将属性的名称写成-webkit-box-shadow的形式。Firefox浏览器则需要写成-moz-box-shadow的形式。

[css] view plain copy

  1. .box-shadow{
  2. //Firefox4.0-
  3. -moz-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;
  4. //Safariand Google chrome10.0-
  5. -webkit-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;
  6. //Firefox4.0+、 Google chrome 10.0+ 、 Oprea10.5+ and IE9
  7. box-shadow: 投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色;
  8. }

注意:出于方便,后文的css属性有的地方只写了box-shadow属性,没有写-moz-和-webkit-前缀的形式,在使用中不要忘记加上。

为了更清楚的了解box-shadow的特征,做几个小测试,看效果:

相关代码:

[html] view plain copy

  1. CSS3属性:box-shadow测试
  2. 并且此处还涉及到一个多阴影的顺序问题。当给同一个元素使用多个阴影属性时,需要注意它的顺序,最先写的阴影将显示在最顶层,如. box-shadow-7设为不同的模糊值:

    .box-shadow-7{

    box-shadow:0 0 10px 5px black,

    0 0 10px 20px red;

    }

    将能看出层叠的顺序效果:

    如果将两个阴影效果调一下,改为如下:

    .box-shadow-8{

    box-shadow:0 0 10px 20px red,

    0 0 10px 5px black;

    }

    将只显示红色的阴影效果,因为红色阴影层在上面,模糊半径大,将后面的黑色阴影完全遮挡。

    得出的结论是:如果前面的阴影模糊值小于后面的阴影模糊值,那么前面的显示在后面之上,如果前面阴影的模糊值大于后面的阴影模糊值,那么前面的阴影将遮住后面的阴影效果。

    4) 类border边框效果(只设置阴影扩展半径和阴影颜色)

    .box-shadow-9呈现的效果,同boder:1px solid red相似,但box-shadow的效果与border效果在对象高度上有区别,正好要比border高度大一个扩展半径。而且阴影不影响页面的任何布局,这一点可以通过查看firebug下的layout图得以证实。

    5) 在ie下模拟css3中的box-shadow阴影效果

    方法一:可以使用IE的Shadow滤镜

    基本语法:filter:progid:DXImageTransform.Microsoft.Shadow(color=’颜色值’, Direction=阴影角度(数值),Strength=阴影半径(数值));

    注意:该滤镜必须配合background属性一起使用,否则该滤镜失效。

    IE下模拟css3中的box-shadow(阴影)代码:

    [css] view plain copy

    1. .box-shadow{
    2. filter: progid:DXImageTransform.Microsoft.Shadow(color='#969696',Direction=135, Strength=5);/*for ie6,7,8*/
    3. background-color: #ccc;
    4. -moz-box-shadow:2px 2px 5px #969696;/*firefox*/
    5. -webkit-box-shadow:2px 2px 5px #969696;/*webkit*/
    6. box-shadow:2px 2px 5px #969696;/*opera或ie9*/
    7. }

    在六一儿童节的专题中,我是这么处理的:

    [css] view plain copy

    1. li.blk-item{
    2. width:423px;
    3. height:229px;
    4. float:left;
    5. padding:8px;
    6. margin:2px 18px 13px 21px;
    7. display:inline;
    8. border:1px solid #d3c998;
    9. border-radius:2px;
    10. filter:progid:DXImageTransform.Microsoft.Shadow(color='#d3c998', Direction=135,Strength=5);/*for ie6,7,8*/
    11. background-color: #fff;
    12. -moz-box-shadow:2px 2px 5px#d3c998;/*firefox*/
    13. -webkit-box-shadow:2px 2px 5px#d3c998;/*webkit*/
    14. box-shadow:2px 2px 5px #d3c998;/*opera或ie9*/
    15. }

    方法二:有些js和.htc的hack文件可以实现IE中的阴影效果。

    ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border-radius和文字阴影属性text-shadow。

    它的使用方法是:下载它并放到你的服务器目录

    在你的里面写入下面的代码:

    这个脚本的缺点是IE只支持一部分的box-shadow值。需要注意:

  3. 当你使用了这个htc文件后,你的CSS里面,只要写有box-shadow, -moz-box-shadow或-webkit-box-shadow的任何一种,IE就会渲染。
  4. 当使用了这个htc文件后,你不能这样写box-shadow: 0 0 10px red; 而应该是box-shadow: 0px 0px 10px red; 否则IE中会失效。
  5. 不支持RGBA值中的alpha透明度。
  6. 不支持inset内阴影。
  7. 不支持阴影扩展。
  8. 阴影在IE中只会显示为黑色,不管你设置成其它什么颜色。
  9. 方法三:使用jQuery的插件jquery.boxshadow.js,插件的下载地址是http://www.hintzmann.dk/testcenter/js/jquery/boxshadow/jquery.boxshadow.js

    使用方法很简单,将该文件和jquery版本库引入head标签,插入以下js效果代码:

    [javascript] view plain copy

    1. $(document).ready(function(){
    2. if($.browser.msie) {
    3. $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow
    4. }
    5. });

    注意:js中可以使用:obj.style.webkitBoxShadow=值(字符串);obj.style.MozBoxShadow=值(字符串);obj.style.boxShadow=值(字符串);

    补充知识:CSS3的属性

    border-top-left-radius:[ | ] [ | ]?

    默认值:0

    取值:

    用长度值设置对象的左上角(top-left)圆角半径长度。不允许负值

    用百分比设置对象的左上角(top-left)圆角半径长度。不允许负值

    说明:

    设置或检索对象的左上角圆角边框。提供2个参数,2个参数以空格分隔,每个参数允许设置1个参数值,第1个参数表示水平半径,第2个参数表示垂直半径,如第2个参数省略,则默认等于第1个参数。 如设置border-top-left-radius:5px10px;表示top-left这个角的水平圆角半径为5px,垂直圆角半径为10px。对应的脚本特性为borderTopLeftRadius。

    CSS3阴影演示工具http://www.css88.com/tool/css3Preview/Box-Shadow.html

    下载本文
显示全文
专题