整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          從淺到深的學習 CSS3陰影(box-shadow)

          您2019豬事順利,心想事成。

          前言

          前面兩篇文章都有提到過box-shadow,里面也有很多的基礎知識,有看過的小伙伴應該都有或多或少的收獲吧,今天我們再從基礎入手,希望能讓大家更熟悉它。

          沒有看過之前文章的小伙伴請點擊:

          CSS3 box-shadow實現背景動畫

          CSS3動畫解析抖音 LOGO制作

          下面我們從最基礎的開始演示。

          單側投影

          關鍵點: 1、外 box-shadow 前四個參數:x 偏移值、y 偏移值 、模糊半徑、擴張半徑。 2、單側投影的核心是第四個參數:擴張半徑。這個參數會根據你指定的值去擴大或縮小投影尺寸,如果我們用一個負的擴張半徑,而他的值剛好等于模糊半徑,那么投影的尺寸就會與投影所屬的元素尺寸完全一致,除非使用偏移量來移動他,否則我們將看不到任何投影。

          <style>
          .left {
           box-shadow: -8px 0 5px -5px #333;
          }
          
          .right {
           box-shadow: 8px 0 5px -5px #333;
          }
          
          .top {
           box-shadow: 0 -8px 5px -5px #333;
          }
          
          .bottom {
           box-shadow: 0 8px 5px -5px #333;
          }
          </style>
          <div class='left'>左</div>
          <div class='right'>右</div>
          <div class='top'>上</div>
          <div class='bottom'>下</div>
          

          立體文字陰影

          知識點

          1、立體文字陰影的關鍵點在于多層 text-shadow 的疊加

          2、合理運用了 SASS 函數來自動計算多層 text-shadow 的 CSS 代碼

          3、運用了 Sass 的顏色函數,漸進實現層級陰影顏色 - fade-out: 改變顏色的透明度,讓顏色更加透明 - desaturate: 改變顏色的飽和度值,讓顏色更少的飽和

          4、HSL(顏色值)

          • H:Hue(色調)。0(或360)表示紅色,120表示綠色,240表示藍色,也可取其他數值來指定顏色。取值為:0 - 360
          • S:Saturation(飽和度)。取值為:0.0% - 100.0%
          • L:Lightness(亮度)。取值為:0.0% - 100.0%
          <style>
          @function blessing($color) {
           $val: 0px 0px $color;
           @for $i from 1 through 50 {
           $color: fade-out(desaturate($color, 1%), .02);
           $val: #{$val}, -#{$i}px #{$i}px #{$color};
           }
           @return $val;
          }
          
          div {
           text-align: center;
           font-size: 20vmin;
           line-height: 45vh;
           text-shadow: blessing(hsl(0, 100%, 50%));
           color: hsl(14, 100%, 60%);
          }
          </style>
          <div>福</div>
          

          編譯后的css(推薦scss在線編譯為css工具) https://www.sassmeister.com/

          ...
          div {
           text-align: center;
           font-size: 20vmin;
           line-height: 45vh;
           text-shadow: 0px 0px #992400, 
           1px 1px rgba(152, 36, 1, 0.98), 
           2px 2px rgba(151, 37, 2, 0.96), 
           3px 3px rgba(151, 37, 2, 0.94), 
           ...
           ...
           ... 
           49px 49px rgba(116, 56, 37, 0.02), 
           50px 50px rgba(115, 56, 38, 0);
           color: #ff6333;
          }
          

          從淺到深的學習 CSS3陰影(box-shadow)

          從淺到深的學習 CSS3陰影(box-shadow)

          線性漸變模擬長陰影

          知識點

          1、借用了元素的兩個偽元素

          2、通過漸變色填充兩個偽元素,再通過位移、變換放置在合適的位置

          <style>
          div {
           position: relative;
           width: 30vmin;
           height: 30vmin;
           line-height: 30vh;
           text-align: center;
           font-size: 30px;
           background: #fff;
           margin: 30vmin auto;
          }
          
          div::before,
          div::after {
           content: "";
           position: absolute;
           top: 0;
           left: 0;
           right: 0;
           bottom: 0;
           z-index: -1;
          }
          
          div::before {
           content: ':before';
           font-size: 30px;
           text-align: center;
           line-height: 30vh;
           transform-origin: 0 50%;
           transform: translate(100%, 0) skewY(45deg) scaleX(.6);
           background: linear-gradient(90deg, rgba(0, 0, 0, .3), transparent);
          }
          
          div::after {
           content: ':after';
           font-size: 30px;
           text-align: center;
           line-height: 30vh;
           transform-origin: 0 0;
           transform: translate(0%, 100%) skewX(45deg) scaleY(.6);
           background: linear-gradient(180deg, rgba(0, 0, 0, .3), transparent);
          }
          </style>
          <div>Web秀</div>
          

          從淺到深的學習 CSS3陰影(box-shadow)

          漸變實現內切角

          知識點

          1、陰影實現的關鍵點在于使用偽元素絕對定位在容器的一角,元素本身透明,陰影擴散開形成內切圓角效果

          2、陰影實現缺點,單個標簽最多只能是2個內切圓角

          3、徑向漸變實現內切圓角可以是4邊

          <style>
          div {
           position: relative;
           width: 20vw;
           height: 8vw;
           margin: 1vw auto;
           border-radius: 1vmin;
           overflow: hidden;
           line-height: 8vw;
           color: #fff;
           text-align: center;
          }
          
          .shadow::before {
           position: absolute;
           content: "";
           top: -2vw;
           left: -2vw;
           width: 4vw;
           height: 4vw;
           border-radius: 50%;
           box-shadow: 0 0 0 15vw #e91e63; 
           z-index: -1;
          }
          
          .shadow::after {
           position: absolute;
           content: "";
           bottom: -2vw;
           right: -2vw;
           width: 4vw;
           height: 4vw;
           border-radius: 50%;
           box-shadow: 0 0 0 15vw #e91e63; 
           z-index: -1;
          }
          
          .linear {
           background-size: 70% 70%;
           background-image: 
           radial-gradient(
           circle at 100% 100%, 
           transparent 1vw, 
           transparent 2vw, 
           #03A9F5 2vw),
           radial-gradient(
           circle at 0 0, 
           transparent 0, 
           transparent 2vw, 
           #03A9F5 2vw),
           radial-gradient(
           circle at 100% 0, 
           transparent 0, 
           transparent 2vw, 
           #03A9F5 2vw),
           radial-gradient(
           circle at 0 100%, 
           transparent 0, 
           transparent 2vw, 
           #03A9F5 2vw);
           background-repeat: no-repeat;
           background-position: 
           right bottom, 
           left top, 
           right top, 
           left bottom;
          }
          </style>
          <div class="shadow">陰影實現缺點最多是2邊</div>
          <div class="linear">徑向漸變內切圓角4邊</div>
          

          從淺到深的學習 CSS3陰影(box-shadow)

          圓環進度條動畫

          知識點 :圓環進度條的移動本質上是陰影順序延時移動的結果。

          <style>
          body {
           background: #000;
          }
          
          .container {
           position: relative;
           overflow: hidden;
           width: 124px;
           height: 124px;
           overflow: hidden;
           margin: 100px auto;
           border-radius: 50%;
          }
          
          .shadow {
           position: absolute;
           top: 50%;
           left: 50%;
           transform: translate(-50%, -50%);
           width: 120px;
           height: 120px;
           line-height: 120px;
           border-radius: 50%;
           color: #fff;
           font-size: 20px;
           cursor: pointer;
           box-shadow: 
           60px -60px 0 2px #e91e63, 
           -60px -60px 0 2px #e91e63, 
           -60px 60px 0 2px #e91e63, 
           60px 60px 0 2px #e91e63;
           text-align: center;
          }
          .shadow:hover {
           animation: border 0.5s ease forwards;
          }
          
          @keyframes border {
           0% {
           box-shadow: 
           60px -60px 0 2px #e91e63, 
           -60px -60px 0 2px #e91e63, 
           -60px 60px 0 2px #e91e63, 
           60px 60px 0 2px #e91e63, 
           0 0 0 2px transparent;
           }
           25% {
           box-shadow: 
           0 -125px 0 2px #e91e63, 
           -60px -60px 0 2px #e91e63, 
           -60px 60px 0 2px #e91e63, 
           60px 60px 0 2px #e91e63, 
           0 0 0 2px #fff;
           }
           50% {
           box-shadow: 
           0 -125px 0 2px #e91e63, 
           -125px 0px 0 2px #e91e63, 
           -60px 60px 0 2px #e91e63, 
           60px 60px 0 2px #e91e63, 
           0 0 0 2px #fff;
           }
           75% {
           box-shadow: 
           0 -125px 0 2px #e91e63, 
           -125px 0px 0 2px #e91e63, 
           0px 125px 0 2px #e91e63, 
           60px 60px 0 2px #e91e63, 
           0 0 0 2px #fff;
           }
           100% {
           box-shadow: 
           0 -125px 0 2px #e91e63, 
           -125px 0px 0 2px #e91e63, 
           0px 125px 0 2px #e91e63, 
           120px 40px 0 2px #e91e63, 
           0 0 0 2px #fff;
           }
          }
          </style>
          <div class="container">
           <div class="shadow">web 秀</div></div>
          </div>
          

          從淺到深的學習 CSS3陰影(box-shadow)

          公告

          喜歡小編的點擊關注,了解更多知識!

          源碼地址和源文件下載請點擊下方“了解更多”

          秘CSS3:打造視覺盛宴——深度解析漸變、陰影與遮罩技術

          隨著Web技術的不斷演進,CSS3以其強大的視覺表現力,賦予網頁設計無限可能。本文將深入剖析CSS3中的三大視覺魔法工具——漸變、陰影與遮罩技術,通過詳盡的理論講解和豐富的實例演示,助您掌握這些技巧,打造出令人眼前一亮的網頁視覺盛宴。

          一、魅力漸變:色彩的藝術流動

          1. 線性漸變:平滑過渡,簡約而不簡單

          css
          background: linear-gradient(to right, #ff6b6b, #ff9595);
          

          上述代碼創建了一個從左至右,由#ff6b6b漸變到#ff9595的線性漸變背景。您可以調整方向(如`to bottom`、`45deg`等)、添加更多顏色停止點來豐富漸變效果。

          2. 徑向漸變:聚焦視覺中心,營造立體感

          css
          background: radial-gradient(circle at center, #f7f7f7, #dcdcdc);
          

          此例中,我們創建了一個以元素中心為圓心,從#f7f7f7漸變到#dcdcdc的圓形徑向漸變背景。通過調整形狀(如`ellipse`)、大小(如`closest-side`)和位置(如`top left`),可以靈活定制徑向漸變樣式。

          二、立體陰影:賦予元素生命與空間感

          1. 盒子陰影(Box Shadow):輕松實現三維效果

          css
          box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
          

          上述代碼為元素添加了一個向右下偏移2px、模糊半徑為8px、顏色為rgba(0, 0, 0, 0.3)的陰影。理解盒陰影的基本參數(水平偏移、垂直偏移、模糊半徑、擴散半徑、顏色)并靈活運用,即可創造出豐富的陰影效果。

          2. 文本陰影(Text Shadow):讓文字躍然紙上

          css
          text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.?), -1px -1px 2px rgba(255, 255, 255, 0.5);
          

          此處為文本設置了兩個陰影:一個向右下偏移、顏色較深的陰影,以及一個向左上偏移、顏色較淺的陰影,形成微妙的浮雕效果。通過疊加多個陰影、調整參數,您可以創作出各種獨特的文本樣式。

          三、神奇遮罩:掌控元素可見度與透明度

          1. CSS Mask:精細裁剪,展現獨特視界

          css
          mask-image: linear-gradient(to right, transparent 0%, black 50%, transparent 100%);
          

          該代碼為元素應用了一個從左至右的線性漸變遮罩,使得元素左側和右側各有一半區域透明。您還可以使用`mask-mode`、`mask-repeat`、`mask-position`等屬性進一步調整遮罩行為。

          2. CSS Clip Path:創意裁剪,打破常規布局

          css
          clip-path: polygon(0 0, 100% 0, .png);
          

          上述代碼使用多邊形裁剪路徑,將元素頂部裁剪成尖角形狀。您還可以使用橢圓、圓形、內切/外切矩形等多種路徑類型,甚至借助SVG路徑實現更為復雜的裁剪效果。

          四、實戰案例:融合三大技術,打造視覺盛宴

          案例一:動態漸變按鈕

          css
          /* 定義CSS變量 */
          :root {
            --start-color: #ff6b6b;
            --end-color: #ff9595;
          }
          
          .button {
            background: linear-gradient(to right, var(--start-color), var(--end-color));
            transition: background 0.3s ease-in-out;
          }
          
          .button:hover,
          .button:focus {
            --start-color: #ff9595;
            --end-color: #ff6b6b;
          }
          

          利用CSS變量、偽類和動畫,創建一個點擊時背景漸變顏色動態變化的按鈕:

          案例二:懸浮卡片與陰影交互

          css
          .card {
            box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
          }
          
          .card:hover {
            box-shadow: 4px 4px 16px rgba(0, 0, 0, 0.5);
          }
          

          結合盒子陰影與:hover偽類,實現鼠標懸停時卡片陰影增強的交互效果:

          案例三:遮罩疊加文字特效

          css
          .image-overlay {
            background-image: url('image.jpg'), linear-gradient(to bottom, transparent, black);
            background-blend-mode: multiply;
            mask-image: linear-gradient(to bottom, transparent 0%, black 100%);
            -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 100%);
          }
          

          利用遮罩與多重背景,創造出文字在圖片上淡入淡出的特效:

          結語

          CSS3的漸變、陰影與遮罩技術,如同網頁設計的調色板、光影魔術師和剪刀手,賦予網頁視覺表現無盡的可能性。通過深入理解并熟練運用這些技術,您將能打造出既美觀又富有創意的網頁界面,為用戶帶來極致的視覺體驗。持續探索、實踐與創新,您的每一個作品都將成為Web世界中的一道獨特風景。

          通常,我們為div盒子或者圖片設置陰影使用 box-shadow 屬性,代碼如下:

          box-shadow: 10px 10px 10px gray;

          問題拋出

          使用 box-shadow 屬性 給div盒子設置陰影倒還好,如果用在透明的圖片上,陰影會變成方形的,讓其看起來像添加了一個邊框一樣。

          解決方法

          我們可以通過css的另一種參數,為透明png實現基于透明圖片的陰影效果,效果如下圖,左側是 box-shadow ,右側 drop-shadow 。

          drop-shadow()說明:

          drop-shadow() 是CSS中用于為圖像或文本添加陰影效果的一個函數,?它屬于 filter 屬性的一部分。?這個函數允許你為元素創建陰影,?而不需要考慮元素的形狀或邊界框。?與 box-shadow 不同,?drop-shadow 可以應用于非矩形形狀,?如透明的PNG或SVG圖像,?它使用元素的Alpha蒙版來決定陰影的形狀。?這意味著,?即使元素沒有背景,drop-shadow 也能為圖像的非透明部分創建陰影。?

          drop-shadow()語法如下:

          filter: drop-shadow( offset-x offset-y blur-radius spread-radius color )

          drop-shadow()參數說明如下:

          • offset-x:該參數設置圖像的水平偏移量。正值創建右側偏移,負值創建左側偏移。
          • offset-y:此參數設置圖像的垂直偏移量。正值創建到底部的偏移量,負值創建到頂部的偏移量。
          • blur-radius:設置模糊半徑的值。它是一個可選參數。
          • spread-radius:設置傳播半徑的值。它是一個可選參數。
          • color:設置投影的顏色。它的可選參數。

          演示代碼如下:

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
            <style>
              .img_box .left_img{
                box-shadow: 10px 10px 10px gray;
              }
              .img_box .right_img{
                filter: drop-shadow(2px 4px 8px rgb(225, 170, 170));
              }
            </style>
          </head>
          <body>
          
            <div class="img_box">
              <img class="left_img" src="./lihua.png" />
              <img class="right_img" src="./lihua.png" />
            </div>
            
          </body>
          </html>

          總結

          盡管有很好的支持,但 drop-shadow 濾鏡仍然沒有得到充分的利用。我希望這篇文章強調了一些使用 box-shadow的 情況,也許你可以在你的下一個項目中使用它!


          主站蜘蛛池模板: 日韩精品免费一区二区三区| 久久精品国产一区二区三区不卡| 一本大道在线无码一区| 日本韩国一区二区三区| 国产成人精品无码一区二区三区 | 一区二区国产在线观看| 精品人妻系列无码一区二区三区 | 国产在线观看一区精品| 精品国产一区二区三区香蕉事| 免费无码一区二区三区| 日本不卡免费新一区二区三区| 精品人妻少妇一区二区三区在线| 蜜桃视频一区二区| 日本精品啪啪一区二区三区| 97久久精品无码一区二区| 秋霞无码一区二区| 人妻AV一区二区三区精品| 人妻无码视频一区二区三区| 人妻体内射精一区二区三四| 亚洲电影一区二区| 精品一区精品二区制服| 精品亚洲AV无码一区二区| 亚洲av无码一区二区三区天堂古代| 亚洲一区二区电影| 无码人妻久久久一区二区三区| 精品国产日产一区二区三区 | 免费无码AV一区二区| 美女免费视频一区二区| 一区二区三区电影网| 国产亚洲情侣一区二区无码AV| 中文字幕一区精品| 国产午夜福利精品一区二区三区| 国偷自产av一区二区三区| 一区二区三区四区视频| 久久综合亚洲色一区二区三区| 男插女高潮一区二区| 日韩一区二区三区在线精品| 日韩人妻无码一区二区三区久久99| 国产av天堂一区二区三区| 日韩在线不卡免费视频一区| 成人精品视频一区二区|