语法:

<strong>box-shadow:</strong><em><length></em><em><length></em><em><length></em><em><length></em> || <em><color></em>

取值:

<em><length></em><em><length></em><em><length>?</em><em><length></em>? || <em><color></em>: 阴影水平偏移值(可取正负值);阴影垂直偏移值(可取正负值);阴影模糊值;阴影颜色

现在我将它正确地想表达的意思再表达一下:

<strong>box-shadow:</strong> x 轴偏移 y 轴偏移 [模糊半径] [阴影颜色] [inset]

· 其中 x 轴偏移和 y 轴偏移是必须的两个值(接受正值或负值)

· 模糊半径为可选(如果没有这个值,默认为0,不支持负值)

· 阴影颜色为可选(如果没有这个值,基于 Gecko 的浏览器会使用color属性的值,而基于 webkit 的浏览器会默认为transparent

· inset选项为可选(如果没有这个值,阴影就为外阴影,显示在 box 外部,空间上在 box 后面;如果带有这个值,阴影即为内阴影,空间上显示在 box 前面)

· box-shadow目前要使用的话,基于 Gecko 的浏览器写成-moz-box-shadow,基于 webkit 的浏览器写成-webkit-box-shadow,opera 写成-o-box-shadow,什么都不写,IE9可以识别。

另外需要说明的一点是,box-shadow后面的参数添加阴影效果,你可以添加不只一组参数,每组参数之间使用逗号(,)来分隔,在同一个元素上使用多个阴影,比如像这样:

box-shadow: 0 1px 2px rbga(0,0,0,0.4), 0 1px 0 rgba(255,255,255,0.5) inset, ……

我在上一篇文章里面使用了这种方法,大家可以看一下。需要说明的是,新添加的阴影,在空间中的位置会自动向后移一层,具体是什么效果我在下面写一下代码(仅支持box-shadow的浏览器可见):

box-shadow

代码是box-shadow:5px 5px 0 red, 10px 10px 0 blue,可以看到,虽然蓝色的阴影是后来添加的,但空间上它却位于红色的阴影之下。再需要强调的一点是,box-shadow指定的阴影的形状会随着border-radius指定的圆角而变化。也就是说,如果你没有为 box 指定圆角,那么阴影也是方形的;如果你为 box 指定了圆角,那么阴影也是圆角的阴影。一个极端的例子如下:

box-shadow

至于 IE6/7/8 可以使用filter来实现,sofish 的这篇文章里写得很清楚了,可是我不怎么赞同这种写法。我认为box-shadow就是一种锦上添花的效果,如果浏览器方便支持,就加上,如果浏览器不支持,那也真没必要这么做。不知道这算不算是一种 Progressive Enhancement……

box-shadow用法简介的更多相关文章

  1. IOS NSInvocation用法简介

    IOS NSInvocation用法简介 2012-10-25 19:59 来源:博客园 作者:csj007523 字号:T|T [摘要]在 iOS中可以直接调用某个对象的消息方式有两种,其中一种就是 ...

  2. JodaTime用法简介

    JodaTime用法简介 Java的Date和Calendar用起来简直就是灾难,跟C#的DateTime差距太明显了,幸好有JodaTime 本文简单罗列JodaTime的用法 package co ...

  3. Apache自带压力测试工具ab用法简介

    ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...

  4. Postman用法简介

    转自:http://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介 转载 2016年10月10日 09:04:10 10 ...

  5. MSSQL Sql加密函数 hashbytes 用法简介

    转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashbytes函数功能为:返回一个字符,通过 MD2.MD4.MD5. ...

  6. java assert的用法简介【转】

    assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库 ...

  7. glVertexAttribPointer 用法简介

    在内存中采用交叉模式存储,向gpu传入顶点数据的方法  GPU: #version 100 attribute highp vec2 aPosition; attribute highp vec2 a ...

  8. C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介

    C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介 IP是一种普遍应用于因特网.允许不同主机能够相互找到对方的寻址协议.IP地址由4个十进制的数字号码所组成, ...

  9. Postman用法简介----https://blog.csdn.net/flowerspring/article/details/52774399

    https://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介

  10. SpringBoot系列之@Conditional注解用法简介

    SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...

随机推荐

  1. Qt5.6关联VS2013,配置VAssistX

    1. 安装Qt qt-creator-opensource-windows-x86-4.2.0.exe 2. 安装Qt VS插件 qt-vs-addin-1.2.5.exe 3. 配置ASSISTX ...

  2. RxJS & Angular

    RxJS & Angular https://www.learnrxjs.io/ https://rxjs-cn.github.io/learn-rxjs-operators/ https:/ ...

  3. 制作用于日期时间型字段的DELPHI数据感知控件

    用DELPHI开发C/S应用方便而快速,因为它拥有大量易于使用的数据访问和数据感知控件.然而万事总是难以完美,DELPHI的DBEdit控件用于输入日期时间型字段却很不方便,为了改善这一缺点,笔者开发 ...

  4. 利用 spring 的 task:scheduled-tasks 执行定期任务

    ref是工作类 method是工作类中要执行的方法 initial-delay是任务第一次被调用前的延时,单位毫秒 fixed-delay是上一个调用完成后再次调用的延时 fixed-rate是上一个 ...

  5. Hibernate常用方法之_查询

    1.使用session的get方法 public User getUser(int id){ Session session = null; User user = null; try { sessi ...

  6. TCP/IP Note1

    TCP/IP(Transmission Control Protocol / Internet Protocol)是用于Internet的通信协议. 计算机通信协议:是指对那些计算机必须遵守以便彼此通 ...

  7. 【NOIP模拟赛】天神下凡 动态开点线段树

    这些圆一定是在同一水平面上的,由于他们没有相交,因此我们发现他们每个人与外界关系可以分为,1.存在并圈圈 2.存在圈圈并被割,因此我们把所有的圆都加1,把被割的在加1,就可以啦,因此我们开一个线段树, ...

  8. JS让任意图片垂直水平居中且页面不滚动

    说一下以前遇到的一个问题: 假设有一张小图,要实现点击查看大图的功能,而这个图的宽高可能会超过浏览器的宽高,这时候我们通过JS来改变图片的宽高,从而实现图片在浏览器居中显示且不滚屏. 方法如下: 首先 ...

  9. codeforces 1077D

    题目:https://codeforces.com/contest/1077/problem/D 题意:给你一个长度为n的串,你需要在里面找到出现次数最多的长度为k的子序列(子序列中元素可重复),求这 ...

  10. Java多线程-一个简单的线程,实现挂起和恢复的功能

    public class MySprite implements Runnable { /* * 线程用变量 */ private boolean running = false; private b ...