zoukankan      html  css  js  c++  java
  • CSS3 boxshadow阴影之美

    与圆角border-radius属性一样,盒阴影box-shadow也是一个令人激动的属性。

      W3C将box-shadow加入CSS3属性列表,并使其标准化,应该是件值得高兴的事。也许,从此你再也不会因为“实现代价”而与设计师争得脸红。

      那么,box-shadow究竟是如何被人们所称道的?

      如果你是前端工程师,你可能有过这些痛苦的经历:

    1. 面对到处都是圆角的设计稿;
    2. 面对到处都是圆角+阴影的设计稿;
    3. 面对到处都是圆角+阴影+半透明的设计稿。

      如果你还没有接触过CSS3,或者你所负责的这个项目,必须兼容IE系列。那么,无论是面对上面的哪一点,都可以耗费你不少的精力和时间。

      这里,我们搁下IE不谈,只谈谈box-shadow。

      box-shadow属性至多有6个参数可以设置:

    1. 阴影水平偏移量:如果该参数为正值,则阴影在box的右边;如果该参数为负,则阴影在box的左边
    2. 阴影垂直偏移量:如果该参数为正值,则阴影在box的底部;反之,则在box顶部
    3. 阴影模糊距离(大小):此参数可选,只能是正值。如果该参数值为0,则阴影的边缘犀利;该值越大,阴影的边缘越模糊
    4. 阴影扩展距离:此参数可选。如果该参数为正,则整个阴影都延展扩大;反之,则缩小。
    5. 阴影颜色:此参数可选。如果不写,则会选取默认颜色。至于默认颜色会是什么,不清楚(在webkit核心下为无色,即透明),建议不要省略该值。
    6. 阴影类型:此参数可选。有唯一值‘inset’,如果存在该值,那么阴影将为内阴影;如果不写该值,则为缺省的外阴影。

      box-shadow的特征:

    1. 通过对阴影偏移量的设置,可以使得阴影出现在“上、右、下、左”任一方向;
    2. 阴影大小、边缘模糊、颜色可自定义;
    3. 可设置内阴影及外阴影;
    4. 可设置“多组”阴影。

      box-shadow实例:

      来实现一个最基本的阴影的效果,如下图:

      simple image of box-shadow
      Figure 1: 基本阴影效果

      就是这样的一个具有最简单阴影的效果,如果不用box-shadow做,那么要实现的话,也必要再多堆叠一层无实质意义的标签。

    再来看看box-shadow的代码实现:

    box-shadow:5px 5px #888;background:#eee;

      该实例的DEMO展示:simple box-shadow。同时,可以通过对偏移量数值的更改以查看其它的效果,实现特征1所述效果。

    如果,你想要得到一个内阴影的效果,只需在上诉代码中加上一个'inset'即可:

    box-shadow:5px 5px #888 inset;background:#eee;

      经此一改,效果立即变成:

      simple image of box-shadow
      Figure 2: 内阴影效果

      至于阴影出现的方向,仍然可以通过对偏移量的更改来控制,看看DEMO:内阴影

      通过box-shadow,阴影的实现是如此的方便;而圆角也一如本文开头所说,用border-radius也可轻松搞定。如果你对CSS3中圆角的实现不大了解,请看: CSS3 border-radius圆角的优雅实现

      如此一来,开篇所述的3大痛苦经历,前2大已经变得那么微不足道了。如果把半透明阴影也搞定了,那3大痛苦经历似乎也不再那么纠结了。

      那么半透明阴影有解么?是的,有,而且异常简单。

      你或许已经听说过RGBA colors与HSLA colors,没听说过也无妨,CSS3为了让半透明的实现更简单,新增了RGBA和HSLA这样的颜色属性。相比于RGB,RGBA多了一个‘A’,而 这个A正是alpha(透明度)的缩写。这样的组合要告诉我们的是,CSS3允许你使用一个可以调节透明度的颜色。

      我们看看半透明阴影与普通阴影的对比DEMO:半透明阴影

      一个小应用:

      曾惊艳于Chrome与Safari的文本框聚焦效果,却也不甚欢喜其实现的繁杂。

      input of box-shadow
      Figure 3: Safari下常态文本框

      focus input of box-shadow
      Figure 4: Safari下获取焦点的文本框

      如今,对着如Figure 4的效果,你可以微笑着说:“这个,简单!”

      不信,我们可以一起去看看DEMO:文本框聚焦效果

  • 相关阅读:
    Redis
    Redis
    运维
    Redis
    Redis
    Redis
    Redis
    Redis
    Redis
    Spring
  • 原文地址:https://www.cnblogs.com/cici_liang/p/2201895.html
Copyright © 2011-2022 走看看