日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

CSS 和 SVG 實現(xiàn)彩色圖片陰影

來源: 責(zé)編: 時間:2024-02-01 12:52:20 258觀看
導(dǎo)讀在平時開發(fā)中,有時候會碰到這樣的彩色陰影,效果如下:是不是非常有質(zhì)感?下面分別介紹 CSS 和 SVG 兩種實現(xiàn)方式,一起看看吧!一、實現(xiàn)原理從設(shè)計上看,其實原理很簡單,一張原圖和一張模糊的圖,疊加在一起就行了,示意如下:那么具體如

16n28資訊網(wǎng)——每日最新資訊28at.com

在平時開發(fā)中,有時候會碰到這樣的彩色陰影,效果如下:16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

是不是非常有質(zhì)感?下面分別介紹 CSS 和 SVG 兩種實現(xiàn)方式,一起看看吧!16n28資訊網(wǎng)——每日最新資訊28at.com

一、實現(xiàn)原理

從設(shè)計上看,其實原理很簡單,一張原圖和一張模糊的圖,疊加在一起就行了,示意如下:16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

那么具體如何實現(xiàn)呢?接著往下看。16n28資訊網(wǎng)——每日最新資訊28at.com

二、CSS 濾鏡

首先,單純的 CSS并不能直接做出這種效果,畢竟無法生成一份相同的圖片,因此,我們需要手動創(chuàng)建一個相同的圖層。16n28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)HTML如下:16n28資訊網(wǎng)——每日最新資訊28at.com

<div class="wrap">   <img class="cover" src="https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp"></div>

為了節(jié)省 dom,我們可以通過偽元素的方式來生成這個圖片,關(guān)鍵代碼如下:16n28資訊網(wǎng)——每日最新資訊28at.com

.wrap{  position: relative;  /**/}.wrap::before{  content:'';  position: absolute;  background: url("https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp");  transform: translate(10px,10px);}

稍微給點偏移,這樣得到了兩層圖片。16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

然后給這個偽元素設(shè)置模糊濾鏡就行了。16n28資訊網(wǎng)——每日最新資訊28at.com

.wrap::before{  /**/  filter: blur(12px);}

這樣就實現(xiàn)了文章開頭效果。16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

是不是很簡單呢?16n28資訊網(wǎng)——每日最新資訊28at.com

不過實際中可以采用 CSS變量的方式,將需要重復(fù)的圖片抽離出來。16n28資訊網(wǎng)——每日最新資訊28at.com

<div class="wrap" style="--bg: url('https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp')">  <img class="cover" src="https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp"></div>

然后CSS就可以保持統(tǒng)一了。16n28資訊網(wǎng)——每日最新資訊28at.com

.wrap::before{  /**/  background: var(--bg);}

三、SVG濾鏡

有沒有發(fā)現(xiàn) 上面這種方式需要手動去創(chuàng)建一個一模一樣的圖層有些多余呢?16n28資訊網(wǎng)——每日最新資訊28at.com

確實是這樣,CSS 目前還無法直接復(fù)制一個圖層。16n28資訊網(wǎng)——每日最新資訊28at.com

Firefox 中有個element()方法可以根據(jù)dom生成一份完全相同的圖層,但是僅僅 Firefox 支持:https://developer.mozilla.org/en-US/docs/Web/CSS/element。16n28資訊網(wǎng)——每日最新資訊28at.com

那么,還有其他方式嗎?16n28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然也是有了,那就是 SVG濾鏡!16n28資訊網(wǎng)——每日最新資訊28at.com

和前面的思路其實是一致的,先模糊圖層,然后偏移一下,用SVG實現(xiàn)就是。16n28資訊網(wǎng)——每日最新資訊28at.com

<svg width="0" height="0">  <filter id="natural-shadow-filter">    <feGaussianBlur stdDeviation="12" />    <feOffset dx="10" dy="10" />    <feMerge>      <feMergeNode />      <feMergeNode in="SourceGraphic" />    </feMerge>  </filter></svg>

似乎有些看不懂?沒關(guān)系,我們一步步分析。16n28資訊網(wǎng)——每日最新資訊28at.com

首先filter就濾鏡的意思,表示整個就是定義了一個濾鏡,后面可以給 CSS 直接使用。16n28資訊網(wǎng)——每日最新資訊28at.com

接著,feGaussianBlur就是高斯模糊,stdDeviation表示模糊的范圍。16n28資訊網(wǎng)——每日最新資訊28at.com

然后,feOffset表示偏移,dx和dy分別是水平和垂直方向的位移。16n28資訊網(wǎng)——每日最新資訊28at.com

最后是一個feMerge標(biāo)簽,這個表示合并,也就是將多個濾鏡組合起來,里面的feMergeNode表示每一步濾鏡的結(jié)果。這里有兩個feMergeNode,第一個就是前面濾鏡的最終結(jié)果,也就是「模糊」+「偏移」后的效果,第二個feMergeNode有一個in參數(shù),表示輸入,這里設(shè)置的是SourceGraphic,表示原始圖像,也就是處理之前的原圖。這里的疊加順序是后來居上,也就是原圖放在模糊圖之上。16n28資訊網(wǎng)——每日最新資訊28at.com

示意效果如下:16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

最后,我們在CSS中直接通過 id 引入的方式使用這個濾鏡就行了。16n28資訊網(wǎng)——每日最新資訊28at.com

.wrap{  filter: url("#natural-shadow-filter");}

效果如下,和 CSS基本一致。16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

我們還可以多試幾種其他圖片,下面是 CSS 和 SVG 兩種實現(xiàn)的效果對比。16n28資訊網(wǎng)——每日最新資訊28at.com

16n28資訊網(wǎng)——每日最新資訊28at.com

你可以查看以下鏈接16n28資訊網(wǎng)——每日最新資訊28at.com

  • CSS & SVG color shadow(code.juejin)[1]
  • CSS & SVG color shadow(codepen.io)[2]

四、總結(jié)一下

以上就是本文的全部內(nèi)容了,主要介紹了 CSS 和 SVG 兩種不同的實現(xiàn)方式,下面總結(jié)一下16n28資訊網(wǎng)——每日最新資訊28at.com

  • 彩色陰影其實原理很簡單,一張原圖和一張模糊的圖,疊加在一起就行了。
  • CSS無法直接創(chuàng)建一個完全相同的圖層,需要手動去創(chuàng)建。
  • 手動去創(chuàng)建一個一模一樣的圖層有些多余,而SVG可以自動生成多份。
  • SVG可以將多個效果通過feMerge進(jìn)行疊加,順序是后來居上,SourceGraphic表示原始圖像。
  • CSS可以通過url(#id)的方式引入SVG濾鏡。

當(dāng)然,SVG的潛力遠(yuǎn)不僅如此,在圖像處理方面,SVG有著無可比擬的優(yōu)勢,CSS 濾鏡可以稱之為“殘血版”濾鏡,很多效果還是需要SVG出馬,以后還會介紹更多實用場景。16n28資訊網(wǎng)——每日最新資訊28at.com

[1]CSS & SVG color shadow (code.juejin): https://code.juejin.cn/pen/7328684301011124260。16n28資訊網(wǎng)——每日最新資訊28at.com

[2]CSS & SVG color shadow (codepen.io): https://code.juejin.cn/pen/7328684301011124260。16n28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-70482-0.htmlCSS 和 SVG 實現(xiàn)彩色圖片陰影

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 免費用JetBrains全家桶的門檻變高了,這個條件必須滿足

下一篇: 故障現(xiàn)場 | 這個死鎖出奇的詭異

標(biāo)簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 鄂托克前旗| 米泉市| 米易县| 昌乐县| 大化| 醴陵市| 太和县| 阿拉尔市| 福鼎市| 奈曼旗| 庆阳市| 通许县| 邯郸县| 义乌市| 织金县| 迭部县| 阳信县| 越西县| 辽中县| 刚察县| 马尔康县| 中宁县| 娱乐| 庆元县| 贡山| 晋宁县| 民和| 河池市| 牟定县| 五指山市| 盐亭县| 土默特右旗| 福鼎市| 汉沽区| 友谊县| 普洱| 邛崃市| 义乌市| 湘阴县| 甘洛县| 乌拉特后旗|