如果網頁只有一種顏色,那是非??膳碌?,顏色的設置豐富了網頁,就如同多彩繽紛的世界。
在了解css顏色之前,我們回顧下計算機是如何顯示顏色的?計算機根據色光三原色的原理通過各種算法來顯示顏色。
網頁中使用顏色關鍵字、16進制字符、rgb、rgba等表示紅,綠,藍三種顏色混合色,如下示例,幾種寫法都是指同一個顏色(紅色):
color:red;
color: #ff0000;
color: rgb(255,0,0)
color: rgba(255,0,0,1)
對于16進制形式,每2位表示一個顏色,從左到右分別是紅、綠、藍,每種顏色取值從00 到 FF。
如下示例:
color: #000000; /*黑色*/
color: #ffffff; /*白色*/
color: #ff0000; /*紅色*/
color: #00ff00; /*綠色*/
color: #0000ff; /*藍色*/
對于rgb的表示法,由三個參數組成,分別是紅、綠、藍,每種顏色取值從0 到 255。
如下示例:
color: rgb(0,0,0); /*黑色*/
color: rgb(255,255,255); /*白色*/
color: rgb(255,0,0); /*紅色*/
color: rgb(0,255,0); /*綠色*/
color: rgb(0,0,255); /*藍色*/
紅,綠,藍值從0到255的結合,給出了總額超過1600多萬不同的顏色(256 × 256 ×256)。
但是現代大多數顯示器能夠顯示至少16384種顏色。所以在使用顏色時要格外注意,避免設置不能夠顯示的顏色,可以參考網頁安全色:https://www.w3school.com.cn/cssref/css_colors.asp。
顏色除了有三原色紅綠藍組成,還有亮度層級,如下圖:
rgba 中的a是指透明度,這個是css3新增加的屬性,通過rgba可以設置更加漂亮的顏色。
通過background屬性可以設置元素的背景色、背景圖片,語法如下:
background:bg-color bg-image position/bg-size bg-repeat bg-origin bg-clip bg-attachment initial|inherit;
background 在一個聲明中設置所有的背景屬性,可以在這里設置如下屬性:
各值之間用空格分隔,不分先后順序??梢灾挥衅渲械哪承┲担?background:#FF0000 url(img.png)是允許的,但至少有一個值。
建議使用background 簡寫屬性,這樣可以更好地兼容較老的瀏覽器,少寫很多代碼,當然你也可以分開使用,比如:
background-color: #ff0000;
background-image: url(img.png);
background-repeat: no-repeat;
background-size: 100% auto;
1、背景顏色 —— background-color
background-color 和之前講的的color 一樣,可以使用16進制、rgb、rgba等設置顏色。如下實例:
<html>
<head>
<style type="text/css">
body {background-color: yellow}
h1 {background-color: #00ff00}
h2 {background-color: transparent}
p {background-color: rgb(250,0,255)}
p.no2 {background-color: gray; padding: 20px;}
</style>
</head>
<body>
<h1>背景色1</h1>
<h2>背景色2</h2>
<p>背景色3</p>
<p class="no2">背景色4</p>
</body>
</html>
如下圖顯示:
注意:background-color: transparent; 指透明色,不顯示任何顏色。
2、背景圖片的使用——background-image
給html元素添加背景圖片,在早期網頁制作中被廣泛應用,如今已不建議大量使用。如下實例:
body {background-image:url(/static/bg.gif);}
這里使用了一個125*125大小的圖片,如下:
但是你會發現,整個網頁鋪滿了圖片,上面的代碼默認會鋪滿整個頁面從左到右,從上到下 。如果不想被平鋪,可以使用background-repeat 設置。
背景圖片同時可以設置多個背景圖片,如下:
background-image: url(/statics/bg1.gif), url(/statics/bg2.gif);
多個圖像以逗號隔開,在頁面中多個圖片會疊加顯示,第一張圖片顯示在最頂端。
如下效果:
3、背景重復方式 —— background-repeat
它有如下幾個屬性:
repeat | 默認。背景圖像將在垂直方向和水平方向重復。 |
repeat-x | 背景圖像將在水平方向重復。 |
repeat-y | 背景圖像將在垂直方向重復。 |
no-repeat | 背景圖像不重復。 |
inherit | 從父元素繼承 background-repeat 屬性的設置。 |
實例如下:
4、背景圖的位置 —— background-position
背景圖片默認顯示在左上角,語法如下:
background-position: x y; // x 距離左邊距離,y距離頂部距離
如果要改變它的位置,可以使用關鍵字:top、bottom、left、right 和 center;或者使用長度值,如 100px 或 5cm;也可以使用百分數值。
x 可以取值 百分比| 數值| left | center | right。
y 可以取值 百分比| 數值| top| center | bottom。
當只設置一個值的時候,另一個會缺省為 center。
使用關鍵字,將背景圖片水平居中,垂直居中:
background-image:url('/statics/images/course/smiley.gif');
background-repeat:no-repeat;
background-attachment:fixed;
background-position:center;
使用百分比%:
background-image:url('/statics/images/course/smiley.gif');
background-repeat:no-repeat;
background-attachment:fixed;
background-position: 50% 50%;
50% 50% 等同于 center center,顯示效果和上圖一樣。
還可以使用具體數值,比如 px、em、cm等。
background-image:url('/statics/images/course/smiley.gif');
background-repeat:no-repeat;
background-attachment:fixed;
background-position: 50px 50px;
顯示效果如下:
5、背景圖相對于容器的基準點 —— background-origin
就是設置背景圖片相對于html元素什么位置作為初始坐標點,語法:
background-origin: padding-box|border-box|content-box;
幾種值得含義:
padding-box | 背景圖像相對填充框的位置 |
border-box | 背景圖像相對邊界框的位置 |
content-box | 背景圖像相對內容框的位置 |
如下實例:
6、背景圖片大小 —— background-size
默認會顯示背景圖原始尺寸,可以通過此屬性設置背景圖片在元素上的大小,語法:
background-size: width height;
寬度和高度可以使用 數值、百分比%、cover 及 contain ;
數值:可以使用任何單位的數字,比如 px、em、cm等。如果設置一個值,第二個為"auto(自動)"。
百分比%:相對于其所在html原始寬度和高度,如果設置一個值,第二個為"auto(自動)"。
cover:把背景圖像擴展至足夠大,以使背景圖像完全覆蓋背景區域。背景圖像的某些部分也許無法顯示在背景定位區域中。
contain:把背景圖像擴展至最大尺寸,以使其寬度和高度完全適應內容區域。
如下示例:
7、背景圖像是否固定或者隨著頁面的其余部分滾動
background-attachment 屬性有以下幾個值:
scroll | 背景圖片隨頁面的其余部分滾動。這是默認 |
fixed | 背景圖像是固定的 |
inherit | 指定background-attachment的設置應該從父元素繼承 |
local | 背景圖片隨滾動元素滾動 |
如設置一個固定的背景圖片,不跟隨頁面滾動:
background-attachment:fixed;
滾動滾動條,會發下背景圖片始終固定在屏幕那個位置。
8、背景繪制區域 —— background-clip
語法如下:
background-clip: border-box|padding-box|content-box;
border-box | 默認值。背景繪制在邊框方框內(剪切成邊框方框)。 |
padding-box | 背景繪制在襯距方框內(剪切成襯距方框)。 |
content-box | 背景繪制在內容方框內(剪切成內容方框)。 |
這個屬性類似于 background-origin ,只不過它會裁剪背景圖片,如下示例:
9、背景層的混合模式 —— background-blend-mode
所謂混合模式就是將圖片與顏色或圖片與圖片進行混合,語法:
background-blend-mode: normal|multiply|screen|overlay|darken|lighten|color-dodge|saturation|color|luminosity;
屬性值:
示例如下:
正常模式
luminosity 亮度模式
color 顏色模式
其它模式可以自己試試,看下有什么區別。
到此,我們了解了顏色和背景的使用方法,尤其是背景的使用,由于它的屬性很多,可以簡寫也可以分開寫,要想完全掌握,還得多練習,每種屬性進行組合使用看看其效果。
一般建議使用 background 簡寫方式,主要是可以少寫很多代碼。以上介紹難免有誤,或不齊全,歡迎指出錯誤,并補充。
上篇:前端入門——css鏈接樣式
望收藏了我寫的文章的你同時可以關注一下“小海前端”,因為這些文章都是連載的,并且是經過我系統的歸納過的。
【技術等級】初級
【承接文章】《在CSS中使用background屬性,調整頁面和塊背景,系統講解背景屬性》
本文承接上一篇文章中所講到的background屬性,通過幾個簡單實用的小例子,學些背景效果的各種實現方式。本文屬于前端開發的初級教程,適合于剛剛開始接觸CSS技術的學習者。
所承接的上一篇文章中,主要介紹了下列背景屬性:
background-color
background-image
background-repeat
background-position
background-attachment
本文在上一篇文章的基礎上,復習和鞏固這五個屬性的具體用法。
首先制作一張水印效果的圖片。該圖片的內容透明度較低,圖片較小。本例中制作了一個寬度為290像素,高度為205像素的圖片。該圖片的文件名為back01.jpg。圖片內容為兩行文本,顏色為黑色,同時調整了兩行文本的不透明度。圖片效果如下所示,大家也可以根據自己喜好利用Photoshop隨意制作。
例1素材圖片 back01.jpg
為頁面添加如下代碼在<head></head>標記對中:
<style type="text/css">
body{background-image:url("back01.jpg");}
</style>
由于圖片本身的尺寸遠遠小于整個頁面的大小,所以在默認情況下,該圖片會在頁面中平鋪以產生下列背景效果。
例1最終效果圖
首先制作一張花邊圖片。該圖片包含一個花邊圖樣,圖片較小。本例中制作了一個寬度為172像素,高度為36像素的圖片。該圖片的文件名為back02.jpg。圖片效果為:
例2 素材圖 back02.jpg
為頁面添加如下代碼在<head></head>標記對中:
<style type="text/css">
body{
background-image:url("back02.jpg");
background-repeat:repeat-x;
}
</style>
由于圖片本身的尺寸遠遠小于整個頁面的大小,同時又設置為水平方向平鋪,所以該圖片會在頁面中產生下列背景效果。
例2最終效果圖
首先制作一張漸變圖片。該圖片包含自上而下的藍白漸變。本例中制作了一個寬度為1像素,高度為200像素的圖片。該圖片的文件名為back03.jpg。圖片效果為:
例3 素材圖片 back03.jpg
為頁面添加如下代碼在<head></head>標記對中:
<style type="text/css">
body{
background-image:url("back03.jpg");
background-repeat:repeat-x;
}
</style>
由于圖片的寬度遠遠小于整個頁面的寬度,同時又設置了水平方向平鋪,所以該圖片該圖片會在頁面中產生下列背景效果。
同時,由于頁面本身的顏色默認為白色,因此,該漸變色下方的白色與頁面背景顏色融合。因此,當頁面過長產生垂直滾動條后,不會影響背景顏色的自然過渡。
那么,若需要給頁面背景添加自上而下的白藍漸變,應該如何設置呢?漸變色下方的藍色與頁面背景無法融合,會產生明顯的藍白邊界。該問題的解決方法是將頁面的背景顏色由默認的白色調整為漸變色下方的顏色即可。代碼如下:
<style type="text/css">
body{
background-image:url("back03.jpg");
background-repeat:repeat-x;
background-color:# 8181fc; //漸變色下方的藍色
}
</style>
首先制作一張可以居中放置的圖片。本例中制作了一個寬度為500像素,高度為500像素的圖片。該圖片的文件名為back04.jpg。圖片效果為:
例4 素材圖片 back04.jpg
實現該效果的代碼如下所示。
<style type="text/css">
body{
background-image:url("back04.jpg"); //加載圖片
background-repeat:no-repeat; //設置不平鋪
background-position:center center; //位置在頁面中心
background-attachment:fixed; //頁面滾動時圖片固定
}
</style>
下一篇文章中,小海老師會帶領大家學習CSS中功能強大的圖片精靈技術(CSS Sprite)。對于渴望在前端開發道路上前進的你一定不能錯過!
如果大家希望得到更加全面的關于HTML和CSS技術講解的內容,可以私信我,我會免費將小海老師自己編寫的HTML和CSS的PDF教材發給你,幫助你在前端開發的道路上闊步前行。
在頭條上發表的這些文章都是從前端開發的基礎開始一步一步講起的。我非常希望能有更多的前端開發初學者通過我寫的文章,逐步學到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學過程中的經驗,每寫一篇時我都盡量把握好措辭,用簡單易懂的語言描述,同時精心設計版面,讓版面更加豐富,激發閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費小海老師很久的時間。
希望收藏了我寫的文章的你同時可以關注一下“小海前端”,因為這些文章都是連載的,并且是經過我系統的歸納過的。
關注“小海前端”,我會繼續為大家奉上更加深入的前端開發文章,也希望更多的初學者跟著學下去,我們共同將前端開發的路努力堅持的走下去。
篇文章結合上一篇所講到的CSS3技術中有關背景的屬性,制作一個實例。小海前端(頭條號)帶領大家一同實現一個漂亮的信紙背景效果。
承接文章:更加強大的背景圖像,CSS3增強的背景效果,前端對背景的優化
技術等級:中級 | 適合有一定的CSS基礎的人士閱讀。
希望收藏了這篇文章的你同時也可以關注一下“小海前端”的頭條號,因為這些文章都是連載的,并且是經過系統的歸納和總結的。塌下心來認真閱讀,你一定會學到對你有用的知識。
一、信紙背景實例效果:
本篇文章所實現的信紙背景效果如下圖所示。
信紙背景實例的最終效果圖
首先要明確一點:上圖中看到的除了文字以外的背景部分,并不是一張完整的背景圖片,而是由多個具有透明背景的png圖片利用CSS3的多重背景拼接出來的。
本實例所使用到的素材圖片如下圖所示。
用到的素材圖片
從上圖中可以看出,我們一共使用了六張素材圖片。前五張圖片都是png格式,背景為透明。最后一張圖片是一個紋理jpg圖片,可以隨意設置透明效果的紋理。
left-bottom.png,實現左下角的花邊效果。
left-top.png,實現左上角的花邊效果。
right-bottom.png,實現右下角的花邊效果。
right-top.png實現右上角的花邊效果。
line.png,實現信紙的水平線格子效果
wenli.jpg,實現信紙的背景紋理效果。
跟著小海前端(頭條號)學的小伙伴們,可以自行在網上搜索圖片,利用Photoshop制作成素材的樣子,大家可以發揮自己的設計頭腦,制作出各種不同的信紙效果。
二、頁面布局:
這個實例的頁面布局非常簡單,制作一個<div></div>標記對作為容器,并將該容器的id屬性的取值設置為mail。然后在容器內部放置<h1></h1>標記對作為標題,信件的正文使用<p></p>標記對進行包裹即可。
HTML代碼結構如下所示。
<div id="mail">
<h1>古埃及的金字塔</h1>
<p>信件的正文</p>
</div>
三、利用CSS設置#mail的常規屬性:
為了便于查看,可以設置#mail的CSS樣式。設置該容器的寬度為400像素,高度為600像素。并設置容器在頁面內居中顯示。將容器的填充寬度設置為50像素,并在容器外部添加一個10像素的深紅色邊框線。
最后調整內部文字的CSS樣式。包括文字的字號設置為14像素,首行縮進為28像素,行高為27像素。當然也可以根據水平線格子的間隔高度自行調整上述參數。
CSS代碼如下所示。
#mail{
width:400px; height:600px;
margin:0 auto;
padding:50px;
border:solid 10px rgba(132,26,26,0.8);
font-size: 14px;
line-height: 27px;
text-indent: 28px;
}
四、加載背景圖片:
接下來我們要為#mail加載背景圖片,這需要將素材圖片中準備的所有png圖片和wenli.jpg圖片全部加載到該容器中作為背景。
CSS3中的background-image已經支持多背景圖片的功能,只需要將多個圖片的url()路徑之間利用逗號隔開即可。一定要注意:必須是逗號進行間隔。
CSS代碼如下所示。
background-image: url(../images/line.png),
url(../images/left-top.png),
url(../images/left-bottom.png),
url(../images/right-top.png),
url(../images/right-bottom.png),
url(../images/wenli.jpg);
五、設置多背景圖片的背景屬性:
下一步需要設置多背景圖片的其他背景屬性。這需要根據background-image屬性加載背景圖片的順序來完成其他背景屬性的設置。
這里需要注意,上一步的代碼中顯示,第一個加載的是水平線格子圖片line.png,接下來一次加載的是左上角花邊、左下角花邊、右上角花邊、右下角花邊,最后是紋理圖片wenli.jpg。
1、設置背景圖片的平鋪方式:
我們知道:第一個加載的水平線格子圖片應該平鋪;四個方向角的花邊圖片不應該平鋪;紋理圖片應該平鋪。
因此根據背景圖片的加載順序可以書寫成如下格式:
background-repeat: repeat,no-repeat,no-repeat,no-repeat,no-repeat,repeat;
大家仔細觀察,所有的平鋪取值都是使用逗號隔開的,而且共有6個平鋪取值,正好對應background-image屬性中加載的六張圖片的順序。
2、設置背景圖片的定位:
這里使用background-position屬性來設置背景圖片的定位。
第一個加載的水平線格子圖片因為平鋪,所以位置可以從容器的左上角就開始顯示。因此取值為left top。
左上角花邊應該顯示在左上角,即left top。
左下角花邊應該顯示在左下角,即left bottom。
右上角花邊應該顯示在右上角,即right top。
右下角花邊應該顯示在右下角,即right bottom。
最后一個加載的紋理圖片因為也平鋪,所以也從左上角開始顯示。
CSS代碼如下所示:
background-position: left top,left top,left bottom,right top,right bottom,left top;
3、設置圖片的大小:
這里可以根據背景圖片本身的大小進行適當的縮放。
CSS代碼如下所示:
background-size: 50px,20%,20%,20%,20%,50px;
屬性background-size原本需要指定兩個數值來表示寬度和高度的大小變化。若只指定了一個數值,則寬度和高度均采用該數值來對圖片進行縮放。
4、設置圖片顯示的原點坐標:
這里只有水平線格子圖片和紋理圖片的顯示需要調整原點坐標。
水平線格子只出現在由文本內容的部分,因此設置為content-box,從文本區域開始顯示。
紋理圖片可以設置為padding-box,即從填充區域開始顯示。
其他圖片都設置為border-box,即從邊框開始顯示。
CSS代碼如下所示。
background-origin: content-box,border-box,border-box,border-box,border-box,padding-box;
5、設置圖片的顯示區域:
每張圖片的顯示區域都從所設置的原點坐標就開始顯示,因此取值與原點坐標的取值是相同的。
CSS代碼如下所示。
background-clip: content-box,border-box,border-box,border-box,border-box,padding-box;
六、整個實例的完整CSS代碼:
本篇文章帶領大家所制作的信紙背景效果的完整CSS代碼如下圖所示。
完整的CSS代碼
在頭條上發表的這些文章都是從前端開發的基礎開始一步一步講起的。我非常希望能有更多的前端開發初學者通過我寫的文章,逐步學到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學過程中的經驗,每寫一篇時我都盡量把握好措辭,用簡單易懂的語言描述,同時精心設計版面,讓版面更加豐富,激發閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費小海老師很久的時間。
希望收藏了這篇文章的你同時也可以關注一下“小海前端”的頭條號,因為這些文章都是連載的,并且是經過系統的歸納和總結的。塌下心來認真閱讀,你一定會學到對你有用的知識。
關注“小海前端”,我會繼續為大家奉上更加深入的前端開發文章,也希望更多的初學者跟著學下去,我們共同將前端開發的路努力堅持的走下去。
下一篇文章中,小海前端(頭條號)會為小伙伴們繼續介紹CSS3新增的屬性值。下一篇文章介紹CSS3的邊框屬性功能。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。