【CSS】漸變背景(background-image)

微信訂閱號(hào):Rabbit_svip


以前共缕,我們要實(shí)現(xiàn)這種漸變洗出,可能要用 Photoshop 或 Fireworks 創(chuàng)建一個(gè)漸變圖形,然后使用 background-image 屬性把漸變圖形放在元素的背景中图谷。

現(xiàn)在翩活,CSS支持漸變背景阱洪,可以理解為Web瀏覽器即時(shí)創(chuàng)建的圖像。所以菠镇,漸變也使用常規(guī)的 background-image 屬性創(chuàng)建

微信訂閱號(hào):Rabbit_svip



線性漸變

background-image: linear-gradient( 角度 , 顏色);

線性漸變是最基本的漸變類型冗荸。這種漸變在一條直線上從一個(gè)顏色過渡到另一個(gè)顏色。

微信訂閱號(hào):Rabbit_svip

這條直線的方向由角度指定利耍,或者在關(guān)鍵字 to 后面加上 top蚌本、bottom、right隘梨、left 中的某一個(gè)關(guān)鍵字或多個(gè)關(guān)鍵字程癌,例如 to bottom left。

如上圖例子
CSS代碼:

body {
    background-image: linear-gradient(to right , #7A88FF, #7AFFAF);
}


如果漸變是從元素上邊的紫色過度到下邊的綠色轴猎,要使用 to bottom 關(guān)鍵字嵌莉。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: linear-gradient(to bottom , #7A88FF, #7AFFAF);
}


另外,還可以用 to bottom right 這樣的關(guān)鍵字指定漸變的角度税稼。使?jié)u變從元素的左上角開始烦秩,到元素的右下角結(jié)束。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: linear-gradient(to bottom right, #7A88FF, #7AFFAF);
}


過渡所用的顏色可以使用CSS中任何一種顏色值郎仆,可參考【CSS】著色與透明

漸變方向也不局限于只能使用關(guān)鍵字只祠,還可以使用角度值指定漸變的方向。

角度值的寫法:
在0~360之間的數(shù)字后面加上deg扰肌,指定過渡在哪個(gè)方向結(jié)束抛寝。

例如, 0deg 表示元素的頂邊曙旭,所以過渡從底邊開始盗舰,到頂邊結(jié)束。

也就是說桂躏,
background-image: linear-gradient(to top, #7A88FF, #7AFFAF);
等價(jià)于:
background-image:linear-gradient(0deg, #7A88FF, #7AFFAF);

角度的值按順時(shí)針方向旋轉(zhuǎn)钻趋,因此,90deg 表示元素的右邊(與 to right 相同)剂习,180deg 表示元素的底邊(與 to bottom 相同)蛮位,270deg 表示元素的左邊(與 to left 相同)。

使用角度值時(shí)鳞绕,瀏覽器會(huì)繪制一條經(jīng)過元素中心點(diǎn)的假象線失仁。指定的角度就是這條線的角度,同時(shí)還指明過度在哪里結(jié)束们何。


微信訂閱號(hào):Rabbit_svip

CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body{
    background-image: linear-gradient(45deg, #7A88FF, #7AFFAF);
}

瀏覽器會(huì)繪制一條經(jīng)過元素中心點(diǎn)的假想線萄焦,指向45°刻度,因此冤竹,這個(gè)過渡從元素的左下角開始拂封,到右上角結(jié)束茬射。

這里推薦一個(gè)很好玩的網(wǎng)站:
https://codepen.io/thebabydino/full/qgoBL



色標(biāo)

可以根據(jù)需求添加任意多個(gè)顏色。額外添加的顏色叫色標(biāo)(color stop)烘苹。懂PS的對(duì)色標(biāo)就更容易理解了躲株。
微信訂閱號(hào):Rabbit_svip

添加色標(biāo)后片部,背景會(huì)從第一個(gè)顏色過渡到第二個(gè)顏色镣衡,再從第二個(gè)顏色過渡到第三個(gè)顏色,直到漸變的最后一個(gè)顏色為止档悠。

添加色標(biāo):
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body{
    background-image: linear-gradient(to right, black, white, black);
}
微信訂閱號(hào):Rabbit_svip

瀏覽器會(huì)平均分布各個(gè)顏色廊鸥。

最后,還可以在顏色后面再加一個(gè)值辖所,明確指明各色標(biāo)的位置惰说。

微信訂閱號(hào):Rabbit_svip

上圖的CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: linear-gradient(to right, #E94E65, #15A892 20%, #A89215 80%, #1574A8);
}

背景色從左到右開始漸變,最左邊是玫紅缘回,在元素寬度20%的位置變成青色吆视,80%的位置變成黃色,最后是藍(lán)色酥宴。

色標(biāo)的位置不一定要用百分比啦吧,也可以用像素或者em值。不過百分比是最靈活的拙寡,會(huì)隨著元素的寬度或高度而變化授滓。

使用多色漸變時(shí),第一個(gè)顏色和最后一個(gè)顏色無需指定位置肆糕,因?yàn)闉g覽器會(huì)嘉定第一個(gè)顏色從0%的位置開始般堆,最后一個(gè)顏色在100%的位置結(jié)束。
除非想把第一個(gè)顏色或最后一個(gè)顏色的位置放在指定的位置開始诚啃,才需要專門定位淮摔。

如:
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: linear-gradient(to right, #E94E65 20%, #15A892 40%, #A89215 60%, #1574A8 80%);
}
微信訂閱號(hào):Rabbit_svip

第一個(gè)顏色值(#E94E65)也有位置值(20%)。因此始赎,元素橫向前20%寬度的背景色是純粉紅色和橙。從20%的位置開始才由粉紅色變成青色。直到40%的位置完全結(jié)束粉紅色极阅。

此外胃碾,因?yàn)樵乜梢杂卸鄠€(gè)背景圖,所以也能有多個(gè)漸變背景筋搏。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: 
        linear-gradient(to bottom, cyan, transparent),
    linear-gradient(225deg, magenta, transparent),
    linear-gradient(45deg, yellow, transparent);
}

【CSS】同時(shí)使用多個(gè)背景圖這個(gè)筆記的最后有記到仆百,使用多個(gè)背景圖時(shí),最先用到的背景圖會(huì)在最上層奔脐。



IE的支持程度

IE9及之前的版本都不支持漸變俄周。如果一定要使用漸變吁讨,要為IE9及之前的版本提供后備顏色。

CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-color: #FC0;
    background-image: linear-gradient(to bottom, #900, #FC0, #900);
}

IE9會(huì)應(yīng)用指定的背景色峦朗,因?yàn)椴恢С志€性漸變建丧,會(huì)跳過第二個(gè)聲明。其他瀏覽器會(huì)應(yīng)用背景色波势,還會(huì)創(chuàng)建漸變翎朱,漸變會(huì)覆蓋背景色。

如果使用的是RGBA顏色(RGBA顏色可見【CSS】著色與透明筆記)尺铣,設(shè)置了一定程度的透明度拴曲,且不想透過漸變看到背景色。此時(shí)可以使用簡寫的 background 屬性凛忿,覆蓋 background-color 屬性(這是簡寫的background屬性的一個(gè)比較怪異的行為澈灼,可見【CSS】背景基礎(chǔ)知識(shí)簡寫部分)。所以可以這樣寫店溢。

CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-color: #FC0;
    background: linear-gradient(to bottom, rgba(153, 0, 0, .5), #FC0, rgba(153, 0, 0, .5));
}



平鋪的線性漸變

background-image: repeating-linear-gradient();


平鋪的線性漸變其實(shí)就是在普通的漸變基礎(chǔ)上多了一個(gè)重復(fù)的效果叁熔。
平鋪的線性漸變定位色標(biāo)用的是像素值或者em值,這里百分比不是很好用床牧,至少我理解起來比較費(fèi)勁荣回。

先看效果圖

微信訂閱號(hào):Rabbit_svip

例1 CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: repeating-linear-gradient(45deg, #66CC99 20px, #6666CC 30px, #66CC99 40px);
}

上面例1中,定義了漸變的角度叠赦,瀏覽器從左下角開始繪制漸變驹马,前20像素是綠色,此后直至30像素的位置過渡到紫色除秀,然后直至40像素的位置再過渡到綠色糯累。繪制完這個(gè)漸變后,瀏覽器會(huì)像平鋪圖像那樣把這個(gè)漸變鋪滿整個(gè)背景册踩。


例2 CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: repeating-linear-gradient(45deg, #66CC99 20px, #6666CC 20px, #6666CC 30px, #66CC99 30px, #66CC99 40px);
}
微信訂閱號(hào):Rabbit_svip

注意例2中對(duì)色標(biāo)的定位泳姐。這樣設(shè)置色標(biāo)的位置,可以控制不同顏色在過渡中的強(qiáng)度暂吉。使得各個(gè)顏色過渡之間的邊界變得清晰胖秒,形成條紋效果。



徑向漸變

background-image: radial-gradient();


徑向漸變就是沿著圓周或者橢圓周向外擴(kuò)散的漸變慕的。

CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(#99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip

上述代碼會(huì)在元素的顯示范圍內(nèi)創(chuàng)建一個(gè)橢圓形阎肝,把漸變的中心點(diǎn)(綠色)放在元素的中心上。

我們還可以在顏色值前面加上 circle 關(guān)鍵字肮街,創(chuàng)建圓形的漸變风题。

CSS代碼:

html, body {
   width: 100%;
   height: 100%;
}
body {
   background-image: radial-gradient(circle,#99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip



設(shè)置徑向漸變的中心點(diǎn)

可以用關(guān)鍵字 at 后面加上 background-position 屬性支持的定位關(guān)鍵字和數(shù)值,指定漸變中心的位置。
例如↓
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(circle at 20% 20%, #99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip

就把中心點(diǎn)設(shè)置在元素的左上方(20% 20%)沛硅。



closest-side:告訴瀏覽器從中心點(diǎn)向外擴(kuò)展?jié)u變眼刃,到離中心點(diǎn)最近的一邊結(jié)束。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(closest-side at 20% 20%, #99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip




closest-corner:以離漸變中心點(diǎn)最近的元素頂角計(jì)算漸變的范圍摇肌。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(closest-corner at 20% 20%, #99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip




farthest-side:以離漸變中心點(diǎn)最遠(yuǎn)的那一邊計(jì)算圓的半徑擂红。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(farthest-side at 20% 20%, #99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip




farthest-corner:以離漸變中心點(diǎn)最遠(yuǎn)的頂角計(jì)算圓的半徑。
CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(farthest-corner at 20% 20%, #99CCCC, #7171B7);
}
微信訂閱號(hào):Rabbit_svip



色標(biāo)

和線性漸變一樣围小,徑向漸變也可以使用多個(gè)色標(biāo)昵骤。而且能設(shè)定各個(gè)色標(biāo)的位置。

CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: radial-gradient(circle at 20% 40%,#99CCCC 20%, #7171B7 40%, #CCCC99 60%, #4F9C9C 80%);
}
微信訂閱號(hào):Rabbit_svip

設(shè)置顏色時(shí)吩抓,可以使用任何有效的CSS顏色值涉茧。可參考【CSS】著色與透明



IE的兼容性

與線性漸變一樣疹娶,IE9及之前的版本都不支持徑向漸變,解決方法和線性漸變一樣伦连。



平鋪的徑向漸變

background-image: repeating-radial-gradient();


原理和前面講到平鋪的線性漸變一樣雨饺。
例1 CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: repeating-radial-gradient(circle at 20% 40%,#99CCCC 20px, #7171B7 40px, #CCCC99 60px, #4F9C9C 80px, #99CCCC 100px);
}
微信訂閱號(hào):Rabbit_svip

例2 CSS代碼:

html, body {
    width: 100%;
    height: 100%;
}
body {
    background-image: repeating-radial-gradient(circle at 20% 40%,#99CCCC 20px, #7171B7 20px, #7171B7 40px, #CCCC99 40px, #CCCC99 60px, #4F9C9C 60px, #4F9C9C 80px, #99CCCC 80px, #99CCCC 100px);
}
微信訂閱號(hào):Rabbit_svip

注意:
為了讓平鋪的徑向漸變看起來比較流暢,結(jié)束顏色應(yīng)該與起始顏色相同惑淳。這樣能讓顏色自然地回歸最初的顏色额港。




因?yàn)閃eb瀏覽器會(huì)把線性漸變和徑向漸變當(dāng)成背景圖,所以可以使用控制背景圖的其他屬性歧焦,比如background-size移斩、background-position等。




HTML與CSS 目錄:HTML與CSS

上一篇:【CSS】同時(shí)使用多個(gè)背景圖

下一篇:【CSS】圓角(border-radius)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绢馍,一起剝皮案震驚了整個(gè)濱河市向瓷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舰涌,老刑警劉巖猖任,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓷耙,居然都是意外死亡朱躺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門搁痛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來长搀,“玉大人,你說我怎么就攤上這事鸡典≡辞耄” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巢钓。 經(jīng)常有香客問我病苗,道長,這世上最難降的妖魔是什么症汹? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任硫朦,我火速辦了婚禮,結(jié)果婚禮上背镇,老公的妹妹穿的比我還像新娘咬展。我一直安慰自己,他們只是感情好瞒斩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布破婆。 她就那樣靜靜地躺著,像睡著了一般胸囱。 火紅的嫁衣襯著肌膚如雪祷舀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天烹笔,我揣著相機(jī)與錄音裳扯,去河邊找鬼。 笑死谤职,一個(gè)胖子當(dāng)著我的面吹牛饰豺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播允蜈,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼冤吨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饶套?” 一聲冷哼從身側(cè)響起漩蟆,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凤跑,沒想到半個(gè)月后爆安,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仔引,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年扔仓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咖耘。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翘簇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出儿倒,到底是詐尸還是另有隱情版保,我是刑警寧澤呜笑,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站彻犁,受9級(jí)特大地震影響叫胁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汞幢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一驼鹅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧森篷,春花似錦输钩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钓辆,卻和暖如春剪验,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岩馍。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工碉咆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛀恩。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓茂浮,卻偏偏與公主長得像双谆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子席揽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在用CSS實(shí)現(xiàn)等效中顽馋,經(jīng)常會(huì)用到漸變,所以幌羞,本篇就研究一下漸變的特性寸谜; 在CSS中,漸變并不是作為CSS中的一個(gè)屬...
    科研者閱讀 673評(píng)論 0 3
  • CSS格式化排版 文字排版 —— 字體 我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體、字號(hào)乾巧、顏色等樣式屬性,比如b...
    _空空閱讀 1,395評(píng)論 0 1
  • 前言 重拾css后的文章咳胃,在觀看了慕課網(wǎng)上的視頻《重拾CSS的樂趣》中,看到了一些有意思的css效果旷太。想起當(dāng)初自己...
    destiny0904閱讀 1,720評(píng)論 0 0
  • 1、屬性選擇器:id選擇器 # 通過id 來選擇類名選擇器 . 通過類名來選擇屬性選擇器 ...
    Yuann閱讀 1,637評(píng)論 0 7
  • 結(jié)婚五年多了演顾,從戀愛開始便和老公隔著一個(gè)小時(shí)車程的距離葛虐,同在一座城屿脐,卻依然異地,是典型的周末夫妻愧捕。因?yàn)?..
    靜夜香閱讀 364評(píng)論 0 3