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 plaincopy
- .box-shadow{
- //Firefox4.0-
- -moz-box-shadow:投影方式X轴偏移量Y轴偏移量阴影模糊半径阴影扩展半径阴影颜色;
- //SafariandGooglechrome10.0-
- -webkit-box-shadow:投影方式X轴偏移量Y轴偏移量阴影模糊半径阴影扩展半径阴影颜色;
- //Firefox4.0+、Googlechrome10.0+、Oprea10.5+andIE9
- box-shadow:投影方式X轴偏移量Y轴偏移量阴影模糊半径阴影扩展半径阴影颜色;
- }
注意:出于方便,后文的css属性有的地方只写了box-shadow属性,没有写-moz-和-webkit-前缀的形式,在使用中不要忘记加上。
为了更清楚的了解box-shadow的特征,做几个小测试,看效果:
相关代码:
- <scripttype="text/javascript"src="js/jquery.min.js"></script>
- <scripttype="text/javascript"src="js/jquery.boxshadow.js"></script>
- .box-shadow-1{
- -webkit-box-shadow:3px3px3px;
- -moz-box-shadow:3px3px3px;
- box-shadow:3px3px3px;
- }
- .box-shadow-2{
- -webkit-box-shadow:0010px#0CC;
- -moz-box-shadow:0010px#0CC;
- box-shadow:0010px#0CC;
- }
- .box-shadow-3{
- -webkit-box-shadow:0010pxrgba(0,204,204,.5);
- -moz-box-shadow:0010pxrgba(0,204,204,.5);
- box-shadow:0010pxrgba(0,204,204,.5);
- }
- .box-shadow-4{
- -webkit-box-shadow:0010px15px#0CC;
- -moz-box-shadow:0010px15px#0CC;
- box-shadow:0010px15px#0CC;
- }
- .box-shadow-5{
- -webkit-box-shadow:inset0010px#0CC;
- -moz-box-shadow:inset0010px#0CC;
- box-shadow:inset0010px#0CC;
- }
- .box-shadow-6{
- box-shadow:-10px010pxred,/*左边阴影*/
- 10px010pxyellow,/*右边阴影*/
- 0-10px10pxblue,/*顶部阴影*/
- 010px10pxgreen;/*底边阴影*/
- }
- .box-shadow-7{
- box-shadow:0010px5pxblack,
- 0010px20pxred;
- }
- .box-shadow-8{
- box-shadow:0010px20pxred,
- 0010px5pxblack;
- }
- .box-shadow-9{
- box-shadow:0001pxred;
- }
- .obj{
- width:100px;
- height:100px;
- margin:50pxauto;
- background:#eee;
- }
- .outer{
- width:100px;
- height:100px;
- border:1pxsolidred;
- }
- .inner{
- width:60px;
- height:60px;
- background-color:red;
- -webkit-box-shadow:50px50pxblue;
- -moz-box-shadow:50px50pxblue;
- box-shadow:50px50pxblue;
- }
- <scripttype="text/javascript">
- $(document).ready(function(){
- if($.browser.msie){
- $('.obj').boxShadow(-10,-10,5,"#0cc");//obj元素使用了box-shadow
- }
- });
- </script>
[css]view plaincopy
- .box-shadow{
- filter:progid:DXImageTransform.Microsoft.Shadow(color='#969696',Direction=135,Strength=5);/*forie6,7,8*/
- background-color:#ccc;
- -moz-box-shadow:2px2px5px#969696;/*firefox*/
- -webkit-box-shadow:2px2px5px#969696;/*webkit*/
- box-shadow:2px2px5px#969696;/*opera或ie9*/
}
[css]view plaincopy
- li.blk-item{
- width:423px;
- height:229px;
- float:left;
- padding:8px;
- margin:2px18px13px21px;
- display:inline;
- border:1pxsolid#d3c998;
- border-radius:2px;
- filter:progid:DXImageTransform.Microsoft.Shadow(color='#d3c998',Direction=135,Strength=5);/*forie6,7,8*/
- background-color:#fff;
- -moz-box-shadow:2px2px5px#d3c998;/*firefox*/
- -webkit-box-shadow:2px2px5px#d3c998;/*webkit*/
- box-shadow:2px2px5px#d3c998;/*opera或ie9*/
方法二:有些js和.htc的hack文件可以实现IE中的阴影效果。
ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border-radius和文字阴影属性text-shadow。
它的使用方法是:下载它并放到你的服务器目录
在你的
里面写入下面的代码:这个脚本的缺点是IE只支持一部分的box-shadow值。需要注意:
当你使用了这个htc文件后,你的CSS里面,只要写有box-shadow, -moz-box-shadow或-webkit-box-shadow的任何一种,IE就会渲染。当使用了这个htc文件后,你不能这样写box-shadow: 0 0 10px red; 而应该是box-shadow: 0px 0px 10px red; 否则IE中会失效。不支持RGBA值中的alpha透明度。不支持inset内阴影。不支持阴影扩展。阴影在IE中只会显示为黑色,不管你设置成其它什么颜色。方法三:使用jQuery的插件jquery.boxshadow.js,插件的下载地址是http://www.hintzmann.dk/testcenter/js/jquery/boxshadow/jquery.boxshadow.js
使用方法很简单,将该文件和jquery版本库引入head标签,插入以下js效果代码:
[javascript]view plaincopy
<scripttype="text/javascript">