CSS視覺效果


title: CSS視覺效果
date: 2016-12-17
tags: CSS Secrets


0x00 投影的繪畫機制

當為一個元素添加 box-shadow 時,我們便會從視覺上得到一個投影的效果。

比如:

#box{
    width: 100px;
    height: 100px;
    background: deeppink;
    box-shadow: 5px 6px 4px rgba(0,0,0,0.5);
}
box-shadow

我們對 div#box 添加了 box-shadow 屬性,并指定了三個長度值和一個顏色值。對于這樣的用法,我們再熟悉不過了。要得到上圖的效果,瀏覽器渲染引擎其實進行了四步:

  1. 以該元素相同的位置和尺寸,畫一個 rgba(0,0,0,0.5) 的矩形。
  2. 把它向右偏移 5px,向下偏移 6px
  3. 使用高斯模糊算法對其進行 4px 的模糊處理。
  4. 模糊后的矩形與原始元素的交集部分會被裁切掉。
box-shaow的繪制原理

所以,從投影繪制的機制來看,繪制的投影其實是在元素的上層的。


單側投影

box-shadow 鮮為人知的第四個參數(shù),稱為 擴張半徑。這個參數(shù)會根據(jù)指定的值去擴大(當指定負值時)或縮小投影的尺寸。比如,一個 -5px 的擴張半徑會把投影的寬度和高度各減少 10px (即每邊各 5px)。

那么,當應用一個負的擴張半徑,而它的值剛好等于模糊半徑,那么投影的尺寸就會與投影所屬元素的尺寸一致,如果不使用偏移參數(shù)來移動它,將看不見任何投影。

這正是我們想要的。

box-shadow: 0px 5px 4px -4px black;

我們給了投影一個正的垂直偏移量,而在另外三側是沒有投影的。

單側投影

雙側投影

目前為止,還無法指定投影在水平方向上放大,而在垂直方向上縮小,要實現(xiàn)雙側投影的效果唯一的辦法就是使用兩塊投影來達到目的。

box-shadow: 6px 0px 5px -4px yellow,
            -6px 0px 5px -4px green;
雙側投影

未完待續(xù)。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,134評論 0 2
  • text-shadow是給文本添加陰影效果,box-shadow是給元素塊添加周邊陰影效果。隨著HTML5和CSS...
    arlene112閱讀 2,339評論 0 1
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,458評論 0 11
  • 1、屬性選擇器:id選擇器 # 通過id 來選擇類名選擇器 . 通過類名來選擇屬性選擇器 ...
    Yuann閱讀 1,764評論 0 7
  • 精簡CSS 代碼如何精簡?從簡單例子彈起,最簡單的一個btn.btn{ padding:4px 10px; ...
    debt閱讀 390評論 0 0

友情鏈接更多精彩內容