強大的CSS:文字下波浪線動畫效果
之前有至少5個人在評論中詢問我文章中連結hover時候波浪下劃線動畫是怎麼實現的,類似下圖gif示意:
這裡就介紹下是如何實現的。
有兩種實現方法,各有優劣。
一、使用徑向漸變純CSS實現
就是使用徑向漸變繪製我們的波浪線效果,一個波浪線迴圈段是有一個朝上的半個圓弧和一個朝下的半個圓弧組合而成的。
所以,我們只要使用徑向漸變繪製圓弧,再通過
background-position
控制兩個圓弧的位置,讓其前後拼接在一起就可以實現波浪線效果。
相關CSS程式碼如下:
.flow-wave { background: radial-gradient(circle at 10px -7px, transparent 8px, currentColor 8px, currentColor 9px, transparent 9px) repeat-x, radial-gradient(circle at 10px 27px, transparent 8px, currentColor 8px, currentColor 9px, transparent 9px) repeat-x; background-size: 20px 20px; background-position: -10px calc(100% + 16px), 0 calc(100% - 4px); }
實時效果如下:
有了靜態的波浪線效果,剩下的就像這個波浪線動起來,用CSS3
animation
動畫控制
background-position
位置即可。
.flow-wave { animation: waveFlow 1s infinite linear; } @keyframes waveFlow { from { background-position-x: -10px, 0; } to { background-position-x: -30px, -20px; } }
於是波浪線動畫效果就實現了。
這種方法實現的優點是顏色控制非常方便,例如,我們修改文字顏色為原諒綠,彎彎水波的顏色也變成了原諒綠:
此方法實現的不足就是:理解成本有點高,如何使用CSS
radial-gradient
模擬波浪線效果是需要相當的CSS功力積累的,上手不太容易,以後要修改個尺寸什麼的也不太好維護。同時,在普通螢幕密度螢幕下的Chrome瀏覽器上,線條並不平滑,吹毛求疵的設計師不一定會接受。
此時,可以試試下面這種更利於理解的方法。
二、使用SVG波形向量圖作為背景
就是我們直接使用一個使用SVG波形向量圖作為背景,不用自己去手動CSS繪製,程式碼量差不多,還更容易理解。CSS程式碼示意:
.svg-wave { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 4'%3E%3Cpath fill='none' stroke='%23333' d='M0 3.5c5 0 5-3 10-3s5 3 10 3 5-3 10-3 5 3 10 3'/%3E%3C/svg%3E") repeat-x 0 100%; background-size: 20px auto; }
實時效果如下:
有了靜態的波浪線效果,剩下的就像這個波浪線動起來,用CSS3
animation
動畫控制
background-position
位置即可。
.svg-wave { animation: waveMove 1s infinite linear; } @keyframes waveMove { from { background-position: 0 100%; } to { background-position: -20px 100%; } }
此方法就是我部落格連結使用的方法。
優點是線條邊緣平滑,效果細膩,易理解,易上手,易維護。
缺點也很明顯,就是波浪線的顏色無法實時跟著文字的顏色發生變化,適用於文字顏色不會多變的場景。
如果我們想要改變波浪線的顏色也很簡單,修改
background
程式碼中的
stroke='%23333'
這部分,
'%23'
就是就是
#
,因此,
stroke='%23333'
其實就是
stroke='#333'
的意思。例如,我們需要改成紅色略帶橙色,可以
stroke='%23F30'
,也可以寫完整
stroke='%23FF3300'
。
這個顏色就是我部落格連結波浪線的顏色,如下圖:
大家可以根據自己實際開發的場景選擇合適的方法。
三、每當要結束的時候
text-decoration
屬性早已支援波浪線下劃線:
text-decoration-style: wavy;
效果如下截圖:
可以看到,線好粗好不協調,而且字元和裝飾線發生重疊的時候,裝飾線直接消失了,結果波浪線變成了一截一截的,還需要使用
text-decoration-skip
進行額外控制。因此,實際開發,不建議在實際專案中使用。
而且你無法預知每個波浪線重複片段的寬度,想要無限運動理論上就不太可行。
因此,文字或者圖形的波浪線動畫效果不能使用
text-decoration
的波浪線。
自己是一個五年的前端工程師,希望本文對你有幫助!
這裡推薦一下我的前端學習交流扣qun:731771211 ,裡面都是學習前端的,如果你想製作酷炫的網頁,想學習程式設計。自己整理了一份2019最全面前端學習資料,從最基礎的HTML+CSS+JS【炫酷特效,遊戲,外掛封裝,設計模式】到移動端HTML5的專案實戰的學習資料都有整理,送給每一位前端小夥伴,每天分享技術
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2645129/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CSS & SVG foreignObject 實現文字鏤空波浪動畫CSSSVGObject動畫
- 強大的CSS:模擬下雪效果動畫製作教程CSS動畫
- 5分鐘學會製作 CSS 波浪文字動畫特效CSS動畫特效
- 【轉】5分鐘學會製作 CSS 波浪文字動畫特效CSS動畫特效
- 強大的CSS動畫:Transition與AnimationCSS動畫
- CSS 奇技淫巧 | 妙用混合模式實現文字鏤空波浪效果CSS模式
- CSS製作水滴波浪效果案例CSS
- Swift 波浪動畫Swift動畫
- 奇技淫巧——CSS 實現波浪效果CSS
- 用css動畫寫一個下紅包雨的效果CSS動畫
- 【動畫消消樂|CSS】086.炫酷水波浪Loading過渡動畫動畫CSS
- CSS動畫:有活力的連結下劃線CSS動畫
- 奇思妙想 CSS 文字動畫CSS動畫
- Flutter抖動動畫、顫抖動畫、Flutter文字抖動效果Flutter動畫
- 一種巧妙的使用 CSS 製作波浪效果的思路CSS
- CSS3動畫按鈕效果CSSS3動畫
- CSS文字交錯滑動效果-001CSS
- 萬彩動畫大師教程 | 給文字新增藝術字效果動畫
- CSS 炫酷文字過渡動畫CSS動畫
- css3動畫效果抖動解決CSSS3動畫
- Flutter 實戰 - 用貝塞爾曲線畫一個帶文字的波浪球 WidgetFlutter
- CSS3動畫效果下拉導航選單效果CSSS3動畫
- CSS動畫效果——語音播放小喇叭CSS動畫
- CSS3 loadding載入動畫效果CSSS3動畫
- CSS3載入等待動畫效果CSSS3動畫
- CSS 滑鼠懸浮動畫暫停效果CSS動畫
- css3動畫完成打字機效果CSSS3動畫
- css實現波浪線及立方體CSS
- CSS 多行文字超連結下劃線動效CSS
- 萬彩動畫大師教程 | 新增動畫效果動畫
- CSS3圖片上下動畫浮動效果CSSS3動畫
- CSS3 文字效果CSSS3
- 使用 CSS 繪製帶有動畫效果的 React LogoCSS動畫ReactGo
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- CSS3水滴向下滴落動畫效果CSSS3動畫
- css3實現動畫閃爍效果CSSS3動畫
- app直播原始碼,css給數字或文字在滑鼠懸停時新增下劃線動畫APP原始碼CSS動畫
- 用css動畫寫一個文字落下的背景動畫(密恐勿進)CSS動畫