天天看點

CSS box-shadow

box-shadow是CSS3的特性,可以通過這個特性指定陰影的位移距離、顔色、模糊程度、擴散程度,同樣也支援内陰影,進而打造出陰影或者光暈的效果。

今天我在寫一個開關(switch)的純CSS實作時,發現很多地方都用到了box-shadow,然後就定下了今天的博文内容:P~

标準文法:

{box-shadow: inset x-offset y-offset blur-radius spread-radius color}

相對應的也就是:

{box-shadow: 投影方式 X軸偏移量 Y軸偏移量 陰影模糊半徑 陰影擴充半徑 陰影顔色}

box-shadow屬性可以向圖層添加一個或多個陰影,如果需要添加多個陰影,則需要使用逗号“,”分開。

說明

  • 一共有六個特性值。值與值之間需要以至少一個空格進行間隔。
  • inset:該值為可選值,如果不設值的話,預設的投影方式是外陰影,如果設定陰影類型為“inset”,則其投影方式為内陰影。
  • x-offset:指的是陰影水準偏移量,該值可以是負的也可以是正的,如果為正值,則陰影在元素的右邊;如果為負值,則陰影在元素的左邊。該值為必要值。
  • y-offset:指的是陰影垂直偏移量,該值可以是負的也可以是正的,如果為正值,則陰影在元素的下面;如果為負值,則陰影在元素的上面。該值為必要值。
  • blur-radius:該值為可選值,其值隻能為正值,設定值為0時,表示陰影不具有模糊效果,其值越大陰影的邊緣就越模糊。
  • spread-radius:該值為可選值,該值可以是負的也可以是正的,如果為正值,則整個陰影都延展;如果為負值,則縮小。
  • color:該值為可選值,如果不設定任何顔色,則浏覽器會取預設值。

運用box-shadow,讓我們可以脫離PS繁瑣的一張一張地來制作圖檔,且這樣産生的陰影不會對排版産生影響。

CSS box-shadow
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水準垂直居中</title>
    <style>
        .wrap {
            width: px;
            height: px;
            border: px solid #000;
        }
        .inner {
            width: px;
            height: px;
            margin: px auto;
            background: #006400;
            box-shadow: px px #000;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="inner"></div>
    </div>
    box-shadow實踐
</body>
</html>
           

浏覽器相容性

浏覽器相容性想必大家都會很關心,畢竟不相容的,你寫再多也隻不過是多餘的代碼而已。

CSS box-shadow

為了能相容支援的各大浏覽器的書寫方式:

//Firefox4.0-
-moz-box-shadow: 投影方式 X軸偏移量 Y軸偏移量 陰影模糊半徑 陰影擴充半徑 陰影顔色;
//Safari and Google chrome10.0-
-webkit-box-shadow: 投影方式 X軸偏移量 Y軸偏移量 陰影模糊半徑 陰影擴充半徑 陰影顔色;
//Firefox4.0+ 、 Google chrome 10.0+ 、 Oprea10.5+ and IE9
box-shadow:  投影方式 X軸偏移量 Y軸偏移量 陰影模糊半徑 陰影擴充半徑 陰影顔色;
           

陰影模糊

blur-radius值越大,陰影越模糊。

CSS box-shadow
div {   
    box-shadow:   px #ccc;
}
           

多層次陰影

寫法:

.inner {
    box-shadow: inset  px px #ADFF2F,  px  #98FB98,  px  #228B22;
}
           

模拟多邊框

實作效果如下:

CSS box-shadow
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水準垂直居中</title>
    <style>
        div {
            width: px;
            height: px;
            background: #000;
            box-shadow:    px #fff,    px green,    px blue;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>
           

當給同一個元素使用多個陰影屬性時,需要注意他的順序,最先寫的陰影将顯示在最頂層。

單邊效果

使用多層次的box-shadow,以及x-offset和y-offset的正負值來實作單邊效果。

實作效果如下:

CSS box-shadow
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水準垂直居中</title>
    <style>
        div {
            width: px;
            height: px;
            background: #000;
            box-shadow:  px  gray,  -px  red, px   green, -px   blue;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>
           

打造立體感

CSS box-shadow
div {
    color: #fff;
    background-color: #BA55D3;
    font-family: "Arial";
    font-weight: ;
    font-size: em;
    display: block;
    padding: px;
    border-radius: px;
    box-shadow: px px px #9932CC, px px px rgba(, , , .);
    margin: px auto;
    width: px;
    text-align: center;
}
           

内陰影效果

實作效果如下:

CSS box-shadow
div {
    box-shadow: inset   px #000;
}
           

内陰影增加spread值,加強凹陷的真實感。

CSS box-shadow
div {
    box-shadow: inset   px px #000;
}
           

可能寫到的情況還不是非常全面,還是希望這篇文章對大家有所幫助:)。歡迎多多交流~文中若有不正之處,歡迎指正。