10個demo示例學會CSS3 radial-gradient徑向漸變
一、語法細節記不住怎麼辦?
實際開發的時候,當要使用radial-gradient徑向漸變的時候,腦中會有大概的語法,但是細節卻記不住,於是想快捷找個案例看看具體怎麼用,然後直接套一下。通常一番搜尋,會發現雖然是個簡單需求,但是正好滿足這個需求的頁面卻不好找,亂糟糟的。
下次遇到這種場景,直接來本站搜“徑向漸變”,或者直接搜尋“漸變”,就有專門展示radial-gradient徑向漸變基本語法使用案例的文章。文章共展示了10例常見使用案例,相信一定可以覆蓋你的使用場景的。
首先,假設我們使用同一段HTML作為示意:
<div class="radial-gradient"></div>
二、示例1:最基礎最簡單使用
CSS如下:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(yellow, red); }
最終效果如下圖:
可見,對於徑向漸變,在不指定漸變型別以及位置的情況下,其漸變距離和位置是由容器的尺寸決定的。
例如本例之中,容器的寬高比是2:1,最終漸變呈現出來的形狀也是一個2:1的橢圓形,並且漸變顏色自動終止與容器的邊緣。
原理示意如下:
三、示例2:簡單的圓形漸變
CSS程式碼如下:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(circle, yellow, red); }
其漸變範圍(漸變結束線)示意如下圖,會發現既不是按照寬度來的,也不是按照高度來的,是按照最遠邊角距離作為漸變結束線的:
其漸變範圍(漸變結束線)示意如下圖,會發現既不是按照寬度來的,也不是按照高度來的,是按照最遠邊角距離作為漸變結束線的:
要證明上面結論比較簡單,我們可以計算下對角線一半長度,為:Math.sqrt(200 200 + 400 400) ≈ 223.6,於是,我們設定:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(223.6px circle, yellow, red); }
會發現,最終效果和上面的效果截圖幾乎就是一模一樣的。而200px的半徑:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(200px circle, yellow, red); }
取色就會發現邊緣顏色差異較大,說明預設不是按照最短邊來渲染的。
四、示例3:指定漸變起始點位置
起始點位置可以透過at來指定,例如:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(circle at 50px 50px, yellow, red); }
效果如下圖所示:
如果希望漸變是和容器保持一致比例的橢圓,則circle可以預設,也就是直接radial-gradient(at 50px 50px, yellow, red)也是可以的。
50px 50px我們也可以使用百分比值代替,例如:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(circle at 12.5% 25%, yellow, red); }
效果是一模一樣的。
五、示例4:指定漸變終止點位置
radial-gradient徑向漸變支援4個關鍵字可以指定漸變終止點位置,見下表:
根據上面的示意效果可以看出預設值是farthest-corner。
現在,我們對CSS進行調整,如下:
.radial-gradient { width: 400px; height: 200px; background: radial-gradient(closest-side circle at 50px 50px, yellow, red); }
也就是圓形漸變終止於最短邊,結果效果如下圖:
六、示例5:指定漸變顏色斷點
如果指定多個顏色,但未指定具體斷點的位置,則這些顏色會均勻分配0%~100%的漸變區域,例如,下面4色漸變:
.radial-gradient { width: 200px; height: 200px; border: 1px solid silver; background: radial-gradient(closest-side circle, yellow, orange, red, white); }
結果如下圖所示:
但從肉眼視覺我們是看不出是不是均勻分配漸變區域,但是我們可以透過其他方式驗證我們的觀點,如下指定顏色斷點位置的CSS:
.radial-gradient2 { width: 200px; height: 200px; border: 1px solid gray; background: radial-gradient(closest-side circle, yellow, orange 33.33%, red 66.666%, white); }
由於漸變顏色預設第一個顏色位置是0%,最後一個顏色位置是100%,因此上面yellow和white的斷點位置可以預設。
然後發現效果和上面的是一致的:
按下第一個圈圈漸變,會讓後面的圈圈瞬間覆蓋在上面。如果兩個漸變顏色有差異,此時肉眼可以感覺到明顯變化;但是實際操作下來,就好像後面漸變突然消失一般,這就說明上下兩個漸變實際上效果是一致的。
七、示例6:橢圓型別的徑向漸變
對於圓形介面,我們只需要指定一個半徑就可以了,但是對於橢圓型別的徑向漸變,我們需要同時指定橫軸和縱軸的長度,例如:
.radial-gradient { width: 200px; height: 200px; background: radial-gradient(50px 100px ellipse, transparent 40px, yellow 41px, red); }
50px 100px ellipse中第一個數值50px表示橫軸半徑,100px表示縱軸半徑,於是這段語句表示繪製一個長度100px高度200px的橢圓。
效果如下圖:
需要注意的是,在上面示意CSS程式碼中,透明到黃色分界那裡有一個1px的偏差過渡,也就是transparent 40px, yellow 41px中yellow是41px,而不是設定的40px,原因在於在Chrome下,如果顏色直接0偏差過渡,會有比較嚴重的鋸齒,類似下圖這樣(背景色設為#333):
透過有1畫素或者半畫素的過渡緩衝可以有效避免鋸齒的出現。
八、示例7:可累加的徑向漸變背景圖
我們可以把多個徑向漸變累加在一起實現某些效果,例如下面CSS:
.radial-gradient { width: 200px; height: 200px; background: radial-gradient(50px 100px ellipse, transparent 40px, yellow 41px, red 49px, transparent 50px), radial-gradient(30px circle, red, red 29px, transparent 30px); }
實現了“邪王真眼”效果:
九、示例8:漸變背景的尺寸控制
配合background-size的尺寸控制和背景重複特性,我們可以實現漸變式的複雜紋理效果:
.radial-gradient { width: 200px; height: 200px; background: radial-gradient(5px 10px ellipse, transparent 4px, yellow 5px, red 6px, transparent 7px), radial-gradient(3px circle, red, red 3px, transparent 4px); background-size: 25px; }
於是就可以看到一大波寫輪眼:
通常我們使用徑向漸變構建一些簡單實用圖形的時候,background-size往往是關鍵屬性,例如,我們要實現個水波效果,可以這樣:
.radial-gradient { width: 200px; height: 100px; background: red; position: relative; } .radial-gradient:after { content: ''; position: absolute; height: 10px; left:0 ; right: 0; bottom: -10px; background: radial-gradient(20px 15px ellipse at top, red 10px, transparent 11px); background-size: 20px 10px; }
然後就有下圖所示的效果:
十、示例9:可重複的徑向漸變
如果想要實現可重複的徑向漸變,亦可以使用原生的repeating-radial-gradient()方法,特別適合實現從中心擴散的光波效果。
然而,相比重複線性漸變repeating-linear-gradient()方法,repeating-radial-gradient()的實際應用場景實際上很有限。因為,實際開發的時候,我們很少用到從中心擴散的光波效果。
除了一些本身就是波紋型別效果,如水波,聲波或者唱片紋理:
如下CSS
.radial-gradient { position: relative; width: 262px; height: 262px; border-radius: 50%; background: linear-gradient(30deg, transparent 40%, rgba(42, 41, 40, .85) 40%) no-repeat 100% 0, linear-gradient(60deg, rgba(42, 41, 40, .85) 60%, transparent 60%) no-repeat 0 100%, repeating-radial-gradient(#2a2928, #2a2928 4px, #ada9a0 5px, #2a2928 6px); background-size: 50% 100%, 100% 50%, 100% 100%; } .radial-gradient:after { position: absolute; top: 50%; left: 50%; margin: -35px; border: solid 1px #d9a388; width: 68px; height: 68px; border-radius: 50%; box-shadow: 0 0 0 4px #da5b33, inset 0 0 0 27px #da5b33; background: #b5ac9a; content: ''; }
十一、示例10:作為border-image的徑向漸變
徑向漸變不僅可以作為background的背景圖,還可以作為border-image的邊框圖使用。
例如:
.radial-gradient { width: 100px; height: 100px; border: 50px solid; border-image: radial-gradient(circle, transparent 50px, yellow 51px, red) 50 stretch; }
天然鏤空效果,只可惜border-image是無法和border-radius同時生效的,否則,border-image可就要牛炸天了。
結束語
這裡推薦一下我的前端學習交流群:731771211 ,裡面都是學習前端的,如果你想製作酷炫的網頁,想學習知識。自己整理了一份2019最全面前端學習資料,從最基礎的HTML+CSS+JS到移動端HTML5到專案實戰的學習資料都有整理,送給每一位前端小夥伴,有想學習web前端的,或是轉行,或是大學生,還有工作中想提升自己能力的,正在學習的小夥伴歡迎加入學習。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2287215/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CSS3 radial-gradient()徑向漸變CSSS3
- CSS radial-gradient()徑向漸變CSS
- CSS3線性漸變和徑向漸變CSSS3
- 【前端Talkking】CSS3系列——CSS3之徑向漸變初探前端CSSS3
- css3實現的徑向漸變和線性漸變程式碼例項CSSS3
- canvas createRadialGradient() 徑向漸變Canvas
- SVG <radialGradient> 徑向漸變SVG
- css徑向漸變程式碼例項CSS
- canvas徑向漸變程式碼例項Canvas
- 使用canvas來完成線性漸變和徑向漸變的功能Canvas
- css radial-gradient繪製漸變背景CSS
- canvas簡單徑向漸變程式碼例項Canvas
- html5中canvas徑向漸變(發散)HTMLCanvas
- css3 漸變CSSS3
- css3漸變CSSS3
- CSS3 背景漸變CSSS3
- css3實現文字線性漸變,css3實現背景漸變CSSS3
- css3背景顏色漸變CSSS3
- Dreamweaver中CSS怎麼製作徑向圓形漸變的五種方法CSS
- lightroom中文基礎教程:使用徑向漸變濾鏡調整夕陽OOM
- 利用OpenCV生成關於某點的顏色徑向均勻漸變影象OpenCV
- CSS3 傾斜角度線性漸變CSSS3
- css3實現的文字顏色漸變和漸隱效果CSSS3
- 聊一聊CSS3的漸變——gradientCSSS3
- CSS3漸變方式設定透明度CSSS3
- CSS3背景漸變效果程式碼例項CSSS3
- CSS3文字顏色漸變效果CSSS3
- 10 個輕鬆學會 CSS3 的優秀線上資源CSSS3
- 好程式設計師web前端分享CSS3 漸變程式設計師Web前端CSSS3
- svg和css3建立環形漸變進度條SVGCSSS3
- CSS3 linear-gradient() 線性漸變CSSS3
- CSS3 文字字型顏色動態漸變效果CSSS3
- css3線性漸變簡單程式碼例項CSSS3
- 用 CSS3 和 JavaScript 製作徑向動畫選單CSSS3JavaScript動畫
- Swift 返回一個漸變的 UIImageViewSwiftUIView
- css3實現的具有漸變效果的選項卡功能CSSS3
- css3實現的漸變線交錯程式碼例項CSSS3
- html5 學習--漸變的使用HTML