2010-10-12 39 views
7

Tôi cóĐịnh tâm một ul với nổi li

<div id="container"> 
<ul> 
<li>Item 1</li> 
<li>Item 2</li> 
<li>Item 3</li> 
</ul> 
</div> 

Với CSS sau đây:

#container li { 
float:left; 
height:33px; 
line-height:30px; 
text-align:center; 
width:auto; 
} 

#container{ 
width:600px; 
} 

Tuy nhiên tôi đang gặp khó khăn trong việc theo chiều ngang trung các ul bên #container. Có vẻ như tôi cần đặt chiều rộng cố định trên ul cho margin: 0 auto để hoạt động (cần text-align: center đối với IE). Tuy nhiên tôi không muốn đặt chiều rộng cố định cho ul vì các mục li sẽ là động.

Vui lòng thông báo.

Trả lời

14
#container { 
    width: 600px; 
    text-align: center; 
} 

#container ul { 
    display: inline-block; 
} 

#container li { 
    float: left; 
    height: 33px; 
    line-height: 30px; 
} 
+0

Cảm ơn bạn nhưng không inline-block không hoạt động trong IE6 (và IE7?)? – cadaa

+0

Bạn có thể thử mẹo này để làm cho nó hoạt động với IE (Tôi không thể xác minh xem nó có hoạt động hay không, như tôi đang sử dụng máy Mac ngay bây giờ). Thêm phần này vào '#container ul': 'zoom: 1; * Hiển thị: nội tuyến; 'Lý do đằng sau điều này được giải thích ở đây: http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/ –

4

Đây là một giải pháp tuyệt vời: http://css-tricks.com/centering-list-items-horizontally-slightly-trickier-than-you-might-think/

<div id="menu-outer"> 
    <div class="table"> 
     <ul id="horizontal-list"> 
      <li><a href="#"><img src="images/list-item-1.gif" alt="list item 1" /></a></li> 
      <li><a href="#"><img src="images/list-item-2.gif" alt="list item 2" /></a></li> 
      <li><a href="#"><img src="images/list-item-3.gif" alt="list item 3" /></a></li> 
      <li><a href="#"><img src="images/list-item-4.gif" alt="list item 4" /></a></li> 
     </ul> 
    </div> 
</div> 

Bây giờ thấy CSS rất đơn giản mà làm cho nó xảy ra:

#menu-outer { 
    height: 84px; 
    background: url(images/bar-bg.jpg) repeat-x; 
} 

.table { 
    display: table; /* Allow the centering to work */ 
    margin: 0 auto; 
} 

ul#horizontal-list { 
    min-width: 696px; 
    list-style: none; 
    padding-top: 20px; 
} 
ul#horizontal-list li { 
    display: inline; 
} 

Đó là bảng div mà hoàn thành công việc. Một số ngày tôi nghĩ rằng "Bất cứ điều gì làm việc." nên là khẩu hiệu cho CSS.

0

trong css:

ul { 
    float: left; 
} 

jquery

centerize = function(){ 
     var parentWidth = $("ul").parent("#container").width(); 
     var width = $("ul").width(); 
     var dif = (parentWidth - width)/2; 
     $("ul").css("margin-left", dif + "px"); 

    }; 

    centerize(); 

lẽ u cần phải làm việc cho mỗi zoom trình duyệt, vì vậy thêm:

$(window).resize(function(){ 
    centerize(); 
}); 
Các vấn đề liên quan