CSS

CSS全稱為“層疊樣式表 (Cascading Style Sheets)”,它主要是用于定義HTML內(nèi)容在瀏覽器內(nèi)的顯示樣式隅俘,如文字大小牙瓢、顏色、字體加粗等阅羹。

使用CSS樣式的一個好處是通過定義某個樣式勺疼,可以讓不同網(wǎng)頁位置的文字有著統(tǒng)一的字體、字號或者顏色等捏鱼。

p{

???font-size:30px;/*設(shè)置文字字號*/

???color:red;/*設(shè)置文字顏色*/

???font-weight:bold;/*設(shè)置字體加粗*/

}

span{

???color:blue;

}

css 樣式由選擇符和聲明組成执庐,而聲明又由屬性和值組成,如下圖所示:

選擇符:又稱選擇器穷躁,指明網(wǎng)頁中要應用樣式規(guī)則的元素耕肩,如本例中是網(wǎng)頁中所有的段(p)的文字將變成藍色,而其他的元素(如ol)不會受到影響问潭。

聲明:在英文大括號“{}”中的的就是聲明猿诸,屬性和值之間用英文冒號“:”分隔。當有多條聲明時狡忙,中間可以英文分號“;”分隔梳虽,如下所示:

p{font-size:12px;color:red;}

注意:

1、最后一條聲明可以沒有分號灾茁,但是為了以后修改方便窜觉,一般也加上分號。

2北专、為了使用樣式更加容易閱讀禀挫,可以將每條代碼寫在一個新行內(nèi),如下所示:

<style type="text/css">

p{

???font-size:12px;

???color:red;

???font-weight:bold;

}

</style>

CSS注釋代碼

就像在Html的注釋一樣拓颓,在CSS中也有注釋語句:用/*注釋語句*/來標明(Html中使用<!--注釋語句-->)语婴。

內(nèi)聯(lián)式css樣式,直接寫在現(xiàn)有的HTML標簽中

CSS樣式可以寫在哪些地方呢驶睦?從CSS 樣式代碼插入的形式來看基本可以分為以下3種:內(nèi)聯(lián)式砰左、嵌入式和外部式三種。這一小節(jié)先來講解內(nèi)聯(lián)式场航。

內(nèi)聯(lián)式css樣式表就是把css代碼直接寫在現(xiàn)有的HTML標簽中缠导,如下面代碼:

<p style="color:red">這里文字是紅色。</p>

注意要寫在元素的開始標簽里溉痢,下面這種寫法是錯誤的:

<p>這里文字是紅色僻造。</p style="color:red">

并且css樣式代碼要寫在style=""雙引號中憋他,如果有多條css樣式代碼設(shè)置可以寫在一起,中間用分號隔開嫡意。如下代碼:

<p style="color:red;font-size:12px">這里文字是紅色举瑰。</p>

嵌入式css樣式,寫在當前的文件中

現(xiàn)在有一任務蔬螟,把右側(cè)編輯器中的“超酷的互聯(lián)網(wǎng)”此迅、“服務及時貼心”、“有趣易學”這三個短詞文字字號修改為18px旧巾。如果用上節(jié)課我們學習的內(nèi)聯(lián)式css樣式的方法進行設(shè)置將是一件很頭疼的事情(為每一個<span>標簽加入sytle="font-size:18px"語句)耸序,本小節(jié)講解一種新的方法嵌入式css樣式來實現(xiàn)這個任務。

嵌入式css樣式鲁猩,就是可以把css樣式代碼寫在<style type="text/css"></style>標簽之間坎怪。如下面代碼實現(xiàn)把三個<span>標簽中的文字設(shè)置為紅色:

<style type="text/css">

span{

color:red;

}

</style>

嵌入式css樣式必須寫在<style></style>之間,并且一般情況下嵌入式css樣式寫在<head></head>之間廓握。如右邊編輯器中的代碼搅窿。

外部式css樣式,寫在單獨的一個文件中

外部式css樣式(也可稱為外聯(lián)式)就是把css代碼寫一個單獨的外部文件中隙券,這個css樣式文件以“.css”為擴展名男应,在<head>內(nèi)(不是在<style>標簽內(nèi))使用<link>標簽將css樣式文件鏈接到HTML文件內(nèi),如下面代碼:

<link href="base.css" rel="stylesheet" type="text/css" />

注意:

1娱仔、css樣式文件名稱以有意義的英文字母命名沐飘,如 main.css。

2牲迫、rel="stylesheet" type="text/css" 是固定寫法不可修改耐朴。

3、<link>標簽位置一般寫在<head>標簽之內(nèi)盹憎。

三種方法的優(yōu)先級

有的小伙伴問了筛峭,如果有一種情況:對于同一個元素我們同時用了三種方法設(shè)置css樣式,那么哪種方法真正有效呢陪每?在右邊編輯器就出現(xiàn)了這種情況

1影晓、使用內(nèi)聯(lián)式CSS設(shè)置“超酷的互聯(lián)網(wǎng)”文字為粉色。

2奶稠、然后使用嵌入式CSS來設(shè)置文字為紅色俯艰。

3捡遍、最后又使用外部式設(shè)置文字為藍色(style.css文件中設(shè)置)锌订。

但最終你可以觀察到“超酷的互聯(lián)網(wǎng)”這個短詞的文本被設(shè)置為了粉色。因為這三種樣式是有優(yōu)先級的画株,記住他們的優(yōu)先級:內(nèi)聯(lián)式?>?嵌入式 > 外部式

但是嵌入式>外部式有一個前提:嵌入式css樣式的位置一定在外部式的后面辆飘。如右代碼編輯器就是這樣啦辐,<link href="style.css" ...>代碼在<style type="text/css">...</style>代碼的前面(實際開發(fā)中也是這么寫的)。感興趣的小伙伴可以試一下蜈项,把它們調(diào)換順序芹关,再看他們的優(yōu)先級是否變化。

其實總結(jié)來說紧卒,就是--就近原則(離被設(shè)置元素越近優(yōu)先級別越高)侥衬。

但注意上面所總結(jié)的優(yōu)先級是有一個前提:內(nèi)聯(lián)式、嵌入式跑芳、外部式樣式表中css樣式是在的相同權(quán)值的情況下轴总,什么是權(quán)值呢?在后面的9-2小節(jié)中會講解到博个。

什么是選擇器怀樟?

每一條css樣式聲明(定義)由兩部分組成,形式如下:

選擇器{

??? 樣式;

}

在{}之前的部分就是“選擇器”盆佣,“選擇器”指明了{}中的“樣式”的作用對象往堡,也就是“樣式”作用于網(wǎng)頁中的哪些元素。

標簽選擇器

標簽選擇器其實就是html代碼中的標簽共耍。如右側(cè)代碼編輯器中的<html>虑灰、<body>、<h1>征堪、<p>瘩缆、<img>。例如下面代碼:

p{font-size:12px;line-height:1.6em;}

上面的css樣式代碼的作用:為p標簽設(shè)置12px字號佃蚜,行間距設(shè)置1.6em的樣式庸娱。

h1{

????font-weight:normal;/*去掉粗體樣式*/

????color:red;

}

類選擇器

類選擇器在css樣式編碼中是最常用到的,如右側(cè)代碼編輯器中的代碼:可以實現(xiàn)為“膽小如鼠”谐算、“勇氣”字體設(shè)置為紅色熟尉。

語法:

.類選器名稱{css樣式代碼;}

注意:

1、英文圓點開頭

2洲脂、其中類選器名稱可以任意起名(但不要起中文噢)

使用方法:

第一步:使用合適的標簽把要修飾的內(nèi)容標記起來斤儿,如下:

<span>膽小如鼠</span>

第二步:使用class="類選擇器名稱"為標簽設(shè)置一個類,如下:

<span class="stress">膽小如鼠</span>

第三步:設(shè)置類選器css樣式恐锦,如下:

.stress{color:red;}/*類前面要加入一個英文圓點*/

ID選擇器

在很多方面往果,ID選擇器都類似于類選擇符,但也有一些重要的區(qū)別:

1一铅、為標簽設(shè)置id="ID名稱"陕贮,而不是class="類名稱"。

2潘飘、ID選擇符的前面是井號(#)號肮之,而不是英文圓點(.)掉缺。

類和ID選擇器的區(qū)別

學習了類選擇器和ID選擇器,我們會發(fā)現(xiàn)他們之間有很多的相似處戈擒,是不是兩者可以通用呢眶明?我們不要著急先來總結(jié)一下他們的相同點和不同點:

相同點:可以應用于任何元素

不同點:

1、ID選擇器只能在文檔中使用一次筐高。與類選擇器不同搜囱,在一個HTML文檔中,ID選擇器只能使用一次柑土,而且僅一次犬辰。而類選擇器可以使用多次。

2冰单、可以使用類選擇器詞列表方法為一個元素同時設(shè)置多個樣式幌缝。我們可以為一個元素同時設(shè)多個樣式,但只可以用類選擇器的方法實現(xiàn)诫欠,ID選擇器是不可以的(不能使用 ID 詞列表)涵卵。

子選擇器

還有一個比較有用的選擇器子選擇器,即大于符號(>),用于選擇指定標簽元素的第一代子元素荒叼。如右側(cè)代碼編輯器中的代碼:

.food>li{border:1px solid red;}

這行代碼會使class名為food下的子元素li加入紅色實線邊框轿偎。

<style type="text/css">

.food>li{border:1px solid red;}/*添加邊框樣式(粗細為1px, 顏色為紅色的實線)*/

.first>span{border:1px solid red;}

</style>

包含選擇器被廓,即加入空格,用于選擇指定標簽元素下的后輩元素坏晦。如右側(cè)代碼編輯器中的代碼:

.first? span{color:red;}

這行代碼會使第一段文字內(nèi)容中的“膽小如鼠”字體顏色變?yōu)榧t色。

請注意這個選擇器與子選擇器的區(qū)別嫁乘,子選擇器(child selector)僅是指它的直接后代昆婿,或者你可以理解為作用于子元素的第一代后代。而后代選擇器是作用于所有子后代元素蜓斧。后代選擇器通過空格來進行選擇仓蛆,而子選擇器是通過“>”進行選擇。

總結(jié):>作用于元素的第一代后代挎春,空格作用于元素的所有后代看疙。

通用選擇器

通用選擇器是功能最強大的選擇器,它使用一個(*)號指定直奋,它的作用是匹配html中所有標簽元素能庆,如下使用下面代碼使用html中任意標簽元素字體顏色全部設(shè)置為紅色:

* {color:red;}

偽類選擇符

更有趣的是偽類選擇符,為什么叫做偽類選擇符脚线,它允許給html不存在的標簽(標簽的某種狀態(tài))設(shè)置樣式搁胆,比如說我們給html中一個標簽元素的鼠標滑過的狀態(tài)來設(shè)置字體顏色:

a:hover{color:red;}

上面一行代碼就是為 a 標簽鼠標滑過的狀態(tài)設(shè)置字體顏色變紅。這樣就會使第一段文字內(nèi)容中的“膽小如鼠”文字加入鼠標滑過字體顏色變?yōu)榧t色特效。

關(guān)于偽選擇符:

??? 關(guān)于偽類選擇符丰涉,到目前為止,可以兼容所有瀏鑒器的“偽類選擇符”就是 a 標簽上使用 :hover 了(其實偽類選擇符還有很多斯碌,尤其是 css3 中一死,但是因為不能兼容所有瀏覽器,本教程只是講了這一種最常用的)傻唾。其實 :hover 可以放在任意的標簽上投慈,比如說 p:hover,但是它們的兼容性也是很不好的冠骄,所以現(xiàn)在比較常用的還是 a:hover 的組合伪煤。

分組選擇符

當你想為html中多個標簽元素設(shè)置同一個樣式時,可以使用分組選擇符(凛辣,)抱既,如下代碼為右側(cè)代碼編輯器中的h1、span標簽同時設(shè)置字體顏色為紅色:

h1,span{color:red;}

它相當于下面兩行代碼:

h1{color:red;}

span{color:red;}

繼承

CSS的某些樣式是具有繼承性的扁誓,那么什么是繼承呢防泵?繼承是一種規(guī)則,它允許樣式不僅應用于某個特定html標簽元素蝗敢,而且應用于其后代捷泞。比如下面代碼:如某種顏色應用于p標簽,這個顏色設(shè)置不僅應用p標簽寿谴,還應用于p標簽中的所有子元素文本锁右,這里子元素為span標簽。

p{color:red;}

<p>三年級時讶泰,我還是一個<span>膽小如鼠</span>的小女孩咏瑟。</p>

可見右側(cè)結(jié)果窗口中p中的文本與span中的文本都設(shè)置為了紅色。但注意有一些css樣式是不具有繼承性的痪署。如border:1px solid red;

p{border:1px solid red;}

<p>三年級時响蕴,我還是一個<span>膽小如鼠</span>的小女孩。</p>

在上面例子中它代碼的作用只是給p標簽設(shè)置了邊框為1像素惠桃、紅色浦夷、實心邊框線,而對于子元素span是沒用起到作用的辜王。

特殊性

有的時候我們?yōu)橥粋€元素設(shè)置了不同的CSS樣式代碼劈狐,那么元素會啟用哪一個CSS樣式呢?我們來看一下面的代碼:

p{color:red;}

.first{color:green;}

<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩呐馆。</p>

p和.first都匹配到了p這個標簽上肥缔,那么會顯示哪種顏色呢?green是正確的顏色汹来,那么為什么呢续膳?是因為瀏覽器是根據(jù)權(quán)值來判斷使用哪種css樣式的改艇,權(quán)值高的就使用哪種css樣式。

下面是權(quán)值的規(guī)則:

標簽的權(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*/

注意:還有一個權(quán)值比較特殊--繼承也有權(quán)值但很低社付,有的文獻提出它只有0.1承疲,所以可以理解為繼承的權(quán)值最低。

層疊

我們來思考一個問題:如果在html文件中對于同一個元素可以有多個css樣式存在并且這多個css樣式具有相同權(quán)重值怎么辦鸥咖?好燕鸽,這一小節(jié)中的層疊幫你解決這個問題。

層疊就是在html文件中對于同一個元素可以有多個css樣式存在啼辣,當有相同權(quán)重的樣式存在時啊研,會根據(jù)這些css樣式的前后順序來決定,處于最后面的css樣式會被應用鸥拧。

如下面代碼:

p{color:red;}

p{color:green;}

<p class="first">三年級時悲伶,我還是一個<span>膽小如鼠</span>的小女孩。</p>

最后 p 中的文本會設(shè)置為green住涉,這個層疊很好理解麸锉,理解為后面的樣式會覆蓋前面的樣式。

所以前面的css樣式優(yōu)先級就不難理解了:

內(nèi)聯(lián)樣式表(標簽內(nèi)部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)舆声。

重要性

我們在做網(wǎng)頁代碼的時花沉,有些特殊的情況需要為某些樣式設(shè)置具有最高權(quán)值,怎么辦媳握?這時候我們可以使用!important來解決墩蔓。

如下代碼:

p{color:red!important;}

p{color:green;}

<p class="first">三年級時陕赃,我還是一個<span>膽小如鼠</span>的小女孩。</p>

這時 p 段落中的文本會顯示的red紅色。

注意:!important要寫在分號的前面

這里注意當網(wǎng)頁制作者不設(shè)置css樣式時绒北,瀏覽器會按照自己的一套樣式來顯示網(wǎng)頁菲宴。并且用戶也可以在瀏覽器中設(shè)置自己習慣的樣式速蕊,比如有的用戶習慣把字號設(shè)置為大一些途乃,使其查看網(wǎng)頁的文本更加清楚。這時注意樣式優(yōu)先級為:瀏覽器默認的樣式 < 網(wǎng)頁制作者樣式 < 用戶自己設(shè)置的樣式幻枉,但記住!important優(yōu)先級樣式是個例外碰声,權(quán)值高于用戶自己設(shè)置的樣式。

文字排版--字體

我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體熬甫、字號胰挑、顏色等樣式屬性。下面我們來看一個例子,下面代碼實現(xiàn):為網(wǎng)頁中的文字設(shè)置字體為宋體瞻颂。

body{font-family:"宋體";}

這里注意不要設(shè)置不常用的字體豺谈,因為如果用戶本地電腦上如果沒有安裝你設(shè)置的字體,就會顯示瀏覽器默認的字體贡这。(因為用戶是否可以看到你設(shè)置的字體樣式取決于用戶本地電腦上是否安裝你設(shè)置的字體茬末。)

現(xiàn)在一般網(wǎng)頁喜歡設(shè)置“微軟雅黑”,如下代碼:

body{font-family:"Microsoft Yahei";}

body{font-family:"微軟雅黑";}

注意:第一種方法比第二種方法兼容性更好一些藕坯。

因為這種字體即美觀又可以在客戶端安全的顯示出來(用戶本地一般都是默認安裝的)。

文字排版--字號噪沙、顏色

可以使用下面代碼設(shè)置網(wǎng)頁中文字的字號為12像素炼彪,并把字體顏色設(shè)置為#666(灰色):

body{font-size:12px;color:#666}

文字排版--粗體

我們還可以使用css樣式來改變文字的樣式:粗體、斜體正歼、下劃線辐马、刪除線,可以使用下面代碼實現(xiàn)設(shè)置文字以粗體樣式顯示出來局义。

p span{font-weight:bold;}

在這里大家可以看到喜爷,如果想為文字設(shè)置粗體是有單獨的css樣式來實現(xiàn)的,再不用為了實現(xiàn)粗體樣式而使用h1-h6或strong標簽了萄唇。

文字排版--斜體

以下代碼可以實現(xiàn)文字以斜體樣式在瀏覽器中顯示:

p a{font-style:italic;}

<p>三年級時檩帐,我還是一個<a>膽小如鼠</a>的小女孩。</p>

文字排版--下劃線

有些情況下想為文字設(shè)置為下劃線樣式另萤,這樣可以在視覺上強調(diào)文字湃密,可以使用下面代碼來實現(xiàn):

p a{text-decoration:underline;}

<p>三年級時,我還是一個<a>膽小如鼠</a>的小女孩四敞。</p>

文字排版--刪除線

如果想在網(wǎng)頁上設(shè)置刪除線怎么辦泛源,這個樣式在電商網(wǎng)站上常會見到:

上圖中的原價上的刪除線使用下面代碼就可以實現(xiàn):

.oldPrice{text-decoration:line-through;}

段落排版--縮進

中文文字中的段前習慣空兩個文字的空白,這個特殊的樣式可以用下面代碼來實現(xiàn):

p{text-indent:2em;}

<p>1922年的春天忿危,一個想要成名名叫尼克卡拉威(托比?馬奎爾Tobey Maguire 飾)的作家达箍,離開了美國中西部,來到了紐約铺厨。那是一個道德感漸失缎玫,爵士樂流行,走私為王解滓,股票飛漲的時代碘梢。為了追尋他的美國夢,他搬入紐約附近一海灣居住伐蒂。</p>

注意:2em的意思就是文字的2倍大小煞躬。

段落排版--行間距(行高)

這一小節(jié)我們來學習一下另一個在段落排版中起重要作用的行間距(行高)屬性(line-height),如下代碼實現(xiàn)設(shè)置段落行間距為1.5倍。

p{line-height:1.5em;}

<p>菲茨杰拉德恩沛,二十世紀美國文學巨擘之一在扰,兼具作家和編劇雙重身份。他以詩人的敏感和戲劇家的想象為"爵士樂時代"吟唱華麗挽歌雷客,其詩人和夢想家的氣質(zhì)亦為那個奢靡年代的不二注解芒珠。</p>

段落排版--中文字間距、字母間距

中文字間隔搅裙、字母間隔設(shè)置:

如果想在網(wǎng)頁排版中設(shè)置文字間隔或者字母間隔就可以使用????letter-spacing?來實現(xiàn)皱卓,如下面代碼:

h1{

??? letter-spacing:50px;

}

...

<h1>了不起的蓋茨比</h1>

注意:這個樣式使用在英文單詞時,是設(shè)置字母與字母之間的間距部逮。

單詞間距設(shè)置:

如果我想設(shè)置英文單詞之間的間距呢娜汁?可以使用?word-spacing?來實現(xiàn)。如下代碼:

h1{

??? word-spacing:50px;

}

...

<h1>welcome to imooc!</h1>

段落排版--對齊

想為塊狀元素中的文本兄朋、圖片設(shè)置居中樣式嗎掐禁?可以使用text-align樣式代碼,如下代碼可實現(xiàn)文本居中顯示颅和。(那么什么是塊狀元素呢傅事?在后面的11-1、11-2小節(jié)中會講到峡扩。)

h1{

??? text-align:center;

}

<h1>了不起的蓋茨比</h1>

同樣可以設(shè)置居左:

h1{

??? text-align:left;

}

<h1>了不起的蓋茨比</h1>

還可以設(shè)置居右:

h1{

??? text-align:right;

}

<h1>了不起的蓋茨比</h1>

元素分類

在講解CSS布局之前蹭越,我們需要提前知道一些知識,在CSS中教届,html中的標簽元素大體被分為三種不同的類型:塊狀元素般又、內(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>

元素分類--塊級元素

什么是塊級元素逗鸣?在html中<div>、 <p>绰精、<h1>撒璧、<form>、<ul> 和 <li>就是塊級元素笨使。設(shè)置display:block就是將元素顯示為塊級元素卿樱。如下代碼就是將內(nèi)聯(lián)元素a轉(zhuǎn)換為塊狀元素,從而使a元素具有塊狀元素特點阱表。

a{display:block;}

塊級元素特點:

1殿如、每個塊級元素都從新的一行開始贡珊,并且其后的元素也另起一行最爬。(真霸道,一個塊級元素獨占一行)

2门岔、元素的高度爱致、寬度、行高以及頂和底邊距都可設(shè)置寒随。

3糠悯、元素寬度在不設(shè)置的情況下,是它本身父容器的100%(和父元素的寬度一致)妻往,除非設(shè)定一個寬度互艾。

元素分類--內(nèi)聯(lián)元素

在html中,<span>讯泣、<a>纫普、<label>、 <strong> 和<em>就是典型的內(nèi)聯(lián)元素(行內(nèi)元素)(inline)元素好渠。當然塊狀元素也可以通過代碼display:inline將元素設(shè)置為內(nèi)聯(lián)元素昨稼。如下代碼就是將塊狀元素div轉(zhuǎn)換為內(nèi)聯(lián)元素,從而使 div 元素具有內(nèi)聯(lián)元素特點拳锚。

div{

???? display:inline;

}

......

<div>我要變成內(nèi)聯(lián)元素</div>

內(nèi)聯(lián)元素特點:

1假栓、和其他元素都在一行上;

2霍掺、元素的高度匾荆、寬度及頂部和底部邊距不可設(shè)置拌蜘;

3、元素的寬度就是它包含的文字或圖片的寬度棋凳,不可改變拦坠。

元素分類--內(nèi)聯(lián)塊狀元素

內(nèi)聯(lián)塊狀元素(inline-block)就是同時具備內(nèi)聯(lián)元素、塊狀元素的特點剩岳,代碼display:inline-block就是將元素設(shè)置為內(nèi)聯(lián)塊狀元素贞滨。(css2.1新增),<img>拍棕、<input>標簽就是這種內(nèi)聯(lián)塊狀標簽晓铆。

inline-block 元素特點:

1、和其他元素都在一行上绰播;

2骄噪、元素的高度、寬度蠢箩、行高以及頂和底邊距都可設(shè)置链蕊。

盒模型--邊框(一)

盒子模型的邊框就是圍繞著內(nèi)容及補白的線,這條線你可以設(shè)置它的粗細谬泌、樣式和顏色(邊框三個屬性)滔韵。

如下面代碼為 div 來設(shè)置邊框粗細為 2px、樣式為實心的掌实、顏色為紅色的邊框:

div{

??? border:2px? solid? red;

}

上面是 border 代碼的縮寫形式陪蜻,可以分開寫:

div{

??? border-width:2px;

??? border-style:solid;

??? border-color:red;

}

注意:

1、border-style(邊框樣式)常見樣式有:

dashed(虛線)| dotted(點線)| solid(實線)贱鼻。

2宴卖、border-color(邊框顏色)中的顏色可設(shè)置為十六進制顏色,如:

border-color:#888;//前面的井號不要忘掉邻悬。

3症昏、border-width(邊框?qū)挾龋┲械膶挾纫部梢栽O(shè)置為:

thin | medium | thick(但不是很常用),最常還是用象素(px)父丰。

盒模型--邊框(二)

現(xiàn)在有一個問題肝谭,如果有想為 p 標簽單獨設(shè)置下邊框,而其它三邊都不設(shè)置邊框樣式怎么辦呢础米?css 樣式中允許只為一個方向的邊框設(shè)置樣式:

div{border-bottom:1px solid red;}

同樣可以使用下面代碼實現(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)容范圍。

因此一個元素實際寬度(盒子的寬度)=左邊界+左邊框+左填充+內(nèi)容寬度+右填充+右邊框+右邊界蘑斧。

元素的高度也是同理靖秩。

盒模型--填充

元素內(nèi)容與邊框之間是可以設(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粹淋、流動模型(Flow)

2吸祟、浮動模型 (Float)

3瑟慈、層模型(Layer)

流動模型(一)

先來說一說流動模型,流動(Flow)是默認的網(wǎng)頁布局模式屋匕。也就是說網(wǎng)頁在默認狀態(tài)下的 HTML 網(wǎng)頁元素都是根據(jù)流動模型來分布網(wǎng)頁內(nèi)容的葛碧。

流動布局模型具有2個比較典型的特征:

第一點,塊狀元素都會在所處的包含元素內(nèi)自上而下按順序垂直延伸分布过吻,因為在默認狀態(tài)下进泼,塊狀元素的寬度都為100%。實際上纤虽,塊狀元素都會以行的形式占據(jù)位置缘琅。

流動模型(二)

第二點,在流動模型下廓推,內(nèi)聯(lián)元素都會在所處的包含元素內(nèi)從左到右水平分布顯示刷袍。(內(nèi)聯(lián)元素可不像塊狀元素這么霸道獨占一行)

右側(cè)代碼編輯器中內(nèi)聯(lián)元素標簽a、span樊展、em呻纹、strong都是內(nèi)聯(lián)元素。

浮動模型

塊狀元素這么霸道都是獨占一行专缠,如果現(xiàn)在我們想讓兩個塊狀元素并排顯示雷酪,怎么辦呢?不要著急涝婉,設(shè)置元素浮動就可以實現(xiàn)這一愿望哥力。

任何元素在默認情況下是不能浮動的,但可以用 CSS 定義為浮動墩弯,如 div吩跋、p、table渔工、img 等元素都可以被定義為浮動锌钮。如下代碼可以實現(xiàn)兩個 div 元素一行顯示。

div{

??? width:200px;

??? height:200px;

??? border:2px red solid;

??? float:left;

}

<div id="div1"></div>

<div id="div2"></div>

當然你也可以同時設(shè)置兩個元素右浮動也可以實現(xiàn)一行顯示引矩。

div{

??? width:200px;

??? height:200px;

??? border:2px red solid;

??? float:right;

}

又有小伙伴問了梁丘,設(shè)置兩個元素一左一右可以實現(xiàn)一行顯示嗎?當然可以:

div{

??? width:200px;

??? height:200px;

??? border:2px red solid;

}

#div1{float:left;}

#div2{float:right;}

什么是層模型旺韭?

什么是層布局模型氛谜?層布局模型就像是圖像軟件PhotoShop中非常流行的圖層編輯功能一樣,每個圖層能夠精確定位操作区端,但在網(wǎng)頁設(shè)計領(lǐng)域值漫,由于網(wǎng)頁大小的活動性,層布局沒能受到熱捧珊燎。但是在網(wǎng)頁上局部使用層布局還是有其方便之處的惭嚣。下面我們來學習一下html中的層布局遵湖。

如何讓html元素在網(wǎng)頁中精確定位,就像圖像軟件PhotoShop中的圖層一樣可以對每個圖層能夠精確定位操作晚吞。CSS定義了一組定位(positioning)屬性來支持層布局模型延旧。

層模型有三種形式:

1、絕對定位(position: absolute)

2槽地、相對定位(position: relative)

3迁沫、固定定位(position: fixed)

層模型--絕對定位

如果想為元素設(shè)置層模型中的絕對定位,需要設(shè)置position:absolute(表示絕對定位)捌蚊,這條語句的作用將元素從文檔流中拖出來集畅,然后使用left、right缅糟、top挺智、bottom屬性相對于其最接近的一個具有定位屬性的父包含塊進行絕對定位。如果不存在這樣的包含塊窗宦,則相對于body元素赦颇,即相對于瀏覽器窗口。

如下面代碼可以實現(xiàn)div元素相對于瀏覽器窗口向右移動100px赴涵,向下移動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)方式生成一個元素(并且元素像層一樣浮動了起來),然后相對于以前的位置移動擂啥,移動的方向和幅度由left哄陶、right帆阳、top哺壶、bottom屬性確定,偏移前的位置保留不動蜒谤。

如下代碼實現(xiàn)相對于以前位置向下移動50px山宾,向右移動100px;

#div1{

??? width:200px;

??? height:200px;

??? border:2px red solid;

??? position:relative;

??? left:100px;

??? top:50px;

}

<div id="div1"></div>

什么叫做“偏移前的位置保留不動”呢?

大家可以做一個實驗鳍徽,在右側(cè)代碼編輯器的19行div標簽的后面加入一個span標簽资锰,在標并在span標簽中寫入一些文字。如下代碼:

<body>

??? <div id="div1"></div><span>偏移前的位置還保留不動阶祭,覆蓋不了前面的div沒有偏移前的位置</span>

</body>

從效果圖中可以明顯的看出绷杜,雖然div元素相對于以前的位置產(chǎn)生了偏移直秆,但是div元素以前的位置還是保留著,所以后面的span元素是顯示在了div元素以前位置的后面鞭盟。

層模型--固定定位

fixed:表示固定定位圾结,與absolute定位類型類似,但它的相對移動的坐標是視圖(屏幕內(nèi)的網(wǎng)頁窗口)本身齿诉。由于視圖本身是固定的筝野,它不會隨瀏覽器窗口的滾動條滾動而變化,除非你在屏幕中移動瀏覽器窗口的屏幕位置粤剧,或改變?yōu)g覽器窗口的顯示大小歇竟,因此固定定位的元素會始終位于瀏覽器窗口內(nèi)視圖的某個位置,不會受文檔流動影響抵恋,這與background-attachment:fixed;屬性功能相同焕议。以下代碼可以實現(xiàn)相對于瀏覽器視圖向右移動100px,向下移動50px弧关。并且拖動滾動條時位置固定不變号坡。

#div1{

??? width:200px;

??? height:200px;

??? border:2px red solid;

??? position:fixed;

??? left:100px;

??? top:50px;

}

<p>文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。</p>

....

Relative與Absolute組合使用

小伙伴們學習了12-6小節(jié)的絕對定位的方法:使用position:absolute可以實現(xiàn)被設(shè)置元素相對于瀏覽器(body)設(shè)置定位以后梯醒,大家有沒有想過可不可以相對于其它元素進行定位呢宽堆?答案是肯定的,當然可以茸习。使用position:relative來幫忙畜隶,但是必須遵守下面規(guī)范:

1、參照定位的元素必須是相對定位元素的前輩元素:

<div id="box1"><!--參照定位的元素-->

??? <div id="box2">相對參照元素進行定位</div><!--相對定位元素-->

</div>

從上面代碼可以看出box1是box2的父元素(父元素當然也是前輩元素了)号胚。

2籽慢、參照定位的元素必須加入position:relative;

#box1{

??? width:200px;

??? height:200px;

??? position:relative; ??????

}

3、定位元素加入position:absolute猫胁,便可以使用top箱亿、bottom、left弃秆、right來進行偏移定位了届惋。

#box2{

??? position:absolute;

??? top:20px;

??? left:30px;????????

}

這樣box2就可以相對于父元素box1定位了(這里注意參照物就可以不是瀏覽器了,而可以自由設(shè)置了)菠赚。

盒模型代碼簡寫

還記得在講盒模型時外邊距(margin)脑豹、內(nèi)邊距(padding)和邊框(border)設(shè)置上下左右四個方向的邊距是按照順時針方向設(shè)置的:上右下左。具體應用在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樣式也是可以縮寫的,當你設(shè)置的顏色是16進制的色彩值時迄损,如果每兩位的值相同定躏,可以縮寫一半。

例子1:

p{color:#000000;}

可以縮寫為:

p{color: #000;}

例子2:

p{color: #336699;}

可以縮寫為:

p{color: #369;}

字體縮寫

網(wǎng)頁中的字體css樣式代碼也有他自己的縮寫方式芹敌,下面是給網(wǎng)頁設(shè)置字體的代碼:

body{

??? font-style:italic;//設(shè)置字體為斜體

??? font-variant:small-caps; //區(qū)分大小寫痊远,瀏覽器會顯示小型大寫字母的字體

??? font-weight:bold; //設(shè)置粗體

??? font-size:12px; //字號是12像素

??? line-height:1.5em; //行間距(行高)1.5個行倍

??? font-family:"宋體",sans-serif;//設(shè)置中文字體為宋體,英文字體為sans-serif

}

這么多行的代碼其實可以縮寫為一句:

body{

??? font:italic? small-caps? bold? 12px/1.5em? "宋體",sans-serif;

}

注意:

1氏捞、使用這一簡寫方式你至少要指定 font-size 和 font-family 屬性碧聪,其他的屬性(如 font-weight、font-style液茎、font-variant逞姿、line-height)如未指定將自動使用默認值。

2捆等、在縮寫時 font-size 與 line-height 中間要加入“/”斜扛滞造。

一般情況下因為對于中文網(wǎng)站,英文還是比較少的栋烤,所以下面縮寫代碼比較常用:

body{

??? font:12px/1.5em? "宋體",sans-serif;

}

只是有字號谒养、行間距、中文字體明郭、英文字體設(shè)置买窟。

顏色值

在網(wǎng)頁中的顏色設(shè)置是非常重要,有字體顏色(color)达址、背景顏色(background-color)蔑祟、邊框顏色(border)等,設(shè)置顏色的方法也有很多種:

1沉唠、英文命令顏色

前面幾個小節(jié)中經(jīng)常用到的就是這種設(shè)置方法:

p{color:red;}

2、RGB顏色

這個與 photoshop 中的 RGB 顏色是一致的苛败,由 R(red)满葛、G(green)径簿、B(blue) 三種顏色的比例來配色。

p{color:rgb(133,45,200);}

每一項的值可以是 0~255 之間的整數(shù)嘀韧,也可以是 0%~100% 的百分數(shù)篇亭。如:

p{color:rgb(20%,33%,25%);}

3晤揣、十六進制顏色

這種顏色設(shè)置方法是現(xiàn)在比較普遍使用的方法鸥跟,其原理其實也是 RGB 設(shè)置,但是其每一項的值由 0-255 變成了十六進制 00-ff悬包。

p{color:#00ffff;}

長度值

長度單位總結(jié)一下谊却,目前比較常用到px(像素)柔昼、em、% 百分比炎辨,要注意其實這三種單位都是相對單位捕透。

1、像素

像素為什么是相對單位呢碴萧?因為像素指的是顯示器上的小點(CSS規(guī)范中假設(shè)“90像素=1英寸”)乙嘀。實際情況是瀏覽器會使用顯示器的實際像素值有關(guān),在目前大多數(shù)的設(shè)計者都傾向于使用像素(px)作為單位破喻。

2虎谢、em?

就是本元素給定字體的 font-size 值,如果元素的 font-size 為 14px 曹质,那么 1em = 14px嘉冒;如果 font-size 為 18px,那么 1em = 18px咆繁。如下代碼:

p{font-size:12px;text-indent:2em;}

上面代碼就是可以實現(xiàn)段落首行縮進 24px(也就是兩個字體大小的距離)讳推。

下面注意一個特殊情況:

但當給 font-size 設(shè)置單位為?em?時,此時計算的標準以 p 的父元素的 font-size 為基礎(chǔ)玩般。如下代碼:

html:

<p>以這個<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è)置水平居中的場景,比如為了美觀匀伏,文章的標題一般都是水平居中顯示的洒忧。

這里我們又得分兩種情況:行內(nèi)元素?還是?塊狀元素?,塊狀元素里面又分為定寬塊狀元素够颠,以及不定寬塊狀元素熙侍。今天我們先來了解一下行內(nèi)元素怎么進行水平居中?

如果被設(shè)置元素為文本、圖片等行內(nèi)元素時蛉抓,水平居中是通過給父元素設(shè)置?text-align:center?來實現(xiàn)的庆尘。(父元素和子元素:如下面的html代碼中,div是“我想要在父容器中水平居中顯示”這個文本的父元素巷送。反之這個文本是div的子元素?)如下代碼:

html代碼:

<body>

? <div class="txtCenter">我想要在父容器中水平居中顯示驶忌。</div>

</body>

css代碼:

<style>

? .txtCenter{

??? text-align:center;

? }

</style>

水平居中設(shè)置-定寬塊狀元素

當被設(shè)置元素為?塊狀元素?時用 text-align:center 就不起作用了,這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素笑跛。

這一小節(jié)我們先來講一講定寬塊狀元素付魔。(定寬塊狀元素:塊狀元素的寬度width為固定值。)

滿足定寬和塊狀兩個條件的元素是可以通過設(shè)置“左右margin”值為“auto”來實現(xiàn)居中的飞蹂。我們來看個例子就是設(shè)置?div?這個塊狀元素水平居中:

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è)置居中,比如網(wǎng)頁上的分頁導航芥颈,因為分頁的數(shù)量是不確定的惠勒,所以我們不能通過設(shè)置寬度來限制它的彈性。(不定寬塊狀元素:塊狀元素的寬度width不固定爬坑。)

不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):

加入?table?標簽

設(shè)置?display: inline?方法:與第一種類似纠屋,顯示類型設(shè)為?行內(nèi)元素,進行不定寬元素的屬性設(shè)置

設(shè)置?position:relative?和 left:50%:利用?相對定位?的方式盾计,將元素向左偏移?50%?售担,即達到居中的目的

這一小節(jié)我們來講一下第一種方法:

為什么選擇方法一加入table標簽? 是利用table標簽的長度自適應性---即不定義其長度也不默認父元素body的長度(table其長度根據(jù)其內(nèi)文本長度決定),因此可以看做一個定寬度塊元素署辉,然后再利用定寬度塊狀居中的margin的方法族铆,使其水平居中。

第一步:為需要設(shè)置的居中的元素外面加入一個 table 標簽 ( 包括 <tbody>哭尝、<tr>哥攘、<td>?)。

第二步:為這個 table 設(shè)置“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)材鹦。

舉例如下:

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標簽逝淹,可以使不定寬塊狀元素水平居中之外,本節(jié)介紹第2種實現(xiàn)這種效果的方法桶唐,改變元素的display類型為行內(nèi)元素栅葡,利用其屬性直接設(shè)置。

第二種方法:改變塊級元素的 display 為 inline 類型(設(shè)置為?行內(nèi)元素?顯示)尤泽,然后使用?text-align:center?來實現(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)勢是不用增加無語義標簽规脸,但也存在著一些問題:它將塊狀元素的 display 類型改為 inline,變成了行內(nèi)元素醉蚁,所以少了一些功能燃辖,比如設(shè)定長度值鬼店。

水平居中總結(jié)-不定寬塊狀元素方法(三)

除了前兩節(jié)講到的插入table標簽网棍,以及改變元素的display類型,可以使不定寬塊狀元素水平居中之外妇智,本節(jié)介紹第3種實現(xiàn)這種效果的方法滥玷,設(shè)置浮動和相對定位來實現(xiàn)。

方法三:通過給父元素設(shè)置float巍棱,然后給父元素設(shè)置?position:relative?和?left:50%惑畴,子元素設(shè)置?position:relative?和?left:?-50%?來實現(xiàn)水平居中。

我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份航徙,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊如贷;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現(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)缺點,具體選用哪種方法窝稿,可以視具體情況而定楣富。

垂直居中-父元素高度確定的單行文本

我們在實際工作中也會遇到需要設(shè)置垂直居中的場景,比如好多報紙的文章標題在左右一側(cè)時伴榔,常常會設(shè)置為垂直居中纹蝴,為了用戶體驗性好。

這里我們又得分兩種情況:父元素高度確定的單行文本踪少,以及父元素高度確定的多行文本塘安。

本節(jié)我們先來看第一種父元素高度確定的單行文本, 怎么設(shè)置它為垂直居中呢?

父元素高度確定的單行文本的豎直居中的方法是通過設(shè)置父元素的?height?和line-height?高度一致來實現(xiàn)的援奢。(height: 該元素的高度兼犯,line-height: 顧名思義,行高(行間距)萝究,指在文本中免都,行與行之間的?基線間的距離?)。

line-height?與?font-size?的計算值之差帆竹,在?CSS?中成為“行間距”绕娘。分為兩半,分別加到一個文本行內(nèi)容的頂部和底部栽连。

這種文字行高與塊高一致帶來了一個弊端:當文字內(nèi)容的長度大于塊的寬時险领,就有內(nèi)容脫離了塊侨舆。

如下代碼:

<div class="container">

??? hi,imooc!

</div>

css代碼:

<style>

.container{

??? height:100px;

??? line-height:100px;

??? background:#999;

}

</style>

垂直居中-父元素高度確定的多行文本(方法一)

父元素高度確定的多行文本、圖片等的豎直居中的方法有兩種:

方法一:使用插入?table??(包括tbody绢陌、tr挨下、td)標簽,同時設(shè)置?vertical-align:middle脐湾。

css?中有一個用于豎直居中的屬性?vertical-align臭笆,在父元素設(shè)置此樣式時,會對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}

因為?td?標簽默認情況下就默認設(shè)置了?vertical-align?為?middle,所以我們不需要顯式地設(shè)置了闻鉴。

垂直居中-父元素高度確定的多行文本(方法二)

除了上一節(jié)講到的插入table標簽茵乱,可以使父元素高度確定的多行文本垂直居中之外,本節(jié)介紹另外一種實現(xiàn)這種效果的方法瓶竭。但這種方法兼容性比較差,只是提供大家學習參考斤贰。

在?chrome堵未、firefox?及?IE8?以上的瀏覽器下可以設(shè)置塊級元素的?display?為?table-cell(設(shè)置為表格單元顯示),激活?vertical-align?屬性块饺,但注意?IE6雌芽、7?并不支持這個樣式,?兼容性比較差授艰。

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>

這種方法的好處是不用添加多余的無意義的標簽谷朝,但缺點也很明顯,它的兼容性不是很好武花,不兼容?IE6圆凰、7而且這樣修改display的block變成了table-cell,破壞了原有的塊狀元素的性質(zhì)体箕。

隱性改變display類型

有一個有趣的現(xiàn)象就是當為元素(不論之前是什么類型元素专钉,display:none?除外)設(shè)置以下?2?個句之一:

?1.?position : absolute?

?2.?float : left 或?float:right?

簡單來說挑童,只要html代碼中出現(xiàn)以上兩句之一,元素的display顯示類型就會自動變?yōu)橐?display:inline-block(塊狀元素)的方式顯示跃须,當然就可以設(shè)置元素的?width?和?height?了站叼,且默認寬度不占滿父元素。

如下面的代碼菇民,小伙伴們都知道?a?標簽是?行內(nèi)元素?尽楔,所以設(shè)置它的?width?是 沒有效果的,但是設(shè)置為?position:absolute?以后玉雾,就可以了翔试。

<div class="container">

??? <a href="#" title="">進入課程請單擊這里</a>

</div>

css代碼

<style>

.container a{

??? position:absolute;

??? width:200px;

??? background:#ccc;

}

</style>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轻要,一起剝皮案震驚了整個濱河市复旬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驹碍,老刑警劉巖志秃,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钧舌,居然都是意外死亡洼冻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門屋彪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人砰嘁,你說我怎么就攤上這事矮湘】纳撸” “怎么了秀撇?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長再扭。 經(jīng)常有香客問我泛范,道長罢荡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任惧笛,我火速辦了婚禮,結(jié)果婚禮上喷众,老公的妹妹穿的比我還像新娘昌渤。我一直安慰自己膀息,他們只是感情好甸赃,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裁替,像睡著了一般襟沮。 火紅的嫁衣襯著肌膚如雪臣嚣。 梳的紋絲不亂的頭發(fā)上淹父,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天困介,我揣著相機與錄音座哩,去河邊找鬼根穷。 笑死,一個胖子當著我的面吹牛尘惧,可吹牛的內(nèi)容都是我干的喷橙。 我是一名探鬼主播贰逾,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隅熙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了驰坊?” 一聲冷哼從身側(cè)響起拳芙,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睹限,沒想到半個月后羡疗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叨恨,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡痒钝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了益愈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敏释。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜂大,靈堂內(nèi)的尸體忽然破棺而出奶浦,到底是詐尸還是另有隱情澳叉,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布瓶殃,位于F島的核電站碌燕,受9級特大地震影響愈捅,放射性物質(zhì)發(fā)生泄漏灌具。R本人自食惡果不足惜咖楣,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望珠十。 院中可真熱鬧焙蹭,春花似錦孔厉、人聲如沸撰豺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躲惰。三九已至础拨,卻和暖如春诡宗,著一層夾襖步出監(jiān)牢的瞬間塔沃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工鸽疾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留制肮,地道東北人超燃。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓意乓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親圣猎。 傳聞我的和親對象是個殘疾皇子慢显,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

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

  • CSS格式化排版 1、字體 我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體应狱、字號疾呻、顏色等樣式屬性岸蜗。下面我們來看一個例...
    張文靖同學閱讀 1,287評論 0 3
  • 本文主要是起筆記的作用,內(nèi)容來自慕課網(wǎng). 認識CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,645評論 0 30
  • 開篇十三章 1、盒模型代碼簡寫 還記得在講盒模型時外邊距(margin)炎功、內(nèi)邊距...
    多語閱讀 334評論 0 1
  • 僅為個人學習筆記蛇损,復習用 一. 定義 CSS全稱為“層疊樣式表 (Cascading Style Sheets)”...
    皮蛋豆腐醬油閱讀 192評論 0 0
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個單獨的外部文件中,這個css樣式文件以“.css...
    KunMitnic閱讀 941評論 0 1