国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Amazing!CSS 也能實現煙霧效果?

開發 前端
最近利用 CSS 實現了一些看似超出 CSS 能力的效果,本文繼續此系列,本文主要想探討一下,使用 CSS 能否比較好的實現一些煙霧效果。

最近利用 CSS 實現了一些看似超出 CSS 能力的效果:

巧用漸變實現高級感拉滿的背景光動畫[1]

Amazing!!CSS 也能實現極光?[2]

本文繼續此系列,本文主要想探討一下,使用 CSS 能否比較好的實現一些煙霧效果。像是這樣:

仔細觀察煙霧效果,有兩個比較重要的特點:

  • 模糊效果
  • 顆粒感

首先看模糊效果,想到模糊,大部分同學首先都會想到使用 filter: blur() 。

當然沒錯,不過在 CSS 中,除了濾鏡,我們還能使用一類其他手段去模擬模糊的效果。

純 CSS 實現煙霧動畫

我們首先來看這樣一個效果:

假設,我們有這樣一個字符:

  1. <span>C</span> 

我們僅僅是通過 text-shadow + opacity 的變化,就能模擬煙霧的效果:

  1. span { 
  2.   text-shadow: 0 0 0 whitesmoke; 
  3.   animation: smoky 5s; 
  4.  
  5. @keyframes smoky { 
  6.   to { 
  7.     text-shadow: 0 0 20px whitesmoke; 
  8.     opacity: 0; 
  9.   } 

看看效果:

圖片

在上述的基礎上,我們可以加上位移、旋轉、縮放,稍微改造一下上述代碼,添加一些 transform 變換:

  1. span { 
  2.   text-shadow: 0 0 0 whitesmoke; 
  3.   animation: smoky 5s; 
  4.  
  5. @keyframes smoky { 
  6.   to { 
  7.     transform: 
  8.       translate3d(200px, -80px, 0) 
  9.       rotate(-40deg) 
  10.       skewX(70deg) 
  11.       scale(1.5); 
  12.     text-shadow: 0 0 20px whitesmoke; 
  13.     opacity: 0; 
  14.   } 

就可以得到如下效果:

疊加了 transform 之后,就很有一個字被吹跑,變成煙霧的感覺。在此基礎之上,我們只需要將多個字放在一起,利用 animation-delay 順序控制每個字觸發動畫效果,即可得到上述的完整煙霧效果。

偽代碼如下:

  1. <div> 
  2.     <span>C</span> 
  3.     <span>S</span> 
  4.     <span>S</span> 
  5.     // ... 
  6. </div> 
  1. // ... 上述所有 CSS 代碼 
  2.  
  3. @for $item from 1 through 21 { 
  4.   span:nth-of-type(#{$item}){  
  5.     animation-delay: #{(($item/10))}s;  
  6.   } 
  7. }  

就可以得到這樣一個被風吹跑的字,幻化成煙霧的效果:

上述效果并非我原創,最早見于這位作者 -- CodePen Demo -- Smoky Text By Bennett Feely[3]

借助 SVG feturbulence 濾鏡實現煙霧效果

上述的煙霧動畫的煙霧還是比較粗糙的。主要是缺少了一點顆粒感?缺少了一些煙霧的質感。

想要實現更為精致的煙霧效果,我們還得借助 SVG 的 濾鏡,對這個濾鏡還不太了解的,可以看看我的這幾篇文章:

  • 有意思!強大的 SVG 濾鏡[4]
  • 震驚!巧用 SVG 濾鏡還能制作表情包?[5]
  • 實現一個會動的鴻蒙 LOGO[6]

接下來會使用 filter: blur() 配合 濾鏡,得到更為逼真的煙霧效果。

舉個簡單的例子,假設有這樣幾個字:

  1. <div">SMOKE</div> 

簡單的 CSS:

  1. div { 
  2.     background: linear-gradient(#fff, #999, #ddd, #888); 
  3.     background-clip: text; 

得到這樣幾個帶漸變色字:

我們利用濾鏡簡單處理一下:

  1. <div>SMOKE</div> 
  2.  
  3. <svg width="0"
  4.   <filter id="filter"
  5.     <feTurbulence id="turbulence" type="fractalNoise" baseFrequency=".03" numOctaves="20" /> 
  6.     <feDisplacementMap in="SourceGraphic" scale="30" /> 
  7.   </filter> 
  8. </svg> 

CSS 的中利用 filter: url() 引入該濾鏡,這里為了效果更好,我直接在 上引入了該濾鏡:

  1. body { 
  2.     filter: url('#filter'); 
  3. div { 
  4.     background: linear-gradient(#fff, #999, #ddd, #888); 
  5.     background-clip: text; 

我們的字體就被 濾鏡 賦予了一種流體的感覺:

這個效果可以說和煙霧效果基本沒什么關系,不過只需要再添加一個模糊濾鏡,神奇的事情就發生了:

  1. body { 
  2.     filter: url('#filter'); 
  3. div { 
  4.     background: linear-gradient(#fff, #999, #ddd, #888); 
  5.     background-clip: text; 
  6.     filter: blur(5px); 

整個效果就瞬間煙霧化了很多:

好,給它添加上循環的動畫效果,簡單的借助 JavaScript 處理一下:

  1. const filter = document.querySelector("#turbulence"); 
  2. let frames = 1; 
  3. let rad = Math.PI / 180; 
  4. let bfx, bfy; 
  5.  
  6. function freqAnimation() { 
  7.     frames += .2 
  8.  
  9.     bfx = 0.03; 
  10.     bfy = 0.03; 
  11.  
  12.     bfx += 0.005 * Math.cos(frames * rad); 
  13.     bfy += 0.005 * Math.sin(frames * rad); 
  14.  
  15.     bf = bfx.toString() + " " + bfy.toString(); 
  16.     filter.setAttributeNS(null"baseFrequency", bf); 
  17.  
  18.     window.requestAnimationFrame(freqAnimation); 
  19.  
  20. window.requestAnimationFrame(freqAnimation); 

看看效果:

上述完整代碼,你可以猛擊這里:CodePen CSS + SVG Text Smoke Effect[7]

當然,上述效果可以通過:

  1. 控制 的 baseFrequency 屬性調節
  2. 控制 的 numOctaves 屬性調節
  3. 控制 的 scale 屬性調節

的 numOctaves 屬性由 30 改成 70,基本就看不到文字的輪廓了,文字整個霧化。我們可以制作類似這樣的 hover 效果:

上述完整代碼,你可以猛擊這里:CodePen CSS + SVG Text Smoke Hover Effect[8]

這樣,基于 filter: blur() 配合 濾鏡,我們可以得到非常逼真的煙霧效果,基于上述的演示,我們還可以再挖掘非常多有意思的效果,本文就不再贅述。

最后

好了,本文到此結束,希望本文對你有所幫助 :)

參考資料

[1]巧用漸變實現高級感拉滿的背景光動畫:

https://github.com/chokcoco/iCSS/issues/150

[2]Amazing!!CSS 也能實現極光?:

https://github.com/chokcoco/iCSS/issues/155

[3]CodePen Demo -- Smoky Text By Bennett Feely:

https://codepen.io/bennettfeely/pen/lgybC

[4]有意思!強大的 SVG 濾鏡:

https://github.com/chokcoco/cnblogsArticle/issues/27

[5]震驚!巧用 SVG 濾鏡還能制作表情包?:

https://github.com/chokcoco/iCSS/issues/107

[6]實現一個會動的鴻蒙 LOGO:

https://github.com/chokcoco/iCSS/issues/137

[7]CodePen CSS + SVG Text Smoke Effect:

https://codepen.io/Chokcoco/pen/wvrrwVM

[8]CodePen CSS + SVG Text Smoke Hover Effect:

https://codepen.io/Chokcoco/pen/Jjrrojj

 

責任編輯:姜華 來源: iCSS前端趣聞
相關推薦

2024-03-20 09:40:27

動畫技巧CSS逐幀動畫

2022-04-12 07:37:08

CSS滾動視差效果前端

2022-12-26 08:25:16

CSS函數節流

2022-08-22 15:10:38

JSCSS頁面滾動

2022-12-12 11:11:05

2023-01-26 14:15:55

識別分割可遷移

2009-12-25 10:07:38

Linux系統多點觸摸

2022-02-10 08:07:41

機器學習低代碼開發

2010-09-09 12:49:58

鼠標懸停tip效果CSS

2010-09-09 11:16:06

CSS交互

2010-09-14 12:58:41

DIV+CSS圓角

2010-09-07 14:53:45

Chroma屬性CSS

2021-01-19 12:16:10

CSS前端UI

2010-09-14 09:18:28

DIVCSS

2025-04-14 00:00:00

MCPjson 信息地理編碼

2022-07-07 08:43:05

HoudiniAPICSS

2010-09-13 14:09:35

CSS文字

2023-05-22 09:10:53

CSSloading 效

2022-03-17 19:29:04

CSS切角自適應

2021-08-12 06:08:15

CSS 技巧組件狀態
點贊
收藏

51CTO技術棧公眾號

在线日韩三级| 可以看毛片的网址| 韩国福利在线| 自拍偷拍欧美精品| 性欧美.com| 免费成人网www| 欧美老女人性视频| 调教一区二区| 亚洲韩国一区二区三区| 欧美日韩国产欧美日美国产精品| 久热精品在线播放| 美腿丝袜亚洲综合| 97人人香蕉| 国产精品久久久久久影院8一贰佰| www.xxxx精品| 国产在线播放观看| 欧美精品一卡| 亚洲一区二区三区香蕉| 麻豆一区二区麻豆免费观看| 中文字幕日韩高清| 成人免费一区| 亚洲免费一在线| 精灵使的剑舞无删减版在线观看| 亚洲综合二区| 国产欧美日韩精品丝袜高跟鞋| 久久久久毛片免费观看| 99热99精品| 免费看日本毛片| 久久66热偷产精品| 青青成人在线| 999在线观看精品免费不卡网站| 国产精品国色综合久久| 999国产精品999久久久久久| 青草成人免费视频| 日韩精品影视| 91亚洲va在线va天堂va国 | 国产精一区二区三区| 免费一区二区三区| 一区二区三区导航| 精品高清视频| 国产自产2019最新不卡| 日本一区二区免费高清视频| 精品夜夜嗨av一区二区三区| 国产制服91一区二区三区制服| 国产一区中文字幕| 精品国偷自产一区二区三区| 成人片免费看| 久久精品亚洲热| 黄色国产精品视频| 国产精品1024| 和岳每晚弄的高潮嗷嗷叫视频| 久久精品一区二区三区四区| 一区二区三区国产免费| 国产精品三级电影| 在线国产一级| 欧美色图在线观看| 在线观看福利一区| 天堂在线资源视频| 亚洲综合一区二区三区| 88av在线| 成品人视频ww入口| 国产成人综合在线| 国产综合色一区二区三区| 在线观看精品| 中文字幕欧美日韩精品| 日本黄色免费在线| 亚洲人成免费电影| 涩爱av色老久久精品偷偷鲁| 亚洲三级黄色在线观看| 日本xxxx黄色| 欧美老女人第四色| 麻豆免费在线| 欧美成人精品在线| 欧美日本三区| mm131午夜| 国产精品色婷婷| 国产激情在线| 一区二区日韩精品| 天天躁日日躁成人字幕aⅴ| 久久精品久久99精品久久| r级无码视频在线观看| 精品国产一区二区三区| 欧美电影免费提供在线观看| 欧美日韩精品免费在线观看视频| 视频一区欧美精品| 国产成人在线免费看| 视频精品一区二区| 99影视tv| 欧美美女视频| 久久精品99久久久久久久久| 免费看男男www网站入口在线 | 小泽玛利亚av在线| 欧美三级一区| 国产精品久久久久久久久久东京| 久久99久久99精品免视看婷婷 | 嫩草影院发布页| 亚洲超丰满肉感bbw| 欧美一区二区三区免费视| 国产高清一区| 成人午夜免费剧场| 亚洲香蕉伊在人在线观| 黄色小说在线播放| 国产精自产拍久久久久久| 精品一区二区久久久| 美女免费免费看网站| 亚洲国产精品成人av| 四季av一区二区凹凸精品| 粉嫩av一区二区三区天美传媒 | 欧美三级一区二区| 欧美色资源站| 亚洲在线色站| 在线视频中文字幕一区二区| 日韩在线黄色| 国产片侵犯亲女视频播放| 在线一区二区三区四区五区| 成人国产精品久久| 91免费视频黄| 一本大道久久a久久精二百| 欧美97人人模人人爽人人喊视频| 天天综合狠狠精品| 精品美女久久久久久免费| 成人在线分类| 欧美一区二区三区四区在线观看地址 | 欧美日韩三级在线| 伊人久久国产| 日本成年人网址| 精品在线视频一区二区三区| 韩国福利视频一区| 国产69精品久久久久孕妇| 亚洲视频电影图片偷拍一区| 欧美日本一道本| 狠狠久久亚洲欧美专区| 欧美美女一区二区在线观看| 日韩电影在线免费看| 久久中文字幕av一区二区不卡| 久久久久免费av| 欧美日韩裸体免费视频| 亚洲码国产岛国毛片在线| www.欧美精品一二区| 成人免费一区二区三区在线观看| 欧美久久高跟鞋激| 在线精品高清中文字幕| 91夜夜揉人人捏人人添红杏| 视频一区二区三| 一区二区三区四区国产| 久久久久久高清| 国产精品福利观看| 日本久久久久久久久久久| 国内精品久久久久久| 国产成人精品一区二区| 国产欧美精品日韩| 亚洲精品一区二区三区99| 五月综合激情婷婷六月色窝| 国产情人综合久久777777| 97久久精品人人做人人爽| 久久九九全国免费| 国产精品福利在线播放| 2021国产精品久久精品 | 国产精品免费久久久| 亚洲视频导航| 日韩高清在线一区| 在线精品在线| 国产欧美日韩三级| 久久中文字幕av| 91桃色在线观看| 福利精品一区| 亚洲成人1区| 最近国产精品视频| 日韩极品一区| 国产综合网站| 天天揉久久久久亚洲精品| 欧美视频在线观看| 韩国av一区二区| 国产精品久久久久久久久快鸭| 色婷婷综合久久| 欧美成人性战久久| 日韩一区二区三区四区| 欧美性大战久久久久久久| 亚洲精品久久久久久国产精华液| 欧美精品v国产精品v日韩精品| 在线免费观看日本一区| 亚洲精品一线二线三线无人区| 亚洲精品资源美女情侣酒店| 亚洲精品免费一区二区三区| 国产婷婷一区二区三区| 国产极品尤物在线| 亚洲区欧洲区| 日韩精品视频中文字幕| 免费视频亚洲| 欧美韩日一区二区三区四区| 欧美精品一区二区高清在线观看| 日韩女在线观看| 久久一区二区三区欧美亚洲| av在线日韩国产精品| 成人午夜激情免费视频| 久久久性生活视频| 97青娱国产盛宴精品视频| 亚洲一区二三区| 精品一区二区日本| 日韩美女在线看|