腦圖復(fù)習(xí)
什么是選擇器帽馋?
每一條css樣式聲明(定義)由兩部分組成蕉汪,形式如下:
選擇器{
樣式;
}
在{}之前的部分就是“選擇器”煌集,“選擇器”指明了{(lán)}中的“樣式”的作用對象,也就是“樣式”作用于網(wǎng)頁中的哪些元素辛藻。
標(biāo)簽選擇器
標(biāo)簽選擇器其實(shí)就是html代碼中的標(biāo)簽碘橘。如右側(cè)代碼編輯器中的<html>、<body>吱肌、<h1>痘拆、<p>、<img>氮墨。例如下面代碼:
p{font-size:12px;line-height:1.6em;}
上面的css樣式代碼的作用:為p標(biāo)簽設(shè)置12px字號(hào)纺蛆,行間距設(shè)置1.6em的樣式。
類選擇器
類選擇器在css樣式編碼中是最常用到的规揪,如右側(cè)代碼編輯器中的代碼:可以實(shí)現(xiàn)為“膽小如鼠”桥氏、“勇氣”字體設(shè)置為紅色。
語法:
.類選器名稱{css樣式代碼;}
注意:
1猛铅、英文圓點(diǎn)開頭
2字支、其中類選器名稱可以任意起名(但不要起中文噢)
使用方法:
第一步:使用合適的標(biāo)簽把要修飾的內(nèi)容標(biāo)記起來,如下:
<span>膽小如鼠</span>
第二步:使用class="類選擇器名稱"為標(biāo)簽設(shè)置一個(gè)類,如下:
<span class="stress">膽小如鼠</span>
第三步:設(shè)置類選器css樣式堕伪,如下:
.stress{color:red;}/*類前面要加入一個(gè)英文圓點(diǎn)*/
ID選擇器
在很多方面揖庄,ID選擇器都類似于類選擇符,但也有一些重要的區(qū)別:
1欠雌、為標(biāo)簽設(shè)置id="ID名稱"抠艾,而不是class="類名稱"。
2桨昙、ID選擇符的前面是井號(hào)(#)號(hào),而不是英文圓點(diǎn)(.)腌歉。
右側(cè)代碼編輯器中就是一個(gè)ID選擇符的完整實(shí)例蛙酪。
類和ID選擇器的區(qū)別
學(xué)習(xí)了類選擇器和ID選擇器,我們會(huì)發(fā)現(xiàn)他們之間有很多的相似處翘盖,是不是兩者可以通用呢桂塞?我們不要著急先來總結(jié)一下他們的相同點(diǎn)和不同點(diǎn):
相同點(diǎn):可以應(yīng)用于任何元素
不同點(diǎn):
1、ID選擇器只能在文檔中使用一次馍驯。與類選擇器不同阁危,在一個(gè)HTML文檔中,ID選擇器只能使用一次汰瘫,而且僅一次狂打。而類選擇器可以使用多次。
下面代碼是正確的:
<p>三年級(jí)時(shí)混弥,我還是一個(gè)<span class="stress">膽小如鼠</span>的小女孩趴乡。就一直沒有這個(gè)<span class="stress">勇氣</span>來回答老師提出的問題。</p>
而下面代碼是錯(cuò)誤的:
<p>三年級(jí)時(shí)蝗拿,我還是一個(gè)<span id="stress">膽小如鼠</span>的小女孩晾捏。就一直沒有這個(gè)<span id="stress">勇氣</span>來回答老師提出的問題。</p>
2哀托、可以使用類選擇器詞列表方法為一個(gè)元素同時(shí)設(shè)置多個(gè)樣式惦辛。我們可以為一個(gè)元素同時(shí)設(shè)多個(gè)樣式,但只可以用類選擇器的方法實(shí)現(xiàn)仓手,ID選擇器是不可以的(不能使用 ID 詞列表)胖齐。
下面的代碼是正確的(完整代碼見右側(cè)代碼編輯器)
.stress{
color:red;
}
.bigsize{
font-size:25px;
}
<p>到了<span class="stress bigsize">三年級(jí)</span>下學(xué)期時(shí),我們班上了一節(jié)公開課...</p>
上面代碼的作用是為“三年級(jí)”三個(gè)文字設(shè)置文本顏色為紅色并且字號(hào)為25px俗或。
下面的代碼是不正確的(完整代碼見右側(cè)代碼編輯器)
#stressid{
color:red;
}
#bigsizeid{
font-size:25px;
}
<p>到了<span id="stressid bigsizeid">三年級(jí)</span>下學(xué)期時(shí)市怎,我們班上了一節(jié)公開課...</p>
上面代碼不可以實(shí)現(xiàn)為“三年級(jí)”三個(gè)文字設(shè)置文本顏色為紅色并且字號(hào)為25px的作用。
子選擇器
還有一個(gè)比較有用的選擇器子選擇器辛慰,即大于符號(hào)(>),用于選擇指定標(biāo)簽元素的第一代子元素区匠。如右側(cè)代碼編輯器中的代碼:
.food>li{border:1px solid red;}
這行代碼會(huì)使class名為food下的子元素li(水果、蔬菜)加入紅色實(shí)線邊框。
包含(后代)選擇器
包含選擇器驰弄,即加入空格,用于選擇指定標(biāo)簽元素下的后輩元素麻汰。如右側(cè)代碼編輯器中的代碼:
.first span{color:red;}
這行代碼會(huì)使第一段文字內(nèi)容中的“膽小如鼠”字體顏色變?yōu)榧t色。
請注意這個(gè)選擇器與子選擇器的區(qū)別戚篙,子選擇器(child selector)僅是指它的直接后代五鲫,或者你可以理解為作用于子元素的第一代后代。而后代選擇器是作用于所有子后代元素岔擂。后代選擇器通過空格來進(jìn)行選擇位喂,而子選擇器是通過“>”進(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è)置樣式抒蚜,比如說我們給html中一個(gè)標(biāo)簽元素的鼠標(biāo)滑過的狀態(tài)來設(shè)置字體顏色:
a:hover{color:red;}
上面一行代碼就是為 a 標(biāo)簽鼠標(biāo)滑過的狀態(tài)設(shè)置字體顏色變紅。這樣就會(huì)使第一段文字內(nèi)容中的“膽小如鼠”文字加入鼠標(biāo)滑過字體顏色變?yōu)榧t色特效耘戚。
關(guān)于偽選擇符:
關(guān)于偽類選擇符嗡髓,到目前為止,可以兼容所有瀏鑒器的“偽類選擇符”就是 a 標(biāo)簽上使用 :hover 了(其實(shí)偽類選擇符還有很多毕莱,尤其是 css3 中器贩,但是因?yàn)椴荒芗嫒菟袨g覽器,本教程只是講了這一種最常用的)朋截。其實(shí) :hover 可以放在任意的標(biāo)簽上蛹稍,比如說 p:hover,但是它們的兼容性也是很不好的部服,所以現(xiàn)在比較常用的還是 a:hover 的組合唆姐。
分組選擇符
當(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的某些樣式是具有繼承性的剧蹂,那么什么是繼承呢声功?繼承是一種規(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>
可見右側(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í)心邊框線龙宏,而對于子元素span是沒用起到作用的。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>繼承</title>
<style type="text/css">
p{color:red;}
p{border:1px solid red;}
p{border:1px solid red;}
</style>
</head>
<body>
<h1>勇氣</h1>
<p class="first">三年級(jí)時(shí)伤疙,我還是一個(gè)<span>膽小如鼠</span>的小女孩。</p>
<p id="second">到了三年級(jí)下學(xué)期時(shí)辆影,我們班上了一節(jié)公開課徒像,老師提出了一個(gè)很<span>簡單</span>的問題。</p>
</body>
</html>
特殊性
有的時(shí)候我們?yōu)橥粋€(gè)元素設(shè)置了不同的CSS樣式代碼蛙讥,那么元素會(huì)啟用哪一個(gè)CSS樣式呢?我們來看一下面的代碼:
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)值來判斷使用哪種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*/
注意:還有一個(gè)權(quán)值比較特殊--繼承也有權(quán)值但很低由缆,有的文獻(xiàn)提出它只有0.1注祖,所以可以理解為繼承的權(quán)值最低。
層疊
我們來思考一個(gè)問題:如果在html文件中對于同一個(gè)元素可以有多個(gè)css樣式存在并且這多個(gè)css樣式具有相同權(quán)重值怎么辦均唉?好是晨,這一小節(jié)中的層疊幫你解決這個(gè)問題。
層疊就是在html文件中對于同一個(gè)元素可以有多個(gè)css樣式存在舔箭,當(dāng)有相同權(quán)重的樣式存在時(shí)罩缴,會(huì)根據(jù)這些css樣式的前后順序來決定,處于最后面的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樣式優(yōu)先級(jí)就不難理解了:
內(nèi)聯(lián)樣式表(標(biāo)簽內(nèi)部)> 嵌入樣式表(當(dāng)前文件中)> 外部樣式表(外部文件中)。
重要性
我們在做網(wǎng)頁代碼的時(shí)焰薄,有些特殊的情況需要為某些樣式設(shè)置具有最高權(quán)值拿诸,怎么辦?這時(shí)候我們可以使用!important來解決塞茅。
如下代碼:
p{color:red!important;}
p{color:green;}
<p class="first">三年級(jí)時(shí)亩码,我還是一個(gè)<span>膽小如鼠</span>的小女孩。</p>
這時(shí) p 段落中的文本會(huì)顯示的red紅色野瘦。
注意:!important要寫在分號(hào)的前面
這里注意當(dāng)網(wǎng)頁制作者不設(shè)置css樣式時(shí)描沟,瀏覽器會(huì)按照自己的一套樣式來顯示網(wǎng)頁。并且用戶也可以在瀏覽器中設(shè)置自己習(xí)慣的樣式鞭光,比如有的用戶習(xí)慣把字號(hào)設(shè)置為大一些吏廉,使其查看網(wǎng)頁的文本更加清楚。這時(shí)注意樣式優(yōu)先級(jí)為:瀏覽器默認(rèn)的樣式 < 網(wǎng)頁制作者樣式 < 用戶自己設(shè)置的樣式惰许,但記住!important優(yōu)先級(jí)樣式是個(gè)例外席覆,權(quán)值高于用戶自己設(shè)置的樣式。
文字排版--字體
我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體汹买、字號(hào)佩伤、顏色等樣式屬性。下面我們來看一個(gè)例子晦毙,下面代碼實(shí)現(xiàn):為網(wǎng)頁中的文字設(shè)置字體為宋體生巡。
body{font-family:"宋體";}
這里注意不要設(shè)置不常用的字體,因?yàn)槿绻脩舯镜仉娔X上如果沒有安裝你設(shè)置的字體见妒,就會(huì)顯示瀏覽器默認(rèn)的字體障斋。(因?yàn)橛脩羰欠窨梢钥吹侥阍O(shè)置的字體樣式取決于用戶本地電腦上是否安裝你設(shè)置的字體。)
現(xiàn)在一般網(wǎng)頁喜歡設(shè)置“微軟雅黑”徐鹤,如下代碼:
body{font-family:"Microsoft Yahei";}
body{font-family:"微軟雅黑";}
注意:第一種方法比第二種方法兼容性更好一些垃环。
文字排版--字號(hào)、顏色
可以使用下面代碼設(shè)置網(wǎng)頁中文字的字號(hào)為12像素返敬,并把字體顏色設(shè)置為#666(灰色):
body{font-size:12px;color:#666}
文字排版--粗體
我們還可以使用css樣式來改變文字的樣式:粗體遂庄、斜體、下劃線劲赠、刪除線涛目,可以使用下面代碼實(shí)現(xiàn)設(shè)置文字以粗體樣式顯示出來秸谢。
p span{font-weight:bold;}
在這里大家可以看到,如果想為文字設(shè)置粗體是有單獨(dú)的css樣式來實(shí)現(xiàn)的霹肝,再不用為了實(shí)現(xiàn)粗體樣式而使用h1-h6或strong標(biāo)簽了估蹄。
文字排版--斜體
以下代碼可以實(shí)現(xiàn)文字以斜體樣式在瀏覽器中顯示:
p a{font-style:italic;}
<p>三年級(jí)時(shí),我還是一個(gè)<a>膽小如鼠</a>的小女孩沫换。</p>
文字排版--下劃線
有些情況下想為文字設(shè)置為下劃線樣式臭蚁,這樣可以在視覺上強(qiáng)調(diào)文字,可以使用下面代碼來實(shí)現(xiàn):
p a{text-decoration:underline;}
<p>三年級(jí)時(shí)讯赏,我還是一個(gè)<a>膽小如鼠</a>的小女孩垮兑。</p>
文字排版--刪除線
如果想在網(wǎng)頁上設(shè)置刪除線怎么辦,這個(gè)樣式在電商網(wǎng)站上常會(huì)見到:
上圖中的原價(jià)上的刪除線使用下面代碼就可以實(shí)現(xiàn):
.oldPrice{text-decoration:line-through;}
段落排版--縮進(jìn)
中文文字中的段前習(xí)慣空兩個(gè)文字的空白漱挎,這個(gè)特殊的樣式可以用下面代碼來實(shí)現(xiàn):
p{text-indent:2em;}
<p>1922年的春天系枪,一個(gè)想要成名名叫尼克卡拉威(托比?馬奎爾Tobey Maguire 飾)的作家,離開了美國中西部磕谅,來到了紐約私爷。</p>
注意:2em的意思就是文字的2倍大小。
段落排版--行間距(行高)
這一小節(jié)我們來學(xué)習(xí)一下另一個(gè)在段落排版中起重要作用的行間距(行高)屬性(line-height)膊夹,如下代碼實(shí)現(xiàn)設(shè)置段落行間距為1.5倍当犯。
p{line-height:1.5em;}
<p>菲茨杰拉德,二十世紀(jì)美國文學(xué)巨擘之一割疾,兼具作家和編劇雙重身份。其詩人和夢想家的氣質(zhì)亦為那個(gè)奢靡年代的不二注解嘉栓。</p>
段落排版--中文字間距宏榕、字母間距
中文字間隔、字母間隔設(shè)置:
如果想在網(wǎng)頁排版中設(shè)置文字間隔或者字母間隔就可以使用 letter-spacing 來實(shí)現(xiàn)侵佃,如下面代碼:
h1{
letter-spacing:50px;
}
<h1>了不起的蓋茨比</h1>
注意:這個(gè)樣式使用在英文單詞時(shí)麻昼,是設(shè)置字母與字母之間的間距。
單詞間距設(shè)置:
如果我想設(shè)置英文單詞之間的間距呢馋辈?可以使用 word-spacing 來實(shí)現(xiàn)抚芦。如下代碼:
h1{
word-spacing:50px;
}
<h1>welcome to imooc!</h1>
段落排版--對齊
想為塊狀元素中的文本、圖片設(shè)置居中樣式嗎迈螟?可以使用text-align樣式代碼叉抡,如下代碼可實(shí)現(xiàn)文本居中顯示。(那么什么是塊狀元素呢答毫?在后面會(huì)講到褥民。)
h1{
text-align:center;
}
<h1>了不起的蓋茨比</h1>
同樣可以設(shè)置居左:
h1{
text-align:left;
}
<h1>了不起的蓋茨比</h1>
還可以設(shè)置居右:
h1{
text-align:right;
}
<h1>了不起的蓋茨比</h1>
元素分類
在講解CSS布局之前,我們需要提前知道一些知識(shí)洗搂,在CSS中消返,html中的標(biāo)簽元素大體被分為三種不同的類型:塊狀元素载弄、內(nèi)聯(lián)元素(又叫行內(nèi)元素)和內(nèi)聯(lián)塊狀元素。
常用的塊狀元素有:
<div>撵颊、<p>宇攻、<h1>...<h6>、<ol>倡勇、<ul>逞刷、<dl>、<table>译隘、<address>亲桥、<blockquote> 、<form>
常用的內(nèi)聯(lián)元素有:
<a>固耘、<span>题篷、<br>、<i>厅目、<em>番枚、<strong>、<label>损敷、<q>葫笼、<var>、<cite>拗馒、<code>
常用的內(nèi)聯(lián)塊狀元素有:
<img>路星、<input>
元素分類--塊級(jí)元素
什么是塊級(jí)元素?在html中<div>诱桂、 <p>洋丐、<h1>、<form>挥等、<ul> 和 <li>就是塊級(jí)元素友绝。設(shè)置display:block就是將元素顯示為塊級(jí)元素。如下代碼就是將內(nèi)聯(lián)元素a轉(zhuǎn)換為塊狀元素肝劲,從而使a元素具有塊狀元素特點(diǎn)迁客。
a{display:block;}
塊級(jí)元素特點(diǎn):
1、每個(gè)塊級(jí)元素都從新的一行開始辞槐,并且其后的元素也另起一行掷漱。(真霸道,一個(gè)塊級(jí)元素獨(dú)占一行)
2榄檬、元素的高度切威、寬度、行高以及頂和底邊距都可設(shè)置。
3签舞、元素寬度在不設(shè)置的情況下,是它本身父容器的100%(和父元素的寬度一致)扯饶,除非設(shè)定一個(gè)寬度喳魏。
元素分類--內(nèi)聯(lián)元素
在html中棉浸,<span>、<a>刺彩、<label>迷郑、 <strong> 和<em>就是典型的內(nèi)聯(lián)元素(行內(nèi)元素)(inline)元素。當(dāng)然塊狀元素也可以通過代碼display:inline將元素設(shè)置為內(nèi)聯(lián)元素创倔。如下代碼就是將塊狀元素div轉(zhuǎn)換為內(nèi)聯(lián)元素嗡害,從而使 div 元素具有內(nèi)聯(lián)元素特點(diǎn)。
div{
display:inline;
}
<div>我要變成內(nèi)聯(lián)元素</div>
內(nèi)聯(lián)元素特點(diǎn):
1畦攘、和其他元素都在一行上霸妹;
2、元素的高度知押、寬度及頂部和底部邊距不可設(shè)置叹螟;
3、元素的寬度就是它包含的文字或圖片的寬度台盯,不可改變罢绽。
小伙伴們你們觀查一下右側(cè)代碼段,有沒有發(fā)現(xiàn)一個(gè)問題静盅,內(nèi)聯(lián)元素之間有一個(gè)間距問題良价,這個(gè)問題在本小節(jié)的 wiki 中有介紹,感興趣的小伙伴可以去查看蒿叠。
元素分類--內(nèi)聯(lián)塊狀元素
內(nèi)聯(lián)塊狀元素(inline-block)就是同時(shí)具備內(nèi)聯(lián)元素明垢、塊狀元素的特點(diǎn),代碼display:inline-block就是將元素設(shè)置為內(nèi)聯(lián)塊狀元素栈虚。(css2.1新增),<img>史隆、<input>標(biāo)簽就是這種內(nèi)聯(lián)塊狀標(biāo)簽魂务。
inline-block 元素特點(diǎn):
1、和其他元素都在一行上泌射;
2粘姜、元素的高度、寬度熔酷、行高以及頂和底邊距都可設(shè)置孤紧。
盒模型--邊框(一)
盒子模型的邊框就是圍繞著內(nèi)容及補(bǔ)白的線,這條線你可以設(shè)置它的粗細(xì)拒秘、樣式和顏色(邊框三個(gè)屬性)号显。
如下面代碼為 div 來設(shè)置邊框粗細(xì)為 2px臭猜、樣式為實(shí)心的、顏色為紅色的邊框:
div{
border:2px solid red;
}
上面是 border 代碼的縮寫形式押蚤,可以分開寫:
div{
border-width:2px;
border-style:solid;
border-color:red;
}
注意:
1蔑歌、border-style(邊框樣式)常見樣式有:
dashed(虛線)| dotted(點(diǎn)線)| solid(實(shí)線)。
2揽碘、border-color(邊框顏色)中的顏色可設(shè)置為十六進(jìn)制顏色次屠,如:
border-color:#888;//前面的井號(hào)不要忘掉。
3雳刺、border-width(邊框?qū)挾龋┲械膶挾纫部梢栽O(shè)置為:
thin | medium | thick(但不是很常用)劫灶,最常還是用象素(px)。
盒模型--邊框(二)
現(xiàn)在有一個(gè)問題掖桦,如果有想為 p 標(biāo)簽單獨(dú)設(shè)置下邊框本昏,而其它三邊都不設(shè)置邊框樣式怎么辦呢?css 樣式中允許只為一個(gè)方向的邊框設(shè)置樣式:
div{border-bottom:1px solid red;}
同樣可以使用下面代碼實(shí)現(xiàn)其它三邊(上滞详、右凛俱、左)邊框的設(shè)置:
border-top:1px solid red;
border-right:1px solid red;
border-left:1px solid red;
盒模型--寬度和高度
盒模型寬度和高度和我們平常所說的物體的寬度和高度理解是不一樣的,css內(nèi)定義的寬(width)和高(height)料饥,指的是填充以里的內(nèi)容范圍蒲犬。
因此一個(gè)元素實(shí)際寬度(盒子的寬度)=左邊界+左邊框+左填充+內(nèi)容寬度+右填充+右邊框+右邊界。
元素的高度也是同理岸啡。
比如:
css代碼:
div{
width:200px;
padding:20px;
border:1px solid red;
margin:10px;
}
html代碼:
<body>
<div>文本內(nèi)容</div>
</body>
元素的實(shí)際長度為:10px+1px+20px+200px+20px+1px+10px=262px原叮。在chrome瀏覽器下可查看元素盒模型,如下圖:
盒模型--填充
元素內(nèi)容與邊框之間是可以設(shè)置距離的巡蘸,稱之為“填充”奋隶。填充也可分為上、右悦荒、下唯欣、左(順時(shí)針)。如下代碼:
div{padding:20px 10px 15px 30px;}
順序一定不要搞混搬味【城猓可以分開寫上面代碼:
div{
padding-top:20px;
padding-right:10px;
padding-bottom:15px;
padding-left:30px;
}
如果上、右碰纬、下萍聊、左的填充都為10px;可以這么寫
div{padding:10px;}
如果上下填充一樣為10px,左右一樣為20px悦析,可以這么寫:
div{padding:10px 20px;}
盒模型--邊界
元素與其它元素之間的距離可以使用邊界(margin)來設(shè)置寿桨。邊界也是可分為上、右强戴、下亭螟、左挡鞍。如下代碼:
div{margin:20px 10px 15px 30px;}
也可以分開寫:
div{
margin-top:20px;
margin-right:10px;
margin-bottom:15px;
margin-left:30px;
}
如果上右下左的邊界都為10px;可以這么寫:
div{ margin:10px;}
如果上下邊界一樣為10px,左右一樣為20px媒佣,可以這么寫:
div{ margin:10px 20px;}
總結(jié)一下:padding和margin的區(qū)別匕累,padding在邊框里,margin在邊框外默伍。
css布局模型
清楚了CSS 盒模型的基本概念欢嘿、 盒模型類型, 我們就可以深入探討網(wǎng)頁布局的基本模型了也糊。布局模型與盒模型一樣都是 CSS 最基本炼蹦、 最核心的概念。 但布局模型是建立在盒模型基礎(chǔ)之上狸剃,又不同于我們常說的 CSS 布局樣式或 CSS 布局模板掐隐。如果說布局模型是本,那么 CSS 布局模板就是末了钞馁,是外在的表現(xiàn)形式虑省。
CSS包含3種基本的布局模型,用英文概括為:Flow僧凰、Layer 和 Float探颈。
在網(wǎng)頁中,元素有三種布局模型:
1训措、流動(dòng)模型(Flow)
2伪节、浮動(dòng)模型 (Float)
3、層模型(Layer)
流動(dòng)模型(一)
先來說一說流動(dòng)模型绩鸣,流動(dòng)(Flow)是默認(rèn)的網(wǎng)頁布局模式怀大。也就是說網(wǎng)頁在默認(rèn)狀態(tài)下的 HTML 網(wǎng)頁元素都是根據(jù)流動(dòng)模型來分布網(wǎng)頁內(nèi)容的。
流動(dòng)布局模型具有2個(gè)比較典型的特征:
第一點(diǎn)呀闻,塊狀元素都會(huì)在所處的包含元素內(nèi)自上而下按順序垂直延伸分布化借,因?yàn)樵谀J(rèn)狀態(tài)下,塊狀元素的寬度都為100%捡多。實(shí)際上蓖康,塊狀元素都會(huì)以行的形式占據(jù)位置。如右側(cè)代碼編輯器中三個(gè)塊狀元素標(biāo)簽(div局服,h1钓瞭,p)寬度顯示為100%驳遵。
流動(dòng)模型(二)
第二點(diǎn)淫奔,在流動(dòng)模型下,內(nèi)聯(lián)元素都會(huì)在所處的包含元素內(nèi)從左到右水平分布顯示堤结。(內(nèi)聯(lián)元素可不像塊狀元素這么霸道獨(dú)占一行)
右側(cè)代碼編輯器中內(nèi)聯(lián)元素標(biāo)簽a唆迁、span鸭丛、em、strong都是內(nèi)聯(lián)元素唐责。
浮動(dòng)模型
塊狀元素這么霸道都是獨(dú)占一行鳞溉,如果現(xiàn)在我們想讓兩個(gè)塊狀元素并排顯示,怎么辦呢鼠哥?不要著急熟菲,設(shè)置元素浮動(dòng)就可以實(shí)現(xiàn)這一愿望。
任何元素在默認(rèn)情況下是不能浮動(dòng)的朴恳,但可以用 CSS 定義為浮動(dòng)抄罕,如 div、p于颖、table呆贿、img 等元素都可以被定義為浮動(dòng)。如下代碼可以實(shí)現(xiàn)兩個(gè) div 元素一行顯示森渐。
div{
width:200px;
height:200px;
border:2px red solid;
float:left;
}
<div id="div1"></div>
<div id="div2"></div>
效果圖
當(dāng)然你也可以同時(shí)設(shè)置兩個(gè)元素右浮動(dòng)也可以實(shí)現(xiàn)一行顯示做入。
div{
width:200px;
height:200px;
border:2px red solid;
float:right;
}
效果圖
又有小伙伴問了,設(shè)置兩個(gè)元素一左一右可以實(shí)現(xiàn)一行顯示嗎同衣?當(dāng)然可以:
div{
width:200px;
height:200px;
border:2px red solid;
}
#div1{float:left;}
#div2{float:right;}
效果圖
什么是層模型竟块?
什么是層布局模型?層布局模型就像是圖像軟件PhotoShop中非常流行的圖層編輯功能一樣乳怎,每個(gè)圖層能夠精確定位操作彩郊,但在網(wǎng)頁設(shè)計(jì)領(lǐng)域,由于網(wǎng)頁大小的活動(dòng)性蚪缀,層布局沒能受到熱捧秫逝。但是在網(wǎng)頁上局部使用層布局還是有其方便之處的。下面我們來學(xué)習(xí)一下html中的層布局询枚。
如何讓html元素在網(wǎng)頁中精確定位违帆,就像圖像軟件PhotoShop中的圖層一樣可以對每個(gè)圖層能夠精確定位操作。CSS定義了一組定位(positioning)屬性來支持層布局模型金蜀。
層模型有三種形式:
1刷后、絕對定位(position: absolute)
2、相對定位(position: relative)
3渊抄、固定定位(position: fixed)
層模型--絕對定位
如果想為元素設(shè)置層模型中的絕對定位尝胆,需要設(shè)置position:absolute(表示絕對定位),這條語句的作用將元素從文檔流中拖出來护桦,然后使用left含衔、right、top、bottom屬性相對于其最接近的一個(gè)具有定位屬性的父包含塊進(jìn)行絕對定位贪染。如果不存在這樣的包含塊缓呛,則相對于body元素,即相對于瀏覽器窗口杭隙。
如下面代碼可以實(shí)現(xiàn)div元素相對于瀏覽器窗口向右移動(dòng)100px哟绊,向下移動(dòng)50px。
div{
width:200px;
height:200px;
border:2px red solid;
position:absolute;
left:100px;
top:50px;
}
<div id="div1"></div>
效果如下:
層模型--相對定位
如果想為元素設(shè)置層模型中的相對定位痰憎,需要設(shè)置position:relative(表示相對定位)票髓,它通過left、right铣耘、top炬称、bottom屬性確定元素在正常文檔流中的偏移位置。相對定位完成的過程是首先按static(float)方式生成一個(gè)元素(并且元素像層一樣浮動(dòng)了起來)涡拘,然后相對于以前的位置移動(dòng)玲躯,移動(dòng)的方向和幅度由left、right鳄乏、top跷车、bottom屬性確定,偏移前的位置保留不動(dòng)橱野。
如下代碼實(shí)現(xiàn)相對于以前位置向下移動(dòng)50px朽缴,向右移動(dòng)100px;
#div1{
width:200px;
height:200px;
border:2px red solid;
position:relative;
left:100px;
top:50px;
}
<div id="div1"></div>
效果圖:
層模型--固定定位
fixed:表示固定定位,與absolute定位類型類似水援,但它的相對移動(dòng)的坐標(biāo)是視圖(屏幕內(nèi)的網(wǎng)頁窗口)本身密强。由于視圖本身是固定的,它不會(huì)隨瀏覽器窗口的滾動(dòng)條滾動(dòng)而變化蜗元,除非你在屏幕中移動(dòng)瀏覽器窗口的屏幕位置或渤,或改變?yōu)g覽器窗口的顯示大小,因此固定定位的元素會(huì)始終位于瀏覽器窗口內(nèi)視圖的某個(gè)位置奕扣,不會(huì)受文檔流動(dòng)影響薪鹦,這與background-attachment:fixed?屬性功能相同。以下代碼可以實(shí)現(xiàn)相對于瀏覽器視圖向右移動(dòng)100px惯豆,向下移動(dòng)50px池磁。并且拖動(dòng)滾動(dòng)條時(shí)位置固定不變。
#div1{
width:200px;
height:200px;
border:2px red solid;
position:fixed;
left:100px;
top:50px;
}
<p>文本文本文本文本文本文本文本文本文本文本文本文本楷兽。</p>
Relative與Absolute組合使用
大家有沒有想過可不可以相對于其它元素進(jìn)行定位呢地熄?答案是肯定的,當(dāng)然可以芯杀。使用position:relative來幫忙端考,但是必須遵守下面規(guī)范:
1银舱、參照定位的元素必須是相對定位元素的前輩元素:
<div id="box1"><!--參照定位的元素-->
<div id="box2">相對參照元素進(jìn)行定位</div><!--相對定位元素-->
</div>
從上面代碼可以看出box1是box2的父元素(父元素當(dāng)然也是前輩元素了)。
2跛梗、參照定位的元素必須加入position:relative;
#box1{
width:200px;
height:200px;
position:relative;
}
3、定位元素加入position:absolute棋弥,便可以使用top核偿、bottom、left顽染、right來進(jìn)行偏移定位了漾岳。
#box2{
position:absolute;
top:20px;
left:30px;
}
這樣box2就可以相對于父元素box1定位了(這里注意參照物就可以不是瀏覽器了,而可以自由設(shè)置了)粉寞。
盒模型代碼簡寫
還記得在講盒模型時(shí)外邊距(margin)尼荆、內(nèi)邊距(padding)和邊框(border)設(shè)置上下左右四個(gè)方向的邊距是按照順時(shí)針方向設(shè)置的:上右下左。具體應(yīng)用在margin和padding的例子如下:
margin:10px 15px 12px 14px;/*上設(shè)置為10px唧垦、右設(shè)置為15px捅儒、下設(shè)置為12px、左設(shè)置為14px*/
通常有下面三種縮寫方法:
1振亮、如果top巧还、right、bottom坊秸、left的值相同麸祷,如下面代碼:
margin:10px 10px 10px 10px;
可縮寫為:
margin:10px;
2、如果top和bottom值相同褒搔、left和 right的值相同阶牍,如下面代碼:
margin:10px 20px 10px 20px;
可縮寫為:
margin:10px 20px;
3、如果left和right的值相同星瘾,如下面代碼:
margin:10px 20px 30px 20px;
可縮寫為:
margin:10px 20px 30px;
注意:padding走孽、border的縮寫方法和margin是一致的。
顏色值縮寫
關(guān)于顏色的css樣式也是可以縮寫的琳状,當(dāng)你設(shè)置的顏色是16進(jìn)制的色彩值時(shí)融求,如果每兩位的值相同,可以縮寫一半算撮。
例子1:
p{color:#000000;}
可以縮寫為:
p{color: #000;}
例子2:
p{color: #336699;}
可以縮寫為:
p{color: #369;}
字體縮寫
網(wǎng)頁中的字體css樣式代碼也有他自己的縮寫方式生宛,下面是給網(wǎng)頁設(shè)置字體的代碼:
body{
font-style:italic;
font-variant:small-caps;
font-weight:bold;
font-size:12px;
line-height:1.5em;
font-family:"宋體",sans-serif;
}
這么多行的代碼其實(shí)可以縮寫為一句:
body{
font:italic small-caps bold 12px/1.5em "宋體",sans-serif;
}
注意:
1、使用這一簡寫方式你至少要指定 font-size 和 font-family 屬性肮柜,其他的屬性(如 font-weight陷舅、 font-style、font-variant审洞、line-height)如未指定將自動(dòng)使用默認(rèn)值莱睁。
2待讳、在縮寫時(shí) font-size 與 line-height 中間要加入“/”斜扛。
一般情況下因?yàn)閷τ谥形木W(wǎng)站仰剿,英文還是比較少的创淡,所以下面縮寫代碼比較常用:
body{
font:12px/1.5em "宋體",sans-serif;
}
只是有字號(hào)、行間距南吮、中文字體琳彩、英文字體設(shè)置。
顏色值
在網(wǎng)頁中的顏色設(shè)置是非常重要部凑,有字體顏色(color)露乏、背景顏色(background-color)、邊框顏色(border)等涂邀,設(shè)置顏色的方法也有很多種:
1瘟仿、英文命令顏色
前面幾個(gè)小節(jié)中經(jīng)常用到的就是這種設(shè)置方法:
p{color:red;}
2、RGB顏色
這個(gè)與 photoshop 中的 RGB 顏色是一致的比勉,由 R(red)劳较、G(green)、B(blue) 三種顏色的比例來配色浩聋。
p{color:rgb(133,45,200);}
每一項(xiàng)的值可以是 0~255 之間的整數(shù)兴想,也可以是 0%~100% 的百分?jǐn)?shù)。如:
p{color:rgb(20%,33%,25%);}
3赡勘、十六進(jìn)制顏色
這種顏色設(shè)置方法是現(xiàn)在比較普遍使用的方法嫂便,其原理其實(shí)也是 RGB 設(shè)置,但是其每一項(xiàng)的值由 0-255 變成了十六進(jìn)制 00-ff闸与。
p{color:#00ffff;}
配色表:
長度值
長度單位總結(jié)一下毙替,目前比較常用到px(像素)、em践樱、% 百分比厂画,要注意其實(shí)這三種單位都是相對單位。
1拷邢、像素
像素為什么是相對單位呢袱院?因?yàn)橄袼刂傅氖秋@示器上的小點(diǎn)(CSS規(guī)范中假設(shè)“90像素=1英寸”)。實(shí)際情況是瀏覽器會(huì)使用顯示器的實(shí)際像素值有關(guān)瞭稼,在目前大多數(shù)的設(shè)計(jì)者都傾向于使用像素(px)作為單位忽洛。
2、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è)字體大小的距離)欣喧。
下面注意一個(gè)特殊情況:
但當(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)。
3锈锤、百分比
p{font-size:12px;line-height:130%}
設(shè)置行高(行間距)為字體的130%(12 * 1.3 = 15.6px)驯鳖。
水平居中設(shè)置-行內(nèi)元素
我們在實(shí)際工作中常會(huì)遇到需要設(shè)置水平居中的場景,比如為了美觀牙咏,文章的標(biāo)題一般都是水平居中顯示的。
這里我們又得分兩種情況:行內(nèi)元素 還是 塊狀元素 嘹裂,塊狀元素里面又分為定寬塊狀元素妄壶,以及不定寬塊狀元素。今天我們先來了解一下行內(nèi)元素怎么進(jìn)行水平居中寄狼?
如果被設(shè)置元素為文本丁寄、圖片等行內(nèi)元素時(shí),水平居中是通過給父元素設(shè)置 text-align:center
來實(shí)現(xiàn)的泊愧。(父元素和子元素:如下面的html代碼中伊磺,div是“我想要在父容器中水平居中顯示”這個(gè)文本的父元素。反之這個(gè)文本是div的子元素 )如下代碼:
html代碼:
<body>
<div class="txtCenter">我想要在父容器中水平居中顯示删咱。</div>
</body>
css代碼:
<style>
.txtCenter{
text-align:center;
}
</style>
水平居中設(shè)置-定寬塊狀元素
當(dāng)被設(shè)置元素為 塊狀元素 時(shí)用 text-align:center 就不起作用了屑埋,這時(shí)也分兩種情況:定寬塊狀元素和不定寬塊狀元素。
這一小節(jié)我們先來講一講定寬塊狀元素痰滋。(定寬塊狀元素:塊狀元素的寬度width為固定值摘能。)
滿足定寬和塊狀兩個(gè)條件的元素是可以通過設(shè)置“左右margin”值為“auto”來實(shí)現(xiàn)居中的。我們來看個(gè)例子就是設(shè)置 div 這個(gè)塊狀元素水平居中:
html代碼:
<body>
<div>我是定寬塊狀元素敲街,哈哈团搞,我要水平居中顯示。</div>
</body>
css代碼:
<style>
div{
border:1px solid red;/*為了顯示居中效果明顯為 div 設(shè)置了邊框*/
width:200px;/*定寬*/
margin:20px auto;/* margin-left 與 margin-right 設(shè)置為 auto */
}
</style>
也可以寫成:
margin-left:auto;
margin-right:auto;
注意:元素的“上下 margin” 是可以隨意設(shè)置的多艇。
水平居中總結(jié)-不定寬塊狀元素方法(一)
在實(shí)際工作中我們會(huì)遇到需要為“不定寬度的塊狀元素”設(shè)置居中逻恐,比如網(wǎng)頁上的分頁導(dǎo)航,因?yàn)榉猪摰臄?shù)量是不確定的峻黍,所以我們不能通過設(shè)置寬度來限制它的彈性复隆。(不定寬塊狀元素:塊狀元素的寬度width不固定。)
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
- 加入 table 標(biāo)簽
- 設(shè)置 display: inline 方法:與第一種類似姆涩,顯示類型設(shè)為 行內(nèi)元素昏名,進(jìn)行不定寬元素的屬性設(shè)置
- 設(shè)置 position:relative 和 left:50%:利用 相對定位 的方式,將元素向左偏移 50% 阵面,即達(dá)到居中的目的
這一小節(jié)我們來講一下第一種方法:
為什么選擇方法一加入table標(biāo)簽? 是利用table標(biāo)簽的長度自適應(yīng)性---即不定義其長度也不默認(rèn)父元素body的長度(table其長度根據(jù)其內(nèi)文本長度決定)轻局,因此可以看做一個(gè)定寬度塊元素洪鸭,然后再利用定寬度塊狀居中的margin的方法,使其水平居中仑扑。
第一步:為需要設(shè)置的居中的元素外面加入一個(gè) table 標(biāo)簽 ( 包括 <tbody>览爵、<tr>、<td> )镇饮。
第二步:為這個(gè) table 設(shè)置“左右 margin 居中”(這個(gè)和定寬塊狀元素的方法一樣)蜓竹。
舉例如下:
html代碼:
<div>
<table>
<tbody>
<tr><td>
<ul>
<li>我是第一行文本</li>
<li>我是第二行文本</li>
<li>我是第三行文本</li>
</ul>
</td></tr>
</tbody>
</table>
</div>
css代碼:
<style>
table{
border:1px solid;
margin:0 auto;
}
</style>
水平居中總結(jié)-不定寬塊狀元素方法(二)
除了上一節(jié)講到的插入table標(biāo)簽,可以使不定寬塊狀元素水平居中之外储藐,本節(jié)介紹第2種實(shí)現(xiàn)這種效果的方法俱济,改變元素的display類型為行內(nèi)元素,利用其屬性直接設(shè)置钙勃。
第二種方法:改變塊級(jí)元素的 display 為 inline 類型(設(shè)置為 行內(nèi)元素 顯示)蛛碌,然后使用 text-align:center
來實(shí)現(xiàn)居中效果。如下例子:
html代碼:
<body>
<div class="container">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</div>
</body>
css代碼:
<style>
.container{
text-align:center;
}
/* margin:0;padding:0(消除文本與div邊框之間的間隙)*/
.container ul{
list-style:none;
margin:0;
padding:0;
display:inline;
}
/* margin-right:8px(設(shè)置li文本之間的間隔)*/
.container li{
margin-right:8px;
display:inline;
}
</style>
這種方法相比第一種方法的優(yōu)勢是不用增加無語義標(biāo)簽辖源,但也存在著一些問題:它將塊狀元素的 display 類型改為 inline蔚携,變成了行內(nèi)元素,所以少了一些功能克饶,比如設(shè)定長度值酝蜒。
水平居中總結(jié)-不定寬塊狀元素方法(三)
除了前兩節(jié)講到的插入table標(biāo)簽,以及改變元素的display類型矾湃,可以使不定寬塊狀元素水平居中之外亡脑,本節(jié)介紹第3種實(shí)現(xiàn)這種效果的方法,設(shè)置浮動(dòng)和相對定位來實(shí)現(xiàn)邀跃。
方法三:通過給父元素設(shè)置 float远豺,然后給父元素設(shè)置 position:relative 和 left:50%,子元素設(shè)置 position:relative 和 left: -50% 來實(shí)現(xiàn)水平居中坞嘀。
我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份躯护,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊丽涩,從而實(shí)現(xiàn)li層的居中棺滞。
代碼如下:
<body>
<div class="container">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</div>
</body>
css代碼:
<style>
.container{
float:left;
position:relative;
left:50%
}
.container ul{
list-style:none;
margin:0;
padding:0;
position:relative;
left:-50%;
}
.container li{float:left;display:inline;margin-right:8px;}
</style>
這三種方法使用得都非常廣泛,各有優(yōu)缺點(diǎn)矢渊,具體選用哪種方法继准,可以視具體情況而定。
垂直居中-父元素高度確定的單行文本
我們在實(shí)際工作中也會(huì)遇到需要設(shè)置垂直居中的場景矮男,比如好多報(bào)紙的文章標(biāo)題在左右一側(cè)時(shí)移必,常常會(huì)設(shè)置為垂直居中,為了用戶體驗(yàn)性好毡鉴。
這里我們又得分兩種情況:父元素高度確定的單行文本崔泵,以及父元素高度確定的多行文本秒赤。
本節(jié)我們先來看第一種父元素高度確定的單行文本, 怎么設(shè)置它為垂直居中呢?
父元素高度確定的單行文本的豎直居中的方法是通過設(shè)置父元素的 height 和 line-height 高度一致來實(shí)現(xiàn)的憎瘸。(height: 該元素的高度入篮,line-height: 顧名思義,行高(行間距)幌甘,指在文本中潮售,行與行之間的 基線間的距離 )。
line-height 與 font-size 的計(jì)算值之差锅风,在 CSS 中成為“行間距”酥诽。分為兩半,分別加到一個(gè)文本行內(nèi)容的頂部和底部皱埠。
這種文字行高與塊高一致帶來了一個(gè)弊端:當(dāng)文字內(nèi)容的長度大于塊的寬時(shí)肮帐,就有內(nèi)容脫離了塊。
如下代碼:
<div class="container">
hi,imooc!
</div>
css代碼:
<style>
.container{
height:100px;
line-height:100px;
background:#999;
}
</style>
垂直居中-父元素高度確定的多行文本(方法一)
父元素高度確定的多行文本漱逸、圖片等的豎直居中的方法有兩種:
方法一:使用插入 table (包括tbody泪姨、tr游沿、td)標(biāo)簽饰抒,同時(shí)設(shè)置 vertical-align:middle。
css 中有一個(gè)用于豎直居中的屬性 vertical-align诀黍,在父元素設(shè)置此樣式時(shí)袋坑,會(huì)對inline-block類型的子元素都有用。下面看一下例子:
html代碼:
<body>
<table><tbody><tr><td class="wrap">
<div>
<p>看我是否可以居中眯勾。</p>
</div>
</td></tr></tbody></table>
</body>
css代碼:
table td{height:500px;background:#ccc}
因?yàn)?td 標(biāo)簽?zāi)J(rèn)情況下就默認(rèn)設(shè)置了 vertical-align 為 middle枣宫,所以我們不需要顯式地設(shè)置了。
垂直居中-父元素高度確定的多行文本(方法二)
除了上一節(jié)講到的插入table標(biāo)簽吃环,可以使父元素高度確定的多行文本垂直居中之外也颤,本節(jié)介紹另外一種實(shí)現(xiàn)這種效果的方法。但這種方法兼容性比較差郁轻,只是提供大家學(xué)習(xí)參考翅娶。
在 chrome、firefox 及 IE8 以上的瀏覽器下可以設(shè)置塊級(jí)元素的 display 為 table-cell(設(shè)置為表格單元顯示)好唯,激活 vertical-align 屬性竭沫,但注意 IE6、7 并不支持這個(gè)樣式, 兼容性比較差骑篙。
html代碼:
<div class="container">
<div>
<p>看我是否可以居中蜕提。</p>
<p>看我是否可以居中。</p>
<p>看我是否可以居中靶端。</p>
</div>
</div>
css代碼:
<style>
.container{
height:300px;
background:#ccc;
display:table-cell;/*IE8以上及Chrome谎势、Firefox*/
vertical-align:middle;/*IE8以上及Chrome凛膏、Firefox*/
}
</style>
這種方法的好處是不用添加多余的無意義的標(biāo)簽,但缺點(diǎn)也很明顯它浅,它的兼容性不是很好译柏,不兼容 IE6、7而且這樣修改display的block變成了table-cell姐霍,破壞了原有的塊狀元素的性質(zhì)鄙麦。
隱性改變display類型
有一個(gè)有趣的現(xiàn)象就是當(dāng)為元素(不論之前是什么類型元素,display:none 除外)設(shè)置以下 2 個(gè)句之一:
float : left 或 float:right
簡單來說镊折,只要html代碼中出現(xiàn)以上兩句之一胯府,元素的display顯示類型就會(huì)自動(dòng)變?yōu)橐?display:inline-block(塊狀元素)的方式顯示,當(dāng)然就可以設(shè)置元素的 width 和 height 了恨胚,且默認(rèn)寬度不占滿父元素骂因。
如下面的代碼,小伙伴們都知道 a 標(biāo)簽是 行內(nèi)元素 赃泡,所以設(shè)置它的 width 是 沒有效果的寒波,但是設(shè)置為 position:absolute 以后,就可以了升熊。
<div class="container">
<a href="#" title="">進(jìn)入課程請單擊這里</a>
</div>
css代碼
<style>
.container a{
position:absolute;
width:200px;
background:#ccc;
}
</style>
想不起 display:inline-block 是做什么的小伙伴們俄烁,單擊“元素分類--內(nèi)聯(lián)塊狀元素”可返回到前面小節(jié)進(jìn)行復(fù)習(xí)。
上一篇:HTML+CSS入門篇(上)
下一篇:JavaScript入門篇