一 外部式css樣式
(也可稱為外聯(lián)式)就是把css代碼寫一個單獨的外部文件中崭别,這個css樣式文件以“.css”為擴展名肮之,在<head>內(nèi)(不是在<style>標簽內(nèi))使用<link>標簽將css樣式文件鏈接到HTML文件內(nèi)冠息,如下面代碼:
<link href=" **.css" rel="stylesheet" type="text/css"/>
注意:
1弄喘、css樣式文件名稱以有意義的英文字母命名君旦,如 main.css江场。
2纺酸、rel="stylesheet" type="text/css" 是固定寫法不可修改。
3址否、<link>標簽位置一般寫在<head>標簽之內(nèi)餐蔬。
二 選擇器子選擇器,
即大于符號(>),用于選擇指定標簽元素的第一代子元素佑附。
.food>li{border:1px}這行代碼會使class名為food下的子元素li(水果樊诺、蔬菜)加入紅色實線邊框。
包含選擇器帮匾,即加入空格,用于選擇指定標簽元素下的后輩元素啄骇。
.food li{border:1px}請注意這個選擇器與子選擇器的區(qū)別痴鳄,子選擇器(child selector)僅是指它的直接后代瘟斜,或者你可以理解為作用于子元素的第一代后代。而后代選擇器是作用于所有子后代元素痪寻。后代選擇器通過空格來進行選擇螺句,而子選擇器是通過“>”進行選擇。
總結(jié):>作用于元素的第一代后代橡类,空格作用于元素的所有后代蛇尚。
三 通用選擇器
通用選擇器是功能最強大的選擇器,它使用一個(*)號指定顾画,它的作用是匹配html中所有標簽元素取劫,如下使用下面代碼使用html中任意標簽元素字體顏色全部設(shè)置為紅色:
- {color:red;}
四 偽類選擇符
更有趣的是偽類選擇符,為什么叫做偽類選擇符研侣,它允許給html不存在的標簽(標簽的某種狀態(tài))設(shè)置樣式谱邪,比如說我們給html中一個標簽元素的鼠標滑過的狀態(tài)來設(shè)置字體顏色:
a:hover{color:red;}
五 分組選擇符
當你想為html中多個標簽元素設(shè)置同一個樣式時,可以使用分組選擇符(庶诡,)惦银,如下代碼為右側(cè)代碼編輯器中的h1、span標簽同時設(shè)置字體顏色為紅色:
h1,span{color:red;}
它相當于下面兩行代碼:
h1{color:red;}
span{color:red;}
六 特殊性
有的時候我們?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)值最低
七 重要性
我們在做網(wǎng)頁代碼的時静汤,有些特殊的情況需要為某些樣式設(shè)置具有最高權(quán)值,怎么辦居凶?這時候我們可以使用!important來解決虫给。
如下代碼:
p{color:red!important;}
p{color:green;}
<p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩侠碧。</p>
這時 p 段落中的文本會顯示的red紅色抹估。
注意:!important要寫在分號的前面
八 文字排版--字體
我們可以使用css樣式為網(wǎng)頁中的文字設(shè)置字體、字號弄兜、顏色等樣式屬性药蜻。下面我們來看一個例子,下面代碼實現(xiàn):為網(wǎng)頁中的文字設(shè)置字體為宋體替饿。
body{font-family:"宋體";}
文字排版--字號语泽、顏色
可以使用下面代碼設(shè)置網(wǎng)頁中文字的字號為12像素,并把字體顏色設(shè)置為#666(灰色):
body{font-size:12px;color:#666}
文字排版--粗體
我們還可以使用css樣式來改變文字的樣式:粗體视卢、斜體踱卵、下劃線、刪除線据过,可以使用下面代碼實現(xiàn)設(shè)置文字以粗體樣式顯示出來惋砂。
p span{font-weight:bold;}
文字排版--斜體
以下代碼可以實現(xiàn)文字以斜體樣式在瀏覽器中顯示:
p a{font-style:italic;}
文字排版--下劃線
<p>三年級時,我還是一個<a>膽小如鼠</a>的小女孩绳锅。</p>
有些情況下想為文字設(shè)置為下劃線樣式西饵,這樣可以在視覺上強調(diào)文字,可以使用下面代碼來實現(xiàn):
p a{text-decoration:underline;}
如果想在網(wǎng)頁上設(shè)置刪除線怎么辦榨呆,這個樣式在電商網(wǎng)站上常會見到:
http://img.mukewang.com/53a0149700010f4802370316.jpg
上圖中的原價上的刪除線使用下面代碼就可以實現(xiàn):
.oldPrice{text-decoration:line-through;}
字體縮寫
網(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;
}
這么多行的代碼其實可以縮寫為一句:
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è)置。
九 段落排版--縮進
中文文字中的段前習(xí)慣空兩個文字的空白敬鬓,這個特殊的樣式可以用下面代碼來實現(xiàn):
p{text-indent:2em;}
注意:2em的意思就是文字的2倍大小淹朋。
段落排版--行間距(行高)
下代碼實現(xiàn)設(shè)置段落行間距為1.5倍。
p{line-height:1.5em;}
段落排版--中文字間距钉答、字母間距
中文字間隔础芍、字母間隔設(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>
段落排版--對齊
可以使用text-align樣式代碼诊杆,如下代碼可實現(xiàn)文本居中顯示
p{text-align:center;}
十 元素分類--塊級元素
什么是塊級元素?在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)实抡。
盒模型--邊框(二)
為 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;
十四 盒模型--填充
元素內(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在邊框外。
盒模型代碼簡寫
還記得在講盒模型時外邊距(margin)朝聋、內(nèi)邊距(padding)和邊框(border)設(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是一致的
十六 流動模型
先來說一說流動模型娇妓,流動(Flow)是默認的網(wǎng)頁布局模式。也就是說網(wǎng)頁在默認狀態(tài)下的 HTML 網(wǎng)頁元素都是根據(jù)流動模型來分布網(wǎng)頁內(nèi)容的活鹰。
流動布局模型具有2個比較典型的特征:
第一點哈恰,
塊狀元素都會在所處的包含元素內(nèi)自上而下按順序垂直延伸分布,因為在默認狀態(tài)下志群,塊狀元素的寬度都為100%着绷。實際上,塊狀元素都會以行的形式占據(jù)位置锌云。如右側(cè)代碼編輯器中三個塊狀元素標簽(div蓬戚,h1,p)寬度顯示為100%宾抓。
第二點子漩,
在流動模型下,內(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>
http://img.mukewang.com/540e62c60001c56a06760417.jpg
十八 什么是層模型渴肉?
什么是層布局模型冗懦?層布局模型就像是圖像軟件PhotoShop中非常流行的圖層編輯功能一樣,每個圖層能夠精確定位操作仇祭,但在網(wǎng)頁設(shè)計領(lǐng)域披蕉,由于網(wǎng)頁大小的活動性,層布局沒能受到熱捧。但是在網(wǎng)頁上局部使用層布局還是有其方便之處的没讲。下面我們來學(xué)習(xí)一下html中的層布局眯娱。
如何讓html元素在網(wǎng)頁中精確定位,就像圖像軟件PhotoShop中的圖層一樣可以對每個圖層能夠精確定位操作食零。CSS定義了一組定位(positioning)屬性來支持層布局模型困乒。
層模型有三種形式:
1、絕對定位(position: absolute)
2贰谣、相對定位(position: relative)
3娜搂、固定定位(position: fixed)
1.層模型--絕對定位
如果想為元素設(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>
http://img.mukewang.com/53a00b130001e86707360547.jpg
2.層模型--相對定位
如果想為元素設(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>
http://img.mukewang.com/53a00d2b00015c4b06190509.jpg
3.層模型--固定定位
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>
3.Relative與Absolute組合使用
使用position:absolute可以實現(xiàn)被設(shè)置元素相對于瀏覽器(body)設(shè)置定位以后肄梨,使用position:relative來實現(xiàn)相對于其他元素進行定位阻荒,但是必須遵守下面規(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è)置了)尔店。
十九 長度值
長度單位目前比較常用到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)诈茧。
二十 css樣式設(shè)計小技巧
水平居中設(shè)置-定寬塊狀元素
當被設(shè)置元素為 塊狀元素 時用 text-align:center 就不起作用了产喉,這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素。
(定寬塊狀元素:塊狀元素的寬度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)頁上的分頁導(dǎo)航敛腌,因為分頁的數(shù)量是不確定的,所以我們不能通過設(shè)置寬度來限制它的彈性惫皱。(不定寬塊狀元素:塊狀元素的寬度width不固定像樊。)
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
加入 table 標簽
設(shè)置 display: inline 方法:與第一種類似,顯示類型設(shè)為 行內(nèi)元素旅敷,進行不定寬元素的屬性設(shè)置
設(shè)置 position:relative 和 left:50%:利用 相對定位 的方式生棍,將元素向左偏移 50% ,即達到居中的目的
這一小節(jié)我們來講一下第一種方法:
為什么選擇方法一加入table標簽? 是利用table標簽的長度自適應(yīng)性---即不定義其長度也不默認父元素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è)置為垂直居中,為了用戶體驗性好瘫俊。
這里我們又得分兩種情況:父元素高度確定的單行文本鹊杖,以及父元素高度確定的多行文本。
第一種父元素高度確定的單行文本, 設(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 標簽?zāi)J情況下就默認設(shè)置了 vertical-align 為 middle,所以我們不需要顯式地設(shè)置了暴区。
垂直居中-父元素高度確定的多行文本(方法二)
除了上一節(jié)講到的插入table標簽闯团,可以使父元素高度確定的多行文本垂直居中之外,本節(jié)介紹另外一種實現(xiàn)這種效果的方法仙粱。但這種方法兼容性比較差房交,只是提供大家學(xué)習(xí)參考。
在 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 個句之一:
- position : absolute
- 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>