摘要:分為線性漸變和徑向漸變。而我們今天主要是通過一個小例子來針對線性漸變來剖析其具體的用法。今天的例子就是用的線性漸變制作一個大致的針孔注射器。第一個參數表示線性漸變的方向,是從上到下是從左到右,如果定義成,那就是從左上角到右下角。
CSS3 Gradient 分為 linear-gradient(線性漸變)和 radial-gradient(徑向漸變)。而我們今天主要是通過一個小例子來針對線性漸變來剖析其具體的用法。
今天的例子就是用CSS3 的線性漸變制作一個大致的針孔注射器。
首先來看一下最終效果,例子比較簡單,主要應用到的就是CSS3里的 linear-gradient。
http://jsbin.com/vecujedubu/edit?output
看完Demo,我們首先來看一下HTML結構。
CSS 部分
.injector_wrap{ width: 200px; margin: 120px auto 0; } .injector__box{ background: -webkit-linear-gradient(45deg ,#ccc,#ecf0f1,#CCC); background : -webkit-gradient(linear,left center,right center, from(#ccc) , color-stop(0.5,#ecf0f1) , to(#CCC) ); width: 40px; height: 180px; position: relative; } .injector__box::before{ position: absolute; content: " "; left: 15px; width: 10px; height: 30px; background: -webkit-linear-gradient(left ,#ccc,#ecf0f1,#CCC); background : -webkit-gradient(linear,left center,right center,from(#ccc),color-stop(0.5,#ecf0f1),to(#ccc)); bottom: 100%; } .water{ width: 100%; position: absolute; top: 0; bottom: 20px; background-color: #62d2e2; } .water::before{ position: absolute; content: " "; width: 10px; background-color: #62d2e2; top: -30px; height: 30px; left: 15px; } .injector__hat{ transition: all ease 0.6s ; position: absolute; width: 100%; height: 20px; background: -webkit-linear-gradient(left ,#282E33,#5D5D5D,#282E33); background:-webkit-gradient(linear,left center,right center,from(#282e33), color-stop(0.5,#5d5d5d), to(#282e33)); bottom: 0px; -webkit-animation: autoPushWater 3s linear 0s infinite; -o-animation: autoPushWater 3s linear 0s infinite; animation: autoPushWater 3s linear 0s infinite; } .injector__hat::before{ position: absolute; content: " "; width: 0; height: 0; border-left : 20px dashed transparent; border-right : 20px dashed transparent; border-bottom : 15px solid #2c3e50; bottom: 100%; } .injector__handle{ position: absolute; content: " "; left: 10px; width: 20px; height: 180px; background-color: #c0392b; background:-webkit-gradient(linear,left center,right center, from(#80261c),color-stop(0.5,#c0392b), to(#420600)); background: -webkit-linear-gradient(left ,#80261C,#c0392b,#420600); top: 100%; } .injector__handle::after{ position: absolute; content: " "; left: -20px; width: 60px; height: 4px; background:-webkit-gradient(linear,left center,right center,from(#80261c), color-stop(0.5,#c0392b), to(#420600)); background: -webkit-linear-gradient(left ,#80261C,#c0392b,#420600); top: 100%; } @-webkit-keyframes autoPushWater { from {bottom: 0 } 50%{bottom:144px;} to {bottom: 0px; } } @-o-keyframes autoPushWater { from {bottom: 0 } 50%{bottom:144px;} to {bottom: 0px; } } @-moz-keyframes autoPushWater { from {bottom: 0 } 50%{bottom:144px;} to {bottom: 0px; } } @keyframes autoPushWater { from {bottom: 0 } 50%{bottom:144px;} to {bottom: 0px; } }
CSS部分其實也蠻簡單的,其他部分不說了,相信都可以看懂是什么意思、有什么用。我們就把這次的核心內容linear-gradient 拿出來多帶帶分析一下。
細心的小伙伴應該會發現,在CSS中linear-gradient 出現了兩種方式,都是webkit前綴的。其實兩者都是Webkit內核對于linear-gradient的實現,只不過一個是早期實現-webkit-gradient,一個是修改后的參照標準的實現-webkit-linear-gradient。
首先我們來分析一下早期實現-webkit-gradient.
-webkit-gradient(linear,left center,right center,from(#80261c), color-stop(0.5,#c0392b), to(#420600)); // 原始語法 -webkit-gradient(, [, ]?, [, ]? [, ]*) //老式語法書寫規則
-webkit-gradient 是 webkit 引擎對漸變的實現參數,一共有五個。
第一個參數表示漸變類型(type),可以是 linear(線性漸變)或者 radial(徑向漸變)。
第二個參數和第三個參數,都是一對值,分別表示漸變起點和終點。這對值可以用坐標形式表示,也可以用關鍵值表示,比如 left top(左上角)和left bottom(左下角)。
第四個和第五個參數,分別是兩個color-stop函數。color-stop 函數接受兩個參數,第一個表示漸變的位置,0為起點,0.5為中點,1為結束點;第二個表示該點的顏色。
如果color-stop第一個參數是0或者1的話,那么可以使用from或者to來代替,from、to 只有1個參數——色值。from(hex) 效果上等于 color-stop(0,hex),而 to(hex) 等同于 color-stop(1,hex)。
所以上面例子中的代碼可以修改為。
-webkit-gradient(linear,left center,right center,color-stop(0,#80261c), color-stop(0.5,#c0392b), color-stop(1,#420600)); -webkit-gradient(linear,left center,right center,from(#80261c), color-stop(0.5,#c0392b), to(#420600));
在WebKit的-webkit-linear-gradient()中不能同時設置位置和角度。可以通過設置顏色中間點達到相同的效果。即如果設置了 left top 和 漸變軸角度的話會導致CSS解析錯誤,無法達到預期效果。
接下來是Webkit按照標準實現的漸變-webkit-linear-gradient。
-webkit-linear-gradient(left,#80261C,#c0392b,#420600); // 原始語法 -webkit-linear-gradient([|| ,]? , [, ]);
-webkit-linear-gradient 有三個參數。
第一個參數表示線性漸變的方向,top 是從上到下、left 是從左到右,如果定義成 left top,那就是從左上角到右下角。
第二個和第三個參數分別是起點顏色和終點顏色。你還可以在它們之間插入更多的參數,表示多種顏色的漸變。
在標準實現中,取消了from、to、color-stop等函數,開發人員只需定義漸變起點或者漸變軸角度以及漸變的色值即可實現漸變。
注意:漸變起點和漸變軸角度不可同時設置,這樣會引起CSS解析錯誤,無法達到預期效果。
戚戚然不知所言,到這里算是收尾了。本篇算是個不折不扣的標題黨,并沒有去分析FF、Opera以及IE下的CSS漸變實現。截至目前為止,FF、Opera的實現和Webkit的新版實現基本保持一致,唯一的問題則是IE,歷史版本和新版本的IE各有其實現,有興趣的話可以去查找相關資料學習參考一下。
參考資料:
linear-gradient
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/115291.html
摘要:屬性值則依賴于我們需要創建什么樣的漸變背景,例如線性漸變或放射性漸變。我們會在線性漸變中介紹不同種類的供應商前綴,但為了簡便起見,放射性漸變中我們不會再提及。線性漸變多年來,設計師和開發者們都是通過切圖來實現漸變背景。 背景對網站的設計有重大的影響。它有利于建立網站的整體感覺,設置分組,分配優先級,對網站的可用性也有相當大的影響。 在CSS中,元素的背景可以是一個純色,一張圖,一個漸變...
摘要:屬性值則依賴于我們需要創建什么樣的漸變背景,例如線性漸變或放射性漸變。我們會在線性漸變中介紹不同種類的供應商前綴,但為了簡便起見,放射性漸變中我們不會再提及。線性漸變多年來,設計師和開發者們都是通過切圖來實現漸變背景。 背景對網站的設計有重大的影響。它有利于建立網站的整體感覺,設置分組,分配優先級,對網站的可用性也有相當大的影響。 在CSS中,元素的背景可以是一個純色,一張圖,一個漸變...
閱讀 1587·2021-11-22 15:33
閱讀 1728·2021-11-15 18:01
閱讀 664·2021-10-09 09:43
閱讀 2604·2021-09-22 16:03
閱讀 758·2021-09-03 10:28
閱讀 3550·2021-08-11 10:22
閱讀 2718·2019-08-30 15:54
閱讀 1761·2019-08-30 14:21