CSS保健室|box-shadow


Posted by itiswonderfall on 2021-11-18

box-shadow

「如果你從未體驗任何事情的黑暗面,那麼你的所在之地,鐵定沒有任何光芒。」—— Lady Gaga

原本想傳遞一點正能量,但後來覺得太像傳教了哈哈哈,在網頁設計上,適時加上陰影的確跟有裂縫的人生一樣,可以透進一些光芒進來,老闆,幫我點播黃乙玲的人生的歌,好搭配接下來的課程。

cover

圖片來源

box-shadow 屬性向框添加一個或多個陰影。

box-shadow: h-shadow  v-shadow  blur  spread  color inset;

Firefox 支持替代的 -moz-box-shadow 規則, Safari 和 Chrome 支持替代的 -webkit-box-shadow 規則。

div{
    -moz-box-shadow: 2px 2px 5px #000;
    -webkit-box-shadow: 2px 2px 5px #000;
    box-shadow: 2px 2px 5px #000;
}

box-shadow

 

屬性 說明
h-shadow 必須,水平陰影的位置。允許負值。
v-shadow 必須,垂直陰影的位置。允許負值。
blur 選填,模糊距離。
spread 選填,陰影的尺寸。
color 選填,陰影的顏色。
inset 選填,將外部陰影( outset )改為內部陰影。

 

內陰影

內陰影

box-shadow: 2px 2px 5px #000 inset;

 

陰影擴展

陰影擴展

box-shadow: 0px 0px 5px 10px #000; /* 第四值是陰影擴展長度值 */

 

多重陰影

多重陰影

box-shadow: 
    0px 0px 0px 3px #bb0a0a,
    0px 0px 0px 6px #2e56bf,
    0px 0px 0px 9px #ea982e; /* 用逗點分開即可實現多重陰影 */

 

單側投影

如果陰影的模糊半徑,與負的擴張半徑一致( 如下述原始碼的 5px 和 -5px ),那麼我們將看不到任何陰影,因為生成的陰影將被包含在原來的元素之下,除非給它設定一個方向的偏移量,所以這個時候,我們定一個方向的偏移值,即可實現單側投影。

單側投影

box-shadow: -7px 0 5px -5px #333;

 


 

使用偽元素 ::before 和 ::after ,能創造出非常逼真的只有圖片才能實現的陰影效果。

使用偽元素

HTML

<div class="box11 shadow"></div>

CSS

.box11 {
    width: 300px;
    height: 100px;
    background: #ccc;
    border-radius: 10px;
    margin: 10px;
}
.shadow {
    position: relative;
    max-width: 270px;
    box-shadow:
        0px 1px 4px rgba(0,0,0,0.3),
        0px 0px 20px rgba(0,0,0,0.1) inset;
}
.shadow::before ,
.shadow::after {
    content: "";
    position: absolute;
    z-index: -1;
    bottom: 15px;
    left: 10px;
    width: 50%;
    height: 20%;
    box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7);
    transform: rotate(-3deg);
}
.shadow::after{
    right: 10px;
    left: auto;
    transform: rotate(3deg);
}

 


 

不同顏色的陰影,指定交錯的位移,也能呈現特別的視覺。陰影跨越到下方的元素也不會移動排版。

div {
    background-color: #eee;
    box-shadow:
        8px 24px 2px rgba(100%,0%,0%,0.4),
        16px -4px 2px rgba(0%,100%,0%,0.4),
        24px 12px 2px rgba(0%,0%,100%,0.4);
}

 


 

照片浮動效果

照片浮動效果

HTML

<div class="floating"></div>

CSS

.floating {
    width: 300px;
    height: 250px;
    background-color: #f9c919;
    position: relative;
    transform: translateY(0);
    transition: transform 1s;
}
.floating:after {
    content: "";
    display: block;
    position: absolute;
    bottom: -30px;
    left: 50%;
    height: 8px;
    width: 100%;
    box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.4);
    border-radius: 50%;
    background-color: rgba(0, 0, 0, 0.2);
    transform: translate(-50%, 0);
    transition: transform 1s;
}
.floating:hover {
    transform: translateY(-40px);
    transition: transform 1s;
}
.floating:hover:after {
    transform: translate(-50%, 40px) scale(0.75);
    transition: transform 1s;
}

 


 

撕便利貼的立體效果

撕便利貼的立體效果

div {
    position: relative;
    width: 600px;
    height: 100px;
    background: hsl(48, 100%, 50%);
    border-radius: 20px;
}
div::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 5%;
    right: 5%;
    bottom: 0;
    border-radius: 10px;
    background: hsl(48, 100%, 20%);
    transform: translate(0, -15%) rotate(-4deg);
    transform-origin: center center;
    box-shadow: 0 0 14px 15px hsl(48, 100%, 20%);
    display: block;
    z-index: -2;
}

 


 

參考資料

  1. CSS屬性總結(一):background, border, outline
  2. CSS 揭秘( Lea Verou 著/ CSS 魔法 譯 )
  3. CSS3 box-shadow 属性
  4. CSS阴影效果(Box-shadow)用法趣味讲解
  5. 超讚的 CSS 陰影技巧與細節
  6. box-shadow 两种高大上用法!
  7. CSS box-shadow 產生陰影效果或光暈效果的特性
  8. Lady Gaga 12 句人生語錄:我不覺得自己是美女,但憑什麼有人說我醜?

#css #css保健室 #outline #box-shadow







Related Posts

MTR04_1015

MTR04_1015

[Web] 轉換 [icon svg] 為 [background-image]

[Web] 轉換 [icon svg] 為 [background-image]

day1- webpack

day1- webpack


Comments