CSS 水平對齊
在 CSS 中,可以使用多種屬性來水平對齊元素。
對齊塊元素
塊元素指的是占據(jù)全部可用寬度的元素,并且在其前后都會換行。
塊元素的例子:
<h1> <p> <div>
對于文本對齊,請參見 CSS 文本一章。
在本教程中,我們將向您展示出于布局目的如何水平對齊塊級元素。
使用 margin 屬性來水平對齊
可通過將左和右外邊距設(shè)置為 "auto",來對齊塊元素。
注釋:除非已經(jīng)聲明了 !DOCTYPE,否則使用 margin:auto 在 IE8 以及更早的版本中是無效的。
把左和右外邊距設(shè)置為 auto,規(guī)定的是均等地分配可用的外邊距。結(jié)果就是居中的元素:
實(shí)例
.center
{
margin-left:auto;
margin-right:auto;
width:70%;
background-color:#b0e0e6;
}
提示:如果寬度是 100%,則對齊沒有效果。
注釋:在 IE5 中,對于塊元素存在一個外邊距處理方面的 BUG。如需使上面的例子在 IE5 中有效,請?zhí)砑右恍╊~外的代碼。親自試一試。
使用 position 屬性進(jìn)行左和右對齊
對齊元素的方法之一是使用絕對定位:
實(shí)例
.right
{
position:absolute;
right:0px;
width:300px;
background-color:#b0e0e6;
}
注釋:絕對定位元素會被從正常流中刪除,并且能夠交疊元素。
跨瀏覽器兼容性問題
當(dāng)像這樣對齊元素時,對 <body> 元素的外邊距和內(nèi)邊距進(jìn)行預(yù)定義是一個好主意。這樣可以避免在不同的瀏覽器中出現(xiàn)可見的差異。
當(dāng)使用 position 屬性時,IE8 以及更早的版本存在一個問題。如果容器元素(在我們的案例中是 <div class="container">)設(shè)置了指定的寬度,并且省略了 !DOCTYPE 聲明,那么 IE8 以及更早的版本會在右側(cè)增加 17px 的外邊距。這似乎是為滾動條預(yù)留的空間。當(dāng)使用 position 屬性時,請始終設(shè)置 !DOCTYPE 聲明:
實(shí)例
body { margin:0; padding:0; } .container { position:relative; width:100%; } .right { position:absolute; right:0px; width:300px; background-color:#b0e0e6; }
使用 float 屬性來進(jìn)行左和右對齊
對齊元素的另一種方法是使用 float 屬性:
實(shí)例
.right
{
float:right;
width:300px;
background-color:#b0e0e6;
}
跨瀏覽器兼容性問題
當(dāng)像這樣對齊元素時,對 <body> 元素的外邊距和內(nèi)邊距進(jìn)行預(yù)定義是一個好主意。這樣可以避免在不同的瀏覽器中出現(xiàn)可見的差異。
當(dāng)使用 float 屬性時,IE8 以及更早的版本存在一個問題。如果省略 !DOCTYPE 聲明,那么 IE8 以及更早的版本會在右側(cè)增加 17px 的外邊距。這似乎是為滾動條預(yù)留的空間。當(dāng)使用 float 屬性時,請始終設(shè)置 !DOCTYPE 聲明:
實(shí)例
body { margin:0; padding:0; } .right { float:right; width:300px; background-color:#b0e0e6; }