Html:元素水平居中方案總結


先來看我一個簡單XHTML/HTML文件代碼(部分),我們的目的是讓#container水平居中。


<body>
 <div id="container">
  <h1>content</h1>
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Phasellus varius eleifend.</p>
 </div>
</body>

  使用自適應邊界(auto margin)

  水平居中任意元素的首選辦法是使用邊界(margin)性質(property),並把左右之值設置為auto。但你必須為#container指定一個寬度。

div#container {
  margin-left: auto;
  margin-right: auto;
  width: 168px;
}

  這個方案在任何當代瀏覽器上都有效,即使是IE6,前提是在web標准兼容模式下(compliance mode)。不幸的是,它不會在先前版本的IE/Win中工作。我們為此列一個表格:

瀏覽的自適應邊界支持一覽表 瀏覽器 版本 支持 
Internet Explorer 6.0, compliance mode 是 
Internet Explorer 6.0, quirks mode 否 
Internet Explorer 5.5 Windows 否 
Internet Explorer 5.0 Windows 否 
Internet Explorer 5.2 Macintosh 是 
Mozilla 所有當前版本 是 
Mozilla Firefox 所有版本 是 
Netscape 4.x 否 
Netscape 6.x+ 是 
Opera 6.0, 7.0 Macintosh and Windows 是 
Safari 1.2 是 

  盡管受到瀏覽器支持的限制,大部分設計師還是提倡你盡可能這樣做。但我們依然可以使用CSS應付一切情況。

  使用文本排列(text-align)

  此方案需要使用到text-align性質,應用給body元素並且賦予center的值。

body {
    text-align: center;
}

  它公正地對待各種瀏覽器,十分徹底,唾手可得。然而,這是賦予文本的性質,它使#container中的文本也居中了。所以,在布局上我們還得做一些額外工作:

div#container {
  text-align: left;
}

  這樣才可以把文本的對齊方式返回默認狀狀態。

  綜合邊界和文本排列

  因為文本排列向后兼容,當代瀏覽器也支持自適應邊界,很多設計師把他們結合起來,實現跨瀏覽器使用。

body {
text-align: center;
}
#container {
   margin-left: auto;
   margin-right: auto;
   border: 1px solid red;
   width: 168px;
   text-align: left
}

  唉,依然不完美,因為還是一個黑客技巧 (hack)。你不得不為文本排列寫下多余的規則。但現在,我們可以使用更完美的跨瀏覽器的方案。

  負邊界解決方案

  此方案得結合使用絕對定位(absolute positioning )。首先,把#container絕對定位並左偏移50%,這樣,#container的左邊界就是頁面分辨率的一半。下一步,把#container的左邊界設置為負值,值大小為#container寬度(width)的一半。

#container {
   background: #ffc url(mid.jpg) repeat-y center;
   position: absolute;
   left: 50%;
   width: 760px;
   margin-left: -380px;
}

  看,沒有任何黑客技巧(no hacks)!連Netscape 4.x都支持!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM