在網頁設計中,水平導航菜單使用是十分普遍的,在CSS樣式中,咱們通常會用Float元素或是「display:inline-block」來解決。而今天主要講解如何讓未知寬度的元素居中,下面咱們會列出幾種方法來解決水平居中問題。固然這些方法不必定是用來解決導航菜單問題,還有其它相似狀況也是可使用的。css
在線演示:Demohtml
CSS導航菜單水平居中的多種方法:web
這個方法比較簡單,是將容器轉成「display:inline-block」行內塊級元素,而後就能夠直接用「text-align:center」使其達到水平居中效果。chrome
HTML代碼:瀏覽器
這裏咱們須要一個div來包圍這個導航菜單。flex
<div class="navbar"> <ul> <li><a href="/">首頁</a></li> … </ul> </div>
CSS代碼:flexbox
給外面的div添加「text-align:center」,而後將菜單容器設成「display:inline-block」行內塊級元素,菜單浮左「float:left」設計
.navbar { text-align:center; } .navbar ul { display:inline-block; } .navbar li { float:left; } .navbar li + li { margin-left:20px; }
這裏瀏覽器兼容只能是IE8或更高版本,因此若是要兼容IE7的話,請加入如下代碼htm
.navbar ul { display:inline; zoom:1; }
這是使用「position:relative」定位方法來讓元素水平居中,我不是很推薦這方法,由於代碼多了個div去包住,固然這些是根據狀況來使用的。blog
HTML代碼:
<div class="navbar"> <div> <ul> <li><a href="/">首頁</a></li> … </ul> </div> </div>
CSS代碼:
將定位div設爲浮動,再定位「left:50%」,而後導航定位至「left:-50%」,這方法頗有意思吧。可能表達不是很清楚,本身看代碼吧^^
.navbar { overflow:hidden; } .navbar > div { position:relative; left:50%; float:left; } .navbar ul { position:relative; left:-50%; float:left; } .navbar li { float:left; } .navbar li + li { margin-left:20px; }
若是要兼容IE7,請添加如下樣式:
.navbar { position:relative; }
若是你喜歡簡潔的代碼,哪麼這個方法就很是適合你了。
HTML代碼:
<ul class="navbar"> <li><a href="/">Home</a></li> … </ul>
CSS代碼:
.navbar { display:table; margin:0 auto; } .navbar li { display:table-cell; } .navbar li + li { padding-left:20px; }
瀏覽器兼容:這方法代碼精簡,但不支持IE7及如下版本……
有關flex layout的知識本身查下吧>_<
HTML代碼:
<div class="navbar"> <ul> <li><a href="/">Home</a></li> … </ul> </div>
CSS代碼:
.navbar { text-align:center; } .navbar > ul { display:-webkit-inline-box; display:-moz-inline-box; display:-ms-inline-flexbox; display:-webkit-inline-flex; display:inline-flex; } .navbar li + li { margin-left:20px; }
瀏覽器兼容:不支持IE7及如下版本的IE瀏覽器。
HTML代碼:
<div class="navbar"> <ul> <li><a href="/">首頁</a></li> … </ul> </div>
CSS代碼:
.navbar { text-align:center; } .navbar > ul { display:-webkit-inline-box; display:-moz-inline-box; display:-ms-inline-flexbox; display:-webkit-inline-flex; display:inline-flex; } .navbar li + li { margin-left:20px; }
瀏覽器兼容:這個兼容比較低,只支持Firefox或chrome、Opera 12這些較新的瀏覽器。
轉:http://www.shejidaren.com/css-center-elements-horizontally.html