0

0

CSS3阴影 box-shadow的使用和技巧总结_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-24 11:40:08

|

1450人浏览过

|

来源于php中文网

原创

 

MyMap AI
MyMap AI

使用AI将想法转化为图表

下载

本文摘自: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.   
  3.          //Firefox4.0-  
  4.   
  5.          -moz-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;  
  6.   
  7.          //Safariand Google chrome10.0-  
  8.   
  9.          -webkit-box-shadow:投影方式 X轴偏移量 Y轴偏移量阴影模糊半径 阴影扩展半径 阴影颜色;  
  10.   
  11.          //Firefox4.0+、 Google chrome 10.0+ 、 Oprea10.5+ and IE9  
  12.   
  13.          box-shadow:  投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色;  
  14.   
  15. }  

 

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

 

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

 相关代码:

 

[html]  view plain copy

 

  1. html>  
  2.   
  3.   
  4.   
  5.   
  6. CSS3属性:box-shadow测试  
  7. <script></script>  
  8. <script></script>  
  9. .box-shadow-1{  
  10.   -webkit-box-shadow: 3px 3px 3px;  
  11.   -moz-box-shadow: 3px 3px 3px;  
  12.   box-shadow: 3px 3px 3px;  
  13. }  
  14. .box-shadow-2{  
  15.   -webkit-box-shadow:0 0 10px #0CC;  
  16.   -moz-box-shadow:0 0 10px #0CC;  
  17.   box-shadow:0 0 10px #0CC;  
  18. }  
  19. .box-shadow-3{  
  20.   -webkit-box-shadow:0 0 10px rgba(0, 204, 204, .5);  
  21.   -moz-box-shadow:0 0 10px rgba(0, 204, 204, .5);  
  22.   box-shadow:0 0 10px rgba(0, 204, 204, .5);  
  23. }  
  24. .box-shadow-4{  
  25.   -webkit-box-shadow:0 0 10px 15px #0CC;  
  26.   -moz-box-shadow:0 0 10px 15px #0CC;  
  27.   box-shadow:0 0 10px 15px #0CC;  
  28. }  
  29. .box-shadow-5{  
  30.   -webkit-box-shadow:inset 0 0 10px #0CC;  
  31.   -moz-box-shadow:inset 0 0 10px #0CC;  
  32.   box-shadow:inset 0 0 10px #0CC;  
  33. }  
  34. .box-shadow-6{  
  35.     box-shadow:-10px 0 10px red, /*左边阴影*/  
  36.     10px 0 10px yellow, /*右边阴影*/  
  37.     0 -10px 10px blue, /*顶部阴影*/  
  38.     0 10px 10px green; /*底边阴影*/  
  39. }  
  40. .box-shadow-7{  
  41.     box-shadow:0 0 10px 5px black,  
  42.     0 0 10px 20px red;  
  43. }  
  44. .box-shadow-8{  
  45.     box-shadow:0 0 10px 20px red,  
  46.     0 0 10px 5px black;  
  47. }  
  48. .box-shadow-9{  
  49.     box-shadow: 0 0 0 1px red;  
  50. }  
  51.   
  52.   
  53.   
  54. .obj{  
  55.     width:100px;  
  56.     height:100px;  
  57.     margin:50px auto;  
  58.     background:#eee;      
  59. }  
  60. .outer{  
  61.     width: 100px;  
  62.     height: 100px;  
  63.     border: 1px solid red;  
  64. }  
  65. .inner{  
  66.     width: 60px;  
  67.     height: 60px;  
  68.     background-color: red;  
  69.     -webkit-box-shadow: 50px 50px blue;  
  70.     -moz-box-shadow: 50px 50px blue;  
  71.     box-shadow: 50px 50px blue;  
  72.   }  
  73.   
  74.   
  75.   
  76.   
  77.     
      
  78.     
      
  79.         
      
  80.     
  
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     
      
  •     <script>  </script>
  •         $(document).ready(function(){  
  •         if($.browser.msie) {  
  •           $('.obj').boxShadow(-10,-10,5,"#0cc"); //obj元素使用了box-shadow  
  •         }  
  •       });  
  •       
  •   
  •   
  •   


  •  

     

     

    结论:

    1)  从.box-shadow-1的效果可以得出不指定属性阴影颜色的情况下,阴影在webkit内核下的safari和chrome浏览器下表现为透明色,在Firefox/Opera下表现为黑色。

     

            

    2)  从内外两个div块inner、outer的对比来看,所有支持box-shadow的主流浏览器都表现为:内层阴影撑破外层容器将整个阴影效果呈现出来。W3C标准用图示的方式对box-shadow的原理和表现进行了解读:

     

    从图中我们可以了解到:圆角border-radius,阴影扩展半径、阴影模糊半径以及padding是如何影响对象阴影的:非零值的border-radius将会以相同的作用影响阴影的外形,但border-image不会影响对象阴影的任何外形;对象阴影同box模型的层次一样,外阴影会在对象背景之下,内阴影会在边框之下背景之上。我们知道,默认情形背景图片是在背景颜色之上的。所以整个层级是:边框>内阴影>背景图片>背景颜色>外阴影。

     

    3)  从. box-shadow-2到. box-shadow-5的效果,我们可以了解到box-shadow取值的作用。

    . box-shadow-2是xy没有偏移,阴影大小10px,没有扩展半径,颜色#0CC即rgba(0, 204,204, 1),这里我们使用的是颜色HEX值;效果

     

    而. box-shadow-3是在. box-shadow-2效果的基础上,应用了rgba颜色值,好处是给box-shadow阴影添加了alpha透明效果。效果:

     

    . box-shadow-4在. box-shadow-2效果的基础上添加了阴影扩展半径15px。

     

    . box-shadow-5在. box-shadow-2效果的基础上,将外阴影设为内阴影。

     

    4). box-shadow-6一个元素使用了多个阴影,多个阴影之间用逗号分隔。给对象四边设置阴影效果,我们是通过改变x-offset和y-offset的正负值来实现,其中x-offset为负值时,生成左边阴影,为正值时生成右边阴影,y-offset为正值是生成底部阴影,为负值时生成顶部阴影。并且把模糊半径设置为0,如果不设置为0的话那么其他三边也将会有阴影。这点需要注意!

     

     

    注意这样的写法是错误的:{box-shadow:-10px 0 10px red, box-shadow:10px 0 10px blue,box-shadow:0 -10px 10px yellow,box-shadow:0 10px 10px green}

     

    并且此处还涉及到一个多阴影的顺序问题。当给同一个元素使用多个阴影属性时,需要注意它的顺序,最先写的阴影将显示在最顶层,如. 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.   
    16. }  



    方法二:有些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 plain copy

     

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



    注意: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

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
    pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

    本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

    463

    2026.02.13

    微博网页版主页入口与登录指南_官方网页端快速访问方法
    微博网页版主页入口与登录指南_官方网页端快速访问方法

    本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

    135

    2026.02.13

    Flutter跨平台开发与状态管理实战
    Flutter跨平台开发与状态管理实战

    本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

    64

    2026.02.13

    TypeScript工程化开发与Vite构建优化实践
    TypeScript工程化开发与Vite构建优化实践

    本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

    20

    2026.02.13

    Redis高可用架构与分布式缓存实战
    Redis高可用架构与分布式缓存实战

    本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

    26

    2026.02.13

    c语言 数据类型
    c语言 数据类型

    本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

    29

    2026.02.12

    雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
    雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

    本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

    14

    2026.02.12

    豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
    豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

    本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

    524

    2026.02.12

    PostgreSQL性能优化与索引调优实战
    PostgreSQL性能优化与索引调优实战

    本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

    53

    2026.02.12

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号