成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CSS 如何實現羽化效果?

開發 前端
通過 CSS 陰影可以很輕松的實現我們說需要的效果,但可惜現在還是 ??dom?? 階段,所以需要將這個 dom 轉換成圖像。

最近碰到這樣一個問題,在一張封面上直接顯示書名,可能會存在書名看不太清楚的情況(容易受到背景干擾),如下

圖片

為了解決這個問題,設計師提了一個“究極”方案,將書名背后的圖片模糊一下,這個在 CSS 中很好實現,僅需backdrop-filter即可

.name{
backdrop-filter: blur(10px);
}

當然,現在模糊是模糊了,但是邊緣過于“斷層”,導致書名和封面有些“格格不入”,效果如下

圖片

如果能夠將邊緣羽化一下,虛化邊緣效果,就可以很好地將書名融入到背景當中。

羽化是photoshop術語,羽化原理是令選區內外銜接部分虛化,起到漸變的作用從而達到自然銜接的效果,是ps及其其它版本中的處理圖片的重要工具。

這是設計最終羽化后的效果,既能保證文字清晰可見,又能避免太過突兀,如下:

圖片

設計師實現這個很簡單,用橡皮擦擦一下就可以了,那么 CSS 呢?下面來探討一下 CSS 如何實現羽化的效果。

一、羽化的原理

羽化其實就是將邊緣變得模糊,在 CSS 中其實就是創建一個邊緣模糊的遮罩(mask),也就是需要一種半透明的漸變。

關于遮罩,這里簡單介紹一下,基本語法很簡單,和background的語法基本一致

.content{
-webkit-mask: '遮罩圖片' ;
}

這里的遮罩圖片和背景的使用方式基本一致,可以是PNG圖片、SVG圖片、也可以是漸變繪制的圖片,同時也支持多圖片疊加。

遮罩的原理很簡單,最終效果只顯示不透明的部分,透明部分將不可見,半透明類推

圖片

先舉個圓形的例子,這個比較簡單,因為可以直接通過徑向漸變創建

比如,下面有一個頭像,現在直接放在背景上非常突兀

圖片

我們可以將這個頭像通過徑向漸變繪制出了一個從不透明到透明的遮罩,達到和背景融合的效果

.head{
-webkit-mask: radial-gradient(closest-side circle,#000 60%, transparent 100%);
}

原理是這樣的:

圖片

最后效果如下:

圖片

當然這是圓形的,如果是矩形的呢?

二、矩形的羽化原理

根據上面的分析,如果希望羽化矩形邊緣,需要創建這一個遮罩

圖片

那么問題來了,如何創建這一個邊緣模糊的矩形呢?貌似沒辦法直接通過漸變來實現,而且還需要是尺寸自適應的(自動跟隨容器尺寸)

如果單純看這樣一個矩形,還是很容易實現的,通過box-shadow即可實現

.shadow{
width: 200px;
height: 200px;
background:black;
border-radius:10px;
box-shadow:0 0 5px black, 0 0 10px black, 0 0 15px black
}

根據需求,**可以多疊加幾層box-shadow**,這里疊加了3層,效果如下

圖片

但是問題又來了,這樣一個 dom 無法直接用作mask-image,那如何處理呢?

三、通過 SVG foreignObject 轉換成圖片

上面提到,通過 CSS 陰影可以很輕松的實現我們說需要的效果,但可惜現在還是 dom 階段,所以需要將這個 dom 轉換成圖像。

在這里,需要借助 SVG? 中的foreignObject[1]元素,通過這個元素,可以將 HTML?嵌入到SVG?中,輕松實現 dom 轉圖片的效果。

原理如下:

圖片

回到這里,我們僅需要將上面的結果放到foreignObject?元素中,由于需要自適應尺寸,這里的body?寬高都是100%,如下

<svg xmlns="http://www.w3.org/2000/svg">
<foreignObject width="100%" height="100%">
<body class="wrap" xmlns="http://www.w3.org/1999/xhtml">
<style>
.wrap{
box-sizing: border-box;
margin: 0;
height: 100%;
padding: 10px;
}
.shadow{
height: 100%;
background:black;
border-radius:10px;
box-shadow:0 0 5px black, 0 0 10px black, 0 0 15px black
}
</style>
<div class="shadow"></div>
</body>
</foreignObject>
</svg>

這樣就得到了一個寬高自適應的SVG圖像,無論寬高怎么變化,都是撐滿的。

圖片

別看這么多標簽,這其實已經是一張圖片,可以直接使用,接下來看看如何運用

四、矩形的羽化

其實上面得到的 SVG可以直接當成一個圖片資源,正常使用了,就像這樣

.name{
-webkit-mask: url('./fearher.svg')
}

不過,也可以將這個SVG圖片轉換成內聯形式,減少資源依賴,轉換后仍然保持自適應特性。

這里推薦張鑫旭老師的SVG在線壓縮合并工具 [2]。

轉換后就是這個樣子:

.name{
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3CforeignObject width='100%25' height='100%25'%3E%3Cbody class='wrap' xmlns='http://www.w3.org/1999/xhtml'%3E%3Cstyle%3E.wrap%7Bbox-sizing:border-box;margin:0;height:100%25;padding:10px%7D.shadow%7Bheight:100%25;background:%23000;border-radius:10px;box-shadow:0 0 5px %23000,0 0 10px %23000,0 0 15px %23000%7D%3C/style%3E%3Cdiv class='shadow'/%3E%3C/body%3E%3C/foreignObject%3E%3C/svg%3E")
}

效果如下

圖片

而且由于尺寸是動態的,換個書名也能完美適應。

圖片

最后再來對比一下,下面哪個一眼看上去效果最好?

圖片

完整代碼可以查看以下任意鏈接:

  • CSS feather (juejin.cn)[3]
  • CSS feather (codepen.io)[4]
  • CSS feather (runjs.work)[5]

五、總結一下

以上就是本文全部內容了,一個還不錯的繪制小技巧,最后來回顧一下一些實現要點。

  • 羽化其實就是將邊緣變得模糊,在 CSS 中其實就是創建一個邊緣模糊的遮罩,也就是需要一種半透明的漸變。
  • 圓形的邊緣很好羽化,因為徑向漸變可以直接繪制。
  • 矩形的邊緣就稍微復雜點,因為不能直接通過漸變繪制。
  • 邊緣模糊在 CSS 中很好實現,用 box-shadow 就行了。
  • 可以通過 SVG foreignObject 將 dom 轉換成圖片。
  • SVG 轉換成內聯形式,好處是減少資源依賴,轉換后仍然保持自適應特性。
責任編輯:武曉燕 來源: 前端偵探
相關推薦

2021-05-19 06:07:21

CSS 斜線效果技巧

2010-09-08 12:49:16

CSS斜線

2021-07-27 07:31:16

CSS 元素切換

2010-09-07 14:53:45

Chroma屬性CSS

2021-12-27 07:45:30

CSS 技巧煙霧效果

2021-01-19 12:16:10

CSS前端UI

2010-09-14 12:58:41

DIV+CSS圓角

2010-09-09 11:16:06

CSS交互

2010-09-09 12:49:58

鼠標懸停tip效果CSS

2010-09-14 09:18:28

DIVCSS

2022-07-07 08:43:05

HoudiniAPICSS

2023-11-22 07:47:34

2022-03-17 19:29:04

CSS切角自適應

2010-09-13 14:09:35

CSS文字

2023-05-22 09:10:53

CSSloading 效

2024-07-31 20:38:18

2021-09-28 08:26:06

CSS 技巧文字鏤空波浪

2022-06-15 22:15:47

CSS視覺還原

2023-07-18 15:49:22

HTMLCSS

2023-06-06 15:38:28

HTMLCSS開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产乱码精品1区2区3区 | 91成人免费看片 | 天堂在线免费视频 | 国产羞羞视频在线观看 | 日韩影音 | 国产一区二区在线视频 | 国产一区二区三区色淫影院 | 日韩一区二区三区在线 | 99久久精品一区二区毛片吞精 | 91美女在线观看 | 91在线综合 | 夜夜爽99久久国产综合精品女不卡 | 国产一区二区成人 | 色久电影| 人人干人人爽 | 欧美精品福利视频 | 国产99久久 | 日韩av免费在线观看 | 国产成人精品一区 | 欧美9999 | 国产一区免费 | 欧美一卡二卡在线观看 | 国产精品www| 99精品久久久 | 四虎影院美女 | 精品久久久久久久久久久久久久 | 3级毛片 | 久久精品二区亚洲w码 | 国产一区二区三区 | 国产高清久久久 | 免费的色网站 | 欧美在线视频观看 | 欧美日韩在线不卡 | 日韩欧美在线视频一区 | 亚洲欧美日韩激情 | 国产精品资源在线 | 91久久国产综合久久 | 91国产精品 | 欧美亚洲一区二区三区 | 天堂成人国产精品一区 | av国产在线观看 |