CSS基礎(chǔ)
本文包括
- CSS基礎(chǔ)知識(shí)
- 選擇器(重要?。。。?/li>
- 繼承、特殊性、層疊、重要性
- CSS格式化排版
- 單位和值
- 盒模型
- 浮動(dòng)
- 相對(duì)定位與絕對(duì)定位
- 布局初探
CSS基礎(chǔ)知識(shí)
認(rèn)識(shí)CSS樣式
- CSS全稱為“層疊樣式表 (Cascading Style Sheets)”,它主要是用于定義HTML內(nèi)容在瀏覽器內(nèi)的顯示樣式,如文字大小、顏色、字體加粗等。
如下列代碼:
<head>
<style type="text/css">
p{
font-size:20px;/設(shè)置文字字號(hào)/
color:red;/設(shè)置文字顏色/
font-weight:bold;/設(shè)置字體加粗/
}
</style>
...
</head> - 使用CSS樣式的一個(gè)好處是通過(guò)定義某個(gè)樣式,可以讓不同網(wǎng)頁(yè)位置的文字有著統(tǒng)一的字體、字號(hào)或者顏色等。
- 如果你這個(gè)css樣式是定義在某個(gè)html網(wǎng)頁(yè)中的話,那其他網(wǎng)頁(yè)是無(wú)法使用的,但可以把
把css代碼寫(xiě)一個(gè)單獨(dú)的外部文件中,這個(gè)css樣式文件以“.css”為擴(kuò)展名,在<head>內(nèi)(不是在<style>標(biāo)簽內(nèi))使用<link>標(biāo)簽將css樣式文件鏈接到HTML文件內(nèi)。在head標(biāo)簽下添加如下代碼
<head>
<link href="base.css" rel="stylesheet" type="text/css" />
...
</head>
CSS代碼語(yǔ)法
-
css 樣式由選擇符和聲明組成,而聲明又由屬性和值組成,如下圖所示:
- 選擇符:又稱選擇器,指明網(wǎng)頁(yè)中要應(yīng)用樣式規(guī)則的元素,如本例中是網(wǎng)頁(yè)中所有的段(p)的文字將變成藍(lán)色,而其他的元素(如ol)不會(huì)受到影響。
- 聲明:在英文大括號(hào)“{}”中的的就是聲明,屬性和值之間用英文冒號(hào)“:”分隔。當(dāng)有多條聲明時(shí),中間可以英文分號(hào)“;”分隔,如下所示:
p{font-size:12px;color:red;}
注意:
1、最后一條聲明可以沒(méi)有分號(hào),但是為了以后修改方便,一般也加上分號(hào)。
2、為了使用樣式更加容易閱讀,可以將每條代碼寫(xiě)在一個(gè)新行內(nèi),如下所示:
p{
font-size:12px;
color:red;
}
CSS注釋代碼
- Html中使用``。
- 就像在Html的注釋一樣,在CSS中也有注釋語(yǔ)句:用
/*注釋語(yǔ)句*/來(lái)標(biāo)明。 - 快捷鍵:Ctrl+/
- 例子:
<style type="text/css">
p{
font-size:12px;/設(shè)置文字字號(hào)為12px/
color:red;/設(shè)置文字顏色為紅色/
}
</style>
三種樣式
內(nèi)聯(lián)式適用情況:局部特殊化
嵌入式適用情況:統(tǒng)一標(biāo)簽樣式格式
外聯(lián)式適用情況:方便代碼重用和管理
優(yōu)先級(jí):就近原則(離被設(shè)置元素越近優(yōu)先級(jí)別越高)。
但注意上面所總結(jié)的優(yōu)先級(jí)是有一個(gè)前提:內(nèi)聯(lián)式、嵌入式、外部式樣式表中css樣式是在的相同權(quán)值的情況下,
內(nèi)聯(lián)式css樣式,直接寫(xiě)在現(xiàn)有的HTML標(biāo)簽中
- 內(nèi)聯(lián)式css樣式表就是把css代碼直接寫(xiě)在現(xiàn)有的HTML標(biāo)簽中,如下面代碼:
<p style="color:red">這里文字是紅色。</p> - 注意要寫(xiě)在元素的開(kāi)始標(biāo)簽里,下面這種寫(xiě)法是錯(cuò)誤的:
<p>這里文字是紅色。</p style="color:red"> - 并且css樣式代碼要寫(xiě)在style=""雙引號(hào)中,如果有多條css樣式代碼設(shè)置可以寫(xiě)在一起,中間用分號(hào)隔開(kāi)。如下代碼:
<p style="color:red;font-size:12px">這里文字是紅色。</p>
嵌入式css樣式,寫(xiě)在當(dāng)前的文件中
- 現(xiàn)在有一任務(wù),把右側(cè)編輯器中的“超酷的互聯(lián)網(wǎng)”、“服務(wù)及時(shí)貼心”、“有趣易學(xué)”這三個(gè)短詞文字字號(hào)修改為18px。如果用上節(jié)課我們學(xué)習(xí)的內(nèi)聯(lián)式css樣式的方法進(jìn)行設(shè)置將是一件很頭疼的事情(為每一個(gè)
<span>標(biāo)簽加入sytle="font-size:18px"語(yǔ)句),本小節(jié)講解一種新的方法嵌入式css樣式來(lái)實(shí)現(xiàn)這個(gè)任務(wù)。 - 嵌入式css樣式,就是可以把css樣式代碼寫(xiě)在
<style type="text/css"></style>標(biāo)簽之間。如下面代碼實(shí)現(xiàn)把三個(gè)<span>標(biāo)簽中的文字設(shè)置為紅色:
<style type="text/css">
span{
color:red;
}
</style> - 嵌入式css樣式必須寫(xiě)在
<style></style>之間,并且一般情況下嵌入式css樣式寫(xiě)在<head></head>之間。
外部式css樣式,寫(xiě)在單獨(dú)的一個(gè)文件中
- 外部式css樣式(也可稱為外聯(lián)式)就是把css代碼寫(xiě)一個(gè)單獨(dú)的外部文件中,這個(gè)css樣式文件以“.css”為擴(kuò)展名,在
<head>內(nèi)(不是在<style>標(biāo)簽內(nèi))使用<link>標(biāo)簽將css樣式文件鏈接到HTML文件內(nèi),如下面代碼:
<link href="base.css" rel="stylesheet" type="text/css" /> - 注意:
1、css樣式文件名稱以有意義的英文字母命名,如 main.css。
2、rel="stylesheet" type="text/css" 是固定寫(xiě)法不可修改。
3、<link>標(biāo)簽位置一般寫(xiě)在<head>標(biāo)簽之內(nèi)。
選擇器
- 每一條css樣式聲明(定義)由兩部分組成,形式如下:
選擇器{
樣式;
} - 在{}之前的部分就是“選擇器”,“選擇器”指明了{(lán)}中的“樣式”的作用對(duì)象,也就是“樣式”作用于網(wǎng)頁(yè)中的哪些元素。
選擇器種類
標(biāo)簽選擇器,標(biāo)簽名{},作用于所有此標(biāo)簽。
類選擇器, .class{},在標(biāo)簽內(nèi)定義class="",屬圖形結(jié)構(gòu)。
ID選擇器,#ID{}, 在標(biāo)簽內(nèi)定義id="",有嚴(yán)格的一一對(duì)應(yīng)關(guān)系。
子選擇器, .span>li{},作用于父元素span類下一層的li標(biāo)簽。
包含選擇器,.span li{},作用于父元素span下所有l(wèi)i標(biāo)簽。
通用選擇器,*{},匹配所有html的標(biāo)簽元素。
偽類選擇符:它允許給html不存在的標(biāo)簽(標(biāo)簽的某種狀態(tài))設(shè)置樣式,比如說(shuō)我們給html中的一個(gè)標(biāo)簽元素的鼠標(biāo)滑過(guò)的狀態(tài)來(lái)設(shè)置字體顏色。
包含選擇器作用于該標(biāo)簽下的子元素,不包含本身,標(biāo)簽選擇器作用包含自己本身
標(biāo)簽選擇器
標(biāo)簽選擇器其實(shí)就是html代碼中的標(biāo)簽。如右側(cè)代碼編輯器中的
<html>、<body>、<h1>、<p>、<img>。例如下面代碼:
<style type="text/css">
p{
font-size:12px;
line-height:1.6em;
}
...
</style>
上面的css樣式代碼的作用:為p標(biāo)簽設(shè)置12px字號(hào),行間距設(shè)置1.6em的樣式。px像素(Pixel)。相對(duì)長(zhǎng)度單位。像素px是相對(duì)于顯示器屏幕分辨率而言的。(引自CSS2.0手冊(cè))
em是相對(duì)長(zhǎng)度單位。相對(duì)于當(dāng)前對(duì)象內(nèi)文本的字體尺寸。如當(dāng)前對(duì)行內(nèi)文本的字體尺寸未被人為設(shè)置,則相對(duì)于瀏覽器的默認(rèn)字體尺寸。(引自CSS2.0手冊(cè))
類選擇器
類選擇器在css樣式編碼中是最常用到的,如右側(cè)代碼編輯器中的代碼:可以實(shí)現(xiàn)為“膽小如鼠”、“勇氣”字體設(shè)置為紅色。
語(yǔ)法:
.類選器名稱{css樣式代碼;}注意:
1、英文圓點(diǎn)開(kāi)頭
2、其中類選器名稱可以任意起名(但不要起中文噢)使用方法:
第一步:使用合適的標(biāo)簽把要修飾的內(nèi)容標(biāo)記起來(lái),如下:
<span>膽小如鼠</span>
第二步:使用class="類選擇器名稱"為標(biāo)簽設(shè)置一個(gè)類,如下:
<span class="stress">膽小如鼠</span>
第三步:設(shè)置類選器css樣式,如下:
.stress{color:red;}/類前面要加入一個(gè)英文圓點(diǎn)/
ID選擇器
在很多方面,ID選擇器都類似于類選擇符,但也有一些重要的區(qū)別:
為標(biāo)簽設(shè)置id="ID名稱",而不是class="類名稱"。
ID選擇符的前面是井號(hào)(#)號(hào),而不是英文圓點(diǎn)(.)。
-
例子:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>認(rèn)識(shí)html標(biāo)簽</title>
<style type="text/css">
#stress{
color:red;
}
#setGreen{
color:green;
}
</style>
</head>
<body>
<h1>勇氣</h1>
<p>三年級(jí)時(shí),我還是一個(gè)<span id="stress">膽小如鼠</span>的小女孩,上課從來(lái)不敢回答老師提出的問(wèn)題,生怕回答錯(cuò)了老師會(huì)批評(píng)我。就一直沒(méi)有這個(gè)勇氣來(lái)回答老師提出的問(wèn)題。學(xué)校舉辦的活動(dòng)我也沒(méi)勇氣參加。</p>
<p>到了三年級(jí)下學(xué)期時(shí),我們班上了一節(jié)<span id="setGreen">公開(kāi)課</span>,老師提出了一個(gè)很簡(jiǎn)單的問(wèn)題,班里很多同學(xué)都舉手了,甚至成績(jī)比我差很多的,也舉手了,還說(shuō)著:"我來(lái),我來(lái)。"我環(huán)顧了四周,就我沒(méi)有舉手。</p></body> </html> 在同一個(gè)頁(yè)面內(nèi),不允許有相同名字的id對(duì)象出現(xiàn),但是允許相同名字的class。這樣,一般網(wǎng)站分為頭,體,腳部分,因?yàn)榭紤]到它們?cè)谕粋€(gè)頁(yè)面只會(huì)出現(xiàn)一次,所以用id,其他的,比如說(shuō)你定義了一個(gè)顏色為red的class,在同一個(gè)頁(yè)面也許要多次用到,就用class定義。另外,當(dāng)頁(yè)面中用到j(luò)s或者要?jiǎng)討B(tài)調(diào)用對(duì)象的時(shí)候,要用到id,所以要根據(jù)自己的情況運(yùn)用。自己的語(yǔ)言。
但document的方法中有g(shù)etElementById()這個(gè)方法倒是只能用id的.
類和ID選擇器的區(qū)別
- 相同點(diǎn):可以應(yīng)用于任何元素
- 不同點(diǎn):
- ID選擇器只能在文檔中使用一次。與類選擇器不同,在一個(gè)HTML文檔中,ID選擇器只能使用一次,而且僅一次。而類選擇器可以使用多次。如果單純的在CSS里使用相同ID多次是可以的!但如果頁(yè)面涉及到j(luò)s,就不好了。因?yàn)閖s里獲取DOM是通過(guò)getElementById,而如果頁(yè)面出現(xiàn)同一個(gè)id幾次,這樣就獲取不到了。所以id要有唯一性。成熟網(wǎng)站里,你很少看到css里用id選擇器的,都是用class,id選擇器留給寫(xiě)js的人用,這樣避免沖突。
下面代碼是正確的:
<span class="stress">膽小如鼠</span>
<span class="stress">勇氣</span>
而下面代碼是錯(cuò)誤的:
<span id="stress">膽小如鼠</span>
<span id="stress">勇氣</span> - 可以使用類選擇器詞列表方法為一個(gè)元素同時(shí)設(shè)置多個(gè)樣式。我們可以為一個(gè)元素同時(shí)設(shè)多個(gè)樣式,但只可以用類選擇器的方法實(shí)現(xiàn),ID選擇器是不可以的(不能使用 ID 詞列表)。
下面的代碼是正確的(完整代碼見(jiàn)右側(cè)代碼編輯器)
.stress{
color:red;
}
.bigsize{
font-size:25px;
}
<p>到了<span class="stress bigsize">三年級(jí)</span>下學(xué)期時(shí),我們班上了一節(jié)公開(kāi)課...</p>
代碼的作用是為“三年級(jí)”三個(gè)文字設(shè)置文本顏色為紅色并且字號(hào)為25px。下面的代碼是不正確的(完整代碼見(jiàn)右側(cè)代碼編輯器)
#stressid{
color:red;
}
#bigsizeid{
font-size:25px;
}
<p>到了<span id="stressid bigsizeid">三年級(jí)</span>下學(xué)期時(shí),我們班上了一節(jié)公開(kāi)課...</p>
代碼不可以實(shí)現(xiàn)為“三年級(jí)”三個(gè)文字設(shè)置文本顏色為紅色并且字號(hào)為25px的作用。
- ID選擇器只能在文檔中使用一次。與類選擇器不同,在一個(gè)HTML文檔中,ID選擇器只能使用一次,而且僅一次。而類選擇器可以使用多次。如果單純的在CSS里使用相同ID多次是可以的!但如果頁(yè)面涉及到j(luò)s,就不好了。因?yàn)閖s里獲取DOM是通過(guò)getElementById,而如果頁(yè)面出現(xiàn)同一個(gè)id幾次,這樣就獲取不到了。所以id要有唯一性。成熟網(wǎng)站里,你很少看到css里用id選擇器的,都是用class,id選擇器留給寫(xiě)js的人用,這樣避免沖突。
交集選擇器
- 一個(gè)標(biāo)簽選擇器后邊跟一個(gè)類選擇器或者一個(gè) ID 選擇器,中間不能有空格。它要求必
須是屬于某一個(gè)標(biāo)簽的,并且聲明了類選擇器或者 ID 選擇器。 - 例如:
div.mycolor{…} 類為 mycolor 的div標(biāo)簽才會(huì)被選中,應(yīng)用該樣式。
div#mydiv{…} id 為 mydiv 的div標(biāo)簽才會(huì)被選中,應(yīng)用該樣式。
并集選擇器
- 就是多個(gè)選擇器以逗號(hào)相連,只要滿足其中之一它都會(huì)被選中!
- 我們上面學(xué)的選擇器都可以被寫(xiě)入并集選擇器
div,p,h1,div.mycolor,div#mydiv {…}
子選擇器
還有一個(gè)比較有用的選擇器子選擇器,即大于符號(hào)(>),用于選擇指定標(biāo)簽元素的第一代子元素。代碼:
.food>li{border:1px solid red;}
這行代碼會(huì)使class名為food下的子元素li(水果、蔬菜)加入紅色實(shí)線邊框。代碼
<ul class="food">
<li>水果
<ul>
<li>香蕉</li>
<li>蘋(píng)果</li>
<li>梨</li>
</ul>
</li>
<li>蔬菜
<ul>
<li>白菜</li>
<li>油菜</li>
<li>卷心菜</li>
</ul>
</li>
</ul>樣式:
border:1px solid red;
相當(dāng)于
border-width:1px; //邊框?qū)挾?br> border-style:solid; //邊框風(fēng)格
border-color:red; //邊框顏色
包含(后代)選擇器
包含選擇器,即加入空格,用于選擇指定標(biāo)簽元素下的后輩元素。如右側(cè)代碼編輯器中的代碼:
.first span{color:red;}
這行代碼會(huì)使第一段文字內(nèi)容中的“膽小如鼠”字體顏色變?yōu)榧t色。請(qǐng)注意這個(gè)選擇器與子選擇器的區(qū)別,子選擇器(child selector)僅是指它的直接后代,或者你可以理解為作用于子元素的第一代后代。而后代選擇器是作用于<span style="color:red">所有子后代元素</span>。后代選擇器通過(guò)空格來(lái)進(jìn)行選擇,而子選擇器是通過(guò)“>”進(jìn)行選擇。
總結(jié):>作用于元素的第一代后代,空格作用于元素的所有后代。
通用選擇器
- 通用選擇器是功能最強(qiáng)大的選擇器,它使用一個(gè)(*)號(hào)指定,它的作用是匹配html中所有標(biāo)簽元素,如下使用下面代碼使用html中任意標(biāo)簽元素字體顏色全部設(shè)置為紅色:
* {color:red;}
偽類選擇符
更有趣的是偽類選擇符,為什么叫做偽類選擇符,它允許給html不存在的標(biāo)簽(標(biāo)簽的某種狀態(tài))設(shè)置樣式,比如說(shuō)我們給html中一個(gè)標(biāo)簽元素的鼠標(biāo)滑過(guò)的狀態(tài)來(lái)設(shè)置字體顏色:
a:hover{color:red;}上面一行代碼就是為 a 標(biāo)簽鼠標(biāo)滑過(guò)的狀態(tài)設(shè)置字體顏色變紅。這樣就會(huì)使第一段文字內(nèi)容中的“膽小如鼠”文字加入鼠標(biāo)滑過(guò)字體顏色變?yōu)榧t色特效。
關(guān)于偽選擇符:
關(guān)于偽類選擇符,到目前為止,可以兼容所有瀏鑒器的“偽類選擇符”就是 a 標(biāo)簽上使用 :hover 了(其實(shí)偽類選擇符還有很多,尤其是 css3 中,但是因?yàn)椴荒芗嫒菟袨g覽器,本教程只是講了這一種最常用的)。其實(shí) :hover 可以放在任意的標(biāo)簽上,比如說(shuō) p:hover,但是它們的兼容性也是很不好的,所以現(xiàn)在比較常用的還是 a:hover 的組合。什么時(shí)候使用偽類選擇符
當(dāng)用戶和網(wǎng)站交互的時(shí)候一般使用偽類選擇器,,如“:hover”,":active"和":focus"。常用的偽類有:
.demo a:link {color:gray;}/鏈接沒(méi)有被訪問(wèn)時(shí)前景色為紅色/
.demo a:visited{color:yellow;}/鏈接被訪問(wèn)過(guò)后前景色為黃色/
.demo a:hover{color:green;}/鼠標(biāo)懸浮在鏈接上時(shí)前景色為綠色/
.demo a:active{color:blue;}/鼠標(biāo)點(diǎn)中激活鏈接那一下前景色為藍(lán)色/
分組選擇符
- 當(dāng)你想為html中多個(gè)標(biāo)簽元素設(shè)置同一個(gè)樣式時(shí),可以使用分組選擇符(,),如下代碼為右側(cè)代碼編輯器中的h1、span標(biāo)簽同時(shí)設(shè)置字體顏色為紅色:
h1,span{color:red;}
它相當(dāng)于下面兩行代碼:
h1{color:red;}
span{color:red;}
CSS繼承、特殊性、層疊、重要性
CSS繼承
CSS的某些樣式是具有繼承性的,那么什么是繼承呢?繼承是一種規(guī)則,它允許樣式不僅應(yīng)用于某個(gè)特定html標(biāo)簽元素,而且應(yīng)用于其后代。比如下面代碼:如某種顏色應(yīng)用于p標(biāo)簽,這個(gè)顏色設(shè)置不僅應(yīng)用p標(biāo)簽,還應(yīng)用于p標(biāo)簽中的所有子元素文本,這里子元素為span標(biāo)簽。
p{color:red;}
<p>三年級(jí)時(shí),我還是一個(gè)<span>膽小如鼠</span>的小女孩。</p>可見(jiàn)右側(cè)結(jié)果窗口中p中的文本與span中的文本都設(shè)置為了紅色。但注意有一些css樣式是不具有繼承性的。如border:1px solid red;
p{border:1px solid red;}
<p>三年級(jí)時(shí),我還是一個(gè)<span>膽小如鼠</span>的小女孩。</p>
在上面例子中它代碼的作用只是給p標(biāo)簽設(shè)置了邊框?yàn)?像素、紅色、實(shí)心邊框線,而對(duì)于子元素span是沒(méi)用起到作用的。那么,哪些屬性是可以繼承的呢?css樣式表屬性可以繼承的有如下:
*azimuth, border-collapse, border-spacing,
caption-side, color, cursor, direction, elevation,
empty-cells, font-family, font-size, font-style,
font-variant, font-weight, font, letter-spacing,
line-height, list-style-image, list-style-position,
list-style-type, list-style, orphans, pitch-range,
pitch, quotes, richness, speak-header, speaknumeral,
speak-punctuation, speak, speechrate,
stress, text-align, text-indent, texttransform,
visibility, voice-family, volume, whitespace,
widows, word-spacing *
特殊性(specificity)/權(quán)值/優(yōu)先級(jí)
有的時(shí)候我們?yōu)橥粋€(gè)元素設(shè)置了不同的CSS樣式代碼,那么元素會(huì)啟用哪一個(gè)CSS樣式呢?我們來(lái)看一下面的代碼:
p{color:red;}
.first{color:green;}
<p class="first">三年級(jí)時(shí),我還是一個(gè)<span>膽小如鼠</span>的小女孩。</p>
p和.first都匹配到了p這個(gè)標(biāo)簽上,那么會(huì)顯示哪種顏色呢?green是正確的顏色,那么為什么呢?是因?yàn)闉g覽器是根據(jù)權(quán)值來(lái)判斷使用哪種css樣式的,權(quán)值高的就使用哪種css樣式。-
下面是權(quán)值的規(guī)則:
標(biāo)簽的權(quán)值為1,類選擇符的權(quán)值為10,ID選擇符的權(quán)值最高為100。例如下面的代碼:
p{color:red;} /權(quán)值為1/
p span{color:green;} /權(quán)值為1+1=2/
.warning{color:white;} /權(quán)值為10/
p span.warning{color:purple;} /權(quán)值為1+1+10=12/
#footer .note p{color:yellow;} /權(quán)值為100+10+1=111/
4個(gè)等級(jí)的定義如下:- 第一等:代表內(nèi)聯(lián)樣式,如: style=””,權(quán)值為1000。
- 第二等:代表ID選擇器,如:#content,權(quán)值為100。
- 第三等:代表類,偽類和屬性選擇器,如.content,權(quán)值為10。
- 第四等:代表類型選擇器和偽元素選擇器,如div p,權(quán)值為1。
- <span style="color:red">注意</span>:通用選擇器(*),子選擇器(>)和相鄰?fù)x擇器(+)并不在這四個(gè)等級(jí)中,所以他們的權(quán)值都為0。
<span style="color:red">注意</span>:還有一個(gè)權(quán)值比較特殊--繼承也有權(quán)值但很低,有的文獻(xiàn)提出它只有0.1,所以可以理解為繼承的權(quán)值最低。
-
最后一個(gè)影響特殊性的聲明:!important
例:
h1{ color:red!important;}
!important被稱為重要聲明,被標(biāo)記為!important的屬性其特殊性最高,當(dāng)出現(xiàn)有沖突的重要聲明時(shí),同樣安照出現(xiàn)的先后順序決定最后的顯示。例:
h1{color:red!important;}
h1{color:blue!important;}
最后h1文字為藍(lán)色!important要寫(xiě)在分號(hào)的前面,每次針對(duì)一個(gè)屬性(即想將樣式中的多個(gè)屬性都提高權(quán)限,就要多次添加)。
p{color:red!important;font-size:14px!important}這里注意當(dāng)網(wǎng)頁(yè)制作者不設(shè)置css樣式時(shí),瀏覽器會(huì)按照自己的一套樣式來(lái)顯示網(wǎng)頁(yè)。并且用戶也可以在瀏覽器中設(shè)置自己習(xí)慣的樣式,比如有的用戶習(xí)慣把字號(hào)設(shè)置為大一些,使其查看網(wǎng)頁(yè)的文本更加清楚。這時(shí)注意樣式優(yōu)先級(jí)為:瀏覽器默認(rèn)的樣式 < 網(wǎng)頁(yè)制作者樣式 < 用戶自己設(shè)置的樣式,但記住!important優(yōu)先級(jí)樣式是個(gè)例外,權(quán)值高于用戶自己設(shè)置的樣式。
-
例子:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>特殊性</title>
<style type="text/css">
p{color:red;}
.first{color:green;}/因?yàn)闄?quán)值高顯示為綠色/span{color:pink;}/*設(shè)置為粉色*/ p span{color:purple}; </style> </head> <body> <h1>勇氣</h1> <p class="first">三年級(jí)時(shí),我還是一個(gè)<span>膽小如鼠</span>的小女孩,上課從來(lái)不敢回答老師提出的問(wèn)題,生怕回答錯(cuò)了老師會(huì)批評(píng)我。就一直沒(méi)有這個(gè)勇氣來(lái)回答老師提出的問(wèn)題。學(xué)校舉辦的活動(dòng)我也沒(méi)勇氣參加。</p> <p id="second">到了三年級(jí)下學(xué)期時(shí),我們班上了一節(jié)公開(kāi)課,老師提出了一個(gè)很簡(jiǎn)單的問(wèn)題,班里很多同學(xué)都舉手了,甚至成績(jī)比我差很多的,也舉手了,還說(shuō)著:"我來(lái),我來(lái)。"我環(huán)顧了四周,就我沒(méi)有舉手。</p> </body> </html>結(jié)果:
<span style="color:green">三年級(jí)時(shí),我還是一個(gè)<span style="color:purple">膽小如鼠</span>的小女孩,上課從來(lái)不敢回答老師提出的問(wèn)題,生怕回答錯(cuò)了老師會(huì)批評(píng)我。就一直沒(méi)有這個(gè)勇氣來(lái)回答老師提出的問(wèn)題。學(xué)校舉辦的活動(dòng)我也沒(méi)勇氣參加。</span>解釋:
第七行 p{color:red;} 對(duì)于p來(lái)說(shuō),這條語(yǔ)句的權(quán)值為 1 ;而對(duì)于p中的span膽小如鼠來(lái)說(shuō),因?yàn)槔^承性,這條語(yǔ)句對(duì)于膽小如鼠來(lái)說(shuō)只有 0.1 的權(quán)值。
第八行 .first{color:green;} 對(duì)于first來(lái)說(shuō),這條語(yǔ)句的權(quán)值為 10 ;而對(duì)于first中的span膽小如鼠來(lái)說(shuō),因?yàn)槔^承性,這條語(yǔ)句對(duì)于膽小如鼠來(lái)說(shuō)只有 0.1 的權(quán)值。
第十行 span{color:pink;} 對(duì)于span膽小如鼠來(lái)說(shuō),這條語(yǔ)句的權(quán)值為 1 。
所以對(duì)于整段話來(lái)說(shuō)(除了膽小如鼠外),執(zhí)行第八行語(yǔ)句(即段落顯示綠色),因?yàn)榈诎诵芯哂械臋?quán)值最高為10>第七行的權(quán)值1,;而對(duì)于膽小如鼠來(lái)說(shuō),執(zhí)行第十行語(yǔ)句(即顯示粉色),因?yàn)榈谑姓Z(yǔ)句具有的權(quán)值為1>第七行的權(quán)值0.1(第八行的權(quán)值)。
第十一行 p span{color:purple;} 對(duì)于p和span來(lái)說(shuō),這條語(yǔ)句的權(quán)值為1+1=2。那么現(xiàn)在對(duì)于p來(lái)說(shuō),就執(zhí)行第十一行語(yǔ)句(即顯示紫色)(第十一行權(quán)值為2>第十行的權(quán)值1)。 相關(guān)閱讀:
CSS選擇器的權(quán)重與優(yōu)先規(guī)則
玩轉(zhuǎn)CSS選擇器(一)之使用方法
層疊
我們來(lái)思考一個(gè)問(wèn)題:如果在html文件中對(duì)于同一個(gè)元素可以有多個(gè)css樣式存在并且這多個(gè)css樣式具有相同權(quán)重值怎么辦?好,這一小節(jié)中的層疊幫你解決這個(gè)問(wèn)題。
層疊就是在html文件中對(duì)于同一個(gè)元素可以有多個(gè)css樣式存在,當(dāng)有相同權(quán)重的樣式存在時(shí),會(huì)根據(jù)這些css樣式的前后順序來(lái)決定,處于最后面的css樣式會(huì)被應(yīng)用。
如下面代碼:
p{color:red;}
p{color:green;}
<p class="first">三年級(jí)時(shí),我還是一個(gè)<span>膽小如鼠</span>的小女孩。</p>
最后 p 中的文本會(huì)設(shè)置為green,這個(gè)層疊很好理解,理解為后面的樣式會(huì)覆蓋前面的樣式。
CSS格式化排版
字體
我們可以使用css樣式為網(wǎng)頁(yè)中的文字設(shè)置字體、字號(hào)、顏色等樣式屬性。下面我們來(lái)看一個(gè)例子,下面代碼實(shí)現(xiàn):為網(wǎng)頁(yè)中的文字設(shè)置字體為宋體。
body{font-family:"宋體";}這里注意不要設(shè)置不常用的字體,因?yàn)槿绻脩舯镜仉娔X上如果沒(méi)有安裝你設(shè)置的字體,就會(huì)顯示瀏覽器默認(rèn)的字體。(因?yàn)橛脩羰欠窨梢钥吹侥阍O(shè)置的字體樣式取決于用戶本地電腦上是否安裝你設(shè)置的字體。)
現(xiàn)在一般網(wǎng)頁(yè)喜歡設(shè)置“微軟雅黑”,如下代碼:
body{font-family:"Microsoft Yahei";}
或
body{font-family:"微軟雅黑";}
注意:第一種方法比第二種方法兼容性更好一些。
因?yàn)檫@種字體即美觀又可以在客戶端安全的顯示出來(lái)(用戶本地一般都是默認(rèn)安裝的)。
文字排版
font-family:設(shè)置字體;多個(gè)字體用逗號(hào)隔開(kāi)
font-family:"Times New Roman",Georgia,Serif;-
font-size:字體大小;
可以使用下面代碼設(shè)置網(wǎng)頁(yè)中文字的字號(hào)為12像素,并把字體顏色設(shè)置為#666(灰色):
body{font-size:12px;color:#666}注意:這里font-size一定要帶單位px或者em或者%!?。?/p>
font-weight:bold:設(shè)置為粗體樣式;
font-style:italic:設(shè)置為斜體樣式;
normal(標(biāo)準(zhǔn)) italic(斜體) oblique(傾斜)text-decoration:underline:文字設(shè)置下劃線;
text-decoration:line-through:刪除線;
h1{text-decoration:overline}
其他值
underline 定義文本下的一條線。
overline 定義文本上的一條線。
line-through 定義穿過(guò)文本下的一條線。
blink 定義閃爍的文本。(經(jīng)本人測(cè)試失效???)設(shè)置多種字體屬性
語(yǔ)法:{font:字體風(fēng)格 字體粗細(xì)字體大小 字體類型;}
span{font:oblique bold 12px "楷體";}鼠標(biāo)形狀
語(yǔ)法:標(biāo)簽選擇器{cursor:cursor屬性;}(鼠標(biāo)形狀 )
css:
span{cursor:pointer;}
html:
<span>...(內(nèi)容)...</span>
cursor屬性:
cursor(鼠標(biāo)形狀) default(默認(rèn)) pointer(超鏈接指針) wait(忙) help(幫助)
text(指示文本) crosshair(十字狀)
段落排版
-
text-indent:2em:縮進(jìn);中文文字中的段前習(xí)慣空兩個(gè)文字的空白。
(注意:2em的意思就是文字的2倍大小。 這里可帶單位,也可不帶單位,當(dāng)不帶單位時(shí),默認(rèn)單位為em?。?/p>在中文里,文字輸入分為全角和半角,
(中文輸入法里,按shift+空格 切換全角半角狀態(tài))
全角,段落中所有字符(包括文字和其它符號(hào):逗號(hào)、頓號(hào)、句號(hào)等),
都是占用一個(gè)字的位置,這樣排版的時(shí)候,上下文字能對(duì)齊;
半角,段落中所有除文字外的符號(hào),只占用半個(gè)字的位置;
打字時(shí),默認(rèn)是半角,按空格最明顯,只有前一個(gè)字的一半寬度;
切換全角后,空格剛好是一個(gè)字寬度(段落中最明顯,上下對(duì)齊)
em 就是一個(gè)全角占位符; -
line-height:2em:行間距(行高);
設(shè)置高度與行高一樣,可以實(shí)現(xiàn)垂直居中效果!注意:必須帶單位px或em或者%!?。?/p>
word-spacing:50px:英文單詞間距;(僅包括英文)
-
letter-spacing:20px:字符間距;(包括中文和英文)
- 在中英文混排的文章中,要注意的一點(diǎn)是,中文對(duì)word-spacing屬性是沒(méi)有反應(yīng)的,而使用letter-spacing調(diào)整中文字間距的時(shí)候,會(huì)同時(shí)拉開(kāi)英文字母的距離,使得在中文排版頁(yè)面中的英文顯得不美觀;
(經(jīng)本人測(cè)試,中文字之間加空格之后,會(huì)對(duì)word-spacing產(chǎn)生反應(yīng)?。?/li> - 中英文混排時(shí),可以對(duì)不同的語(yǔ)言添加<span>標(biāo)簽,分開(kāi)調(diào)整;
- 在中英文混排的文章中,要注意的一點(diǎn)是,中文對(duì)word-spacing屬性是沒(méi)有反應(yīng)的,而使用letter-spacing調(diào)整中文字間距的時(shí)候,會(huì)同時(shí)拉開(kāi)英文字母的距離,使得在中文排版頁(yè)面中的英文顯得不美觀;
-
text-align:屬性規(guī)定元素中的文本的水平對(duì)齊方式;
text-align:center/right/left(默認(rèn))/justify(兩端對(duì)齊)例子:
<div>[站外圖片上傳中……(3)]</div>
此時(shí)在嵌入式樣式中應(yīng)這樣寫(xiě):
div{
text-align:xxx;
}解釋:
- 該屬性通過(guò)指定行框與哪個(gè)點(diǎn)對(duì)齊,從而設(shè)置塊級(jí)元素內(nèi)文本的水平對(duì)齊方式。其目的是設(shè)置文本或img標(biāo)簽等一些內(nèi)聯(lián)對(duì)象(或與之類似的元素)的居中。
- text-align可以對(duì)一個(gè)塊使用,對(duì)這個(gè)塊里的所有內(nèi)容都會(huì)生效,不管塊里包含的是圖片還是文字。然而如果一個(gè)塊內(nèi)包含著子元素的塊,那么對(duì)這個(gè)子元素所占的空間并不生效,只對(duì)塊內(nèi)所有的文字和圖片生效而已。
擴(kuò)展閱讀:
margin:0 auto 與 text-align:center 的區(qū)別 vertical-align:文本的垂直對(duì)齊方式;
middle/top/bottomfloat:浮動(dòng)方式(元素會(huì)緊貼到父元素的左邊/右邊/默認(rèn),注意很有可能擠壓在浮動(dòng)元素之前的元素)
left/right/none(默認(rèn))border
設(shè)置左/右/上/下邊框:
border-left/right/top/bottom: 1px solid red;
實(shí)線:solid
虛線:dashedborder-radius
設(shè)置邊框的邊角為圓形
border-radius:XXpx;元素性質(zhì)相互轉(zhuǎn)化:
display:block; (變成塊級(jí)元素)
display:inline; (變成內(nèi)聯(lián)元素)
display:inline-block; (仍以塊級(jí)元素展示,但是并不獨(dú)占一行)
display:none;(在頁(yè)面不顯示!)
后代元素長(zhǎng)度大于祖輩元素的大小時(shí)候的處理方法:
overflow:visible
可能的值:
visible:默認(rèn),內(nèi)容不會(huì)被修剪,會(huì)呈現(xiàn)在元素框之外。
hidden:超出的內(nèi)容會(huì)被修剪掉,直接不現(xiàn)實(shí)。
scroll:超出內(nèi)容會(huì)被修剪,但是瀏覽器會(huì)顯示滾動(dòng)條以便查看其余的內(nèi)容。
auto:如果內(nèi)容被超出,則瀏覽器會(huì)顯示滾動(dòng)條以便查看其余的內(nèi)容。
inherit:規(guī)定應(yīng)該從父元素繼承 overflow 屬性的值。
背景
background-color
元素的背景顏色默認(rèn)為 transparent
background-color 不會(huì)被后代繼承。background-image
使用 background-image 屬性默認(rèn)值為 none 表示背景上沒(méi)有放置任何圖像
如果需要設(shè)置一個(gè)背景圖像,必須為這個(gè)屬性設(shè)置一個(gè) url 值
background-image: url(bg.gif);
注意圖片的位置引入方法!background-repeat
使用background-img時(shí),背景圖片重復(fù)的問(wèn)題
使用 background-repeat 來(lái)解決,可以的值:repeat-x(只在x軸),repeat-y,no-repeat-
background-position
前提:背景圖片一定不重復(fù)(no-repeat)- 可以使用一些關(guān)鍵字:top、bottom、left、right 和 center 通常,這些關(guān)鍵字會(huì)成對(duì)出現(xiàn)。注意:第一個(gè)值是y軸(垂直方向),第二個(gè)值是x軸(水平方向)
top left
top center
top right
center left
center center
center right
bottom left
bottom center
bottom right - 也可以用百分比:
background:50% 50%;第一個(gè)表示水平方向,第二個(gè)表示垂直方向 - 當(dāng)然更可以用數(shù)值,以 px 單位:
background:40px 10px;第一個(gè)表示水平第二個(gè)表示垂直 - 也可以混用
- 可以使用一些關(guān)鍵字:top、bottom、left、right 和 center 通常,這些關(guān)鍵字會(huì)成對(duì)出現(xiàn)。注意:第一個(gè)值是y軸(垂直方向),第二個(gè)值是x軸(水平方向)
background-attachment
背景關(guān)聯(lián):background-attachment:fixed
用滾動(dòng)條滾動(dòng)時(shí),背景圖片不變總結(jié)寫(xiě)法
background: #00FF00 url(bg.gif) no-repeat fixed center left;
單位和值
顏色值
在網(wǎng)頁(yè)中的顏色設(shè)置是非常重要,有字體顏色(color)、背景顏色(background-color)、邊框顏色(border)等,設(shè)置顏色的方法也有很多種:
- 英文命令顏色
前面幾個(gè)小節(jié)中經(jīng)常用到的就是這種設(shè)置方法:
p{color:red;} - RGB顏色
這個(gè)與 photoshop 中的 RGB 顏色是一致的,由 R(red)、G(green)、B(blue) 三種顏色的比例來(lái)配色。
p{color:rgb(133,45,200);}
每一項(xiàng)的值可以是 0~255 之間的整數(shù),也可以是 0%~100% 的百分?jǐn)?shù)。如:
p{color:rgb(20%,33%,25%);}
即
rgb(20%,33%,25%)=rgb(20%255,33%255,25%*255) - 十六進(jìn)制顏色
這種顏色設(shè)置方法是現(xiàn)在比較普遍使用的方法,其原理其實(shí)也是 RGB 設(shè)置,但是其每一項(xiàng)的值由 0-255 變成了十六進(jìn)制 00-ff。
p{color:#00ffff;} -
配色表
長(zhǎng)度值
長(zhǎng)度單位總結(jié)一下,目前比較常用到px(像素)、em、% 百分比,要注意其實(shí)這三種單位都是相對(duì)單位。
像素
像素為什么是相對(duì)單位呢?因?yàn)橄袼刂傅氖秋@示器上的小點(diǎn)(CSS規(guī)范中假設(shè)“90像素=1英寸”)。實(shí)際情況是瀏覽器會(huì)使用顯示器的實(shí)際像素值有關(guān),在目前大多數(shù)的設(shè)計(jì)者都傾向于使用像素(px)作為單位。em
就是本元素給定字體的 font-size 值,如果元素的 font-size 為 14px ,那么 1em = 14px;如果 font-size 為 18px,那么 1em = 18px。如下代碼:
p{font-size:12px;text-indent:2em;}
上面代碼就是可以實(shí)現(xiàn)段落首行縮進(jìn) 24px(也就是兩個(gè)字體大小的距離)。
<span style="color:red">下面注意一個(gè)特殊情況:</span>
當(dāng)給 font-size 設(shè)置單位為 em 時(shí),此時(shí)計(jì)算的標(biāo)準(zhǔn)以父元素p的 font-size 為基礎(chǔ)。如下代碼:
html:
<p>以這個(gè)<span>例子</span>為例。</p>
css:
p{font-size:14px}
span{font-size:0.8em;}
結(jié)果 span 中的字體“例子”字體大小就為 11.2px(14 * 0.8 = 11.2px)。百分比
p{font-size:12px;line-height:130%}
設(shè)置行高(行間距)為字體的130%(12 * 1.3 = 15.6px)。
盒模型
CSS 盒模型 (Box Model) 規(guī)定了元素框處理元素內(nèi)容、內(nèi)邊距、邊框和
的方式,頁(yè)面中的所有標(biāo)記都可以看成是一個(gè)盒子,盒模型是我們對(duì)網(wǎng)頁(yè)
行定位的基礎(chǔ),而定位是我們對(duì)網(wǎng)頁(yè)元素進(jìn)行位置固定的重點(diǎn)知識(shí)!內(nèi)邊距:邊框和內(nèi)容區(qū)之間的距離,通過(guò) padding 屬性設(shè)置
-
內(nèi)邊距設(shè)置方法:
padding-top:10px;
padding-right:10px;
padding-bttom:10px;
padding-left:10px;- 簡(jiǎn)寫(xiě):
padding:上 右 左 下;
padding:10px 20px 40px 30px;
- 簡(jiǎn)寫(xiě):
外邊距:元素邊框的外圍空白區(qū)域是外邊距,通過(guò) margin 屬性設(shè)置
外邊距設(shè)置方法:margin:;用法同上!
一般來(lái)說(shuō),把各個(gè)元素的內(nèi)邊距和外邊距
浮動(dòng)
- 因?yàn)?div 元素是塊級(jí)元素,獨(dú)占一行的。如何在一行顯示多個(gè) div 元素?顯然默認(rèn)的標(biāo)準(zhǔn)流已經(jīng)無(wú)法滿足需求,這就要用到浮動(dòng)。
- 浮動(dòng)可以理解為讓某個(gè) div元素(或者其他塊級(jí)元素)脫離標(biāo)準(zhǔn)流,漂浮在標(biāo)準(zhǔn)流之上。
- 假設(shè)div2設(shè)置浮動(dòng),那么它將脫離標(biāo)準(zhǔn)流,但 div1、div3、div4 仍然在標(biāo)
準(zhǔn)流當(dāng)中,所以 div3 會(huì)自動(dòng)向上移動(dòng),占據(jù) div2 的位置,重新組成一個(gè)流。 - 浮動(dòng)的設(shè)置方法:
float:left;
float:right; - 讓標(biāo)準(zhǔn)流中的元素不受到浮動(dòng)的影響
clear:both;
none:默認(rèn)值。允許兩邊都可以有浮動(dòng)對(duì)象
left:不允許左邊有浮動(dòng)對(duì)象
right:不允許右邊有浮動(dòng)對(duì)象
both:不允許有浮動(dòng)對(duì)象 - 如果連續(xù)多個(gè)元素設(shè)置浮動(dòng)呢?
結(jié)論:被設(shè)置浮動(dòng)的元素會(huì)組成一個(gè)流,并且會(huì)橫著緊挨著排隊(duì),直到父元素的
寬度不夠才會(huì)換一行排列。
相對(duì)定位與絕對(duì)定位
-
相對(duì)定位
- 元素相對(duì)于原來(lái)的位置(也就是不加相對(duì)定位時(shí),應(yīng)該位于的位置)
- 語(yǔ)法:
div{
position:relative;
left:XXpx;
right:XXpx;
top:XXpx;
bottom:XXpx;
} - 為元素設(shè)置相對(duì)定位之后,元素依然會(huì)占據(jù)原來(lái)的空間,依然在標(biāo)準(zhǔn)流中!
- 設(shè)置了left就不要設(shè)置right,設(shè)置了top就不要設(shè)置值bottom,這是矛盾的!
-
絕對(duì)定位
- position:absolute;
left:;
right:;
top:;
bottom:; - 為元素設(shè)置絕對(duì)定位之后,元素不會(huì)占據(jù)原來(lái)的空間,脫離了原來(lái)的隊(duì)伍
- 為元素設(shè)置了左右之后,元素就會(huì)脫離水平方向的標(biāo)準(zhǔn)流,為元素設(shè)置了上下之后,元素就會(huì)脫離豎直方向的標(biāo)準(zhǔn)流;脫離之后,會(huì)根據(jù)父元素的位置來(lái)確定當(dāng)前元素的位置。
- position:absolute;
-
固定定位
- position:fixed;
left:;
right:;
top:;
bottom:; - 相對(duì)于瀏覽器的窗口進(jìn)行定位,不會(huì)隨著頁(yè)面的滾動(dòng)條而動(dòng)!
- position:fixed;
重疊元素的堆疊順序設(shè)置
使用 z-index:;對(duì)設(shè)置了相對(duì)或絕對(duì)或固定定位的元素進(jìn)行堆疊順序的設(shè)置,設(shè)置的數(shù)值越
大即堆疊在越上層,該屬性可以是負(fù)值。
布局初探
布局是我們書(shū)寫(xiě)整個(gè)網(wǎng)頁(yè)的基本,就是把整個(gè)頁(yè)面的框架先打好,例如我們現(xiàn)實(shí)生活中房子
裝潢的時(shí)候就有布局的概念,我們網(wǎng)頁(yè)也是的,一個(gè)網(wǎng)頁(yè)可以看成是由幾個(gè)不同,這些組成部分我們可以使用 div 容器去存放他們(這也是 div 叫做容器的原因),布局有多種方式,這節(jié)課我們重點(diǎn)講解下最常用的布局方式,固定浮動(dòng)布局!固定浮動(dòng)布局
固定浮動(dòng)布局即是用固定的值將元素的長(zhǎng)度設(shè)置為固定不變, 然后配合浮動(dòng)的技術(shù)實(shí)現(xiàn)整個(gè)頁(yè)面的一個(gè)布局。
網(wǎng)頁(yè)的主要內(nèi)容一般都是在我們?yōu)g覽器的中間位置展示的, 固定浮動(dòng)布局會(huì)將中間的內(nèi)
容整體長(zhǎng)度使用固定的值定死, 因?yàn)槭枪潭ㄋ赖乃灾虚g主要內(nèi)容占用瀏覽器的長(zhǎng)度空間是有講究的,這個(gè)需要跟我們的用戶的屏幕分辨率對(duì)應(yīng)起來(lái),不要超過(guò)大多數(shù)的人屏幕分辨率的長(zhǎng)度。(一般設(shè)置為1000px)塊級(jí)元素怎么相對(duì)于父元素居中?
元素需要設(shè)置長(zhǎng)度,元素左右的外邊距設(shè)置為 auto 即可!元素都可以看成是一個(gè)盒子,這些盒子很多都有一個(gè)自己默認(rèn)的內(nèi)邊距或者外
邊距,并且每個(gè)瀏覽器默認(rèn)的距離還有可能不太一樣,這樣對(duì)于我們頁(yè)面布局或者具體
的細(xì)節(jié)的定位產(chǎn)生影響,那么我們應(yīng)該怎么辦?
上下外邊距為0,左右外邊距自動(dòng)居中。
margin:0 auto;

