2010-10-12 21 views
7

mamcentrowania ul z unosił li

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

z następującymi CSS:

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

#container{ 
width:600px; 
} 

Jednak mam trudności z poziomo centrowania ul wewnątrz #container. Wygląda na to, że potrzebuję zestawu o stałej szerokości na ul dla margin: 0 auto do pracy (potrzebuje text-align: center dla IE). Jednak nie chcę ustawiać stałej szerokości dla ul, ponieważ elementy li będą dynamiczne.

Prosimy o radę.

Odpowiedz

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

#container ul { 
    display: inline-block; 
} 

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

Dziękuję, ale nie inline-block nie działa w IE6 (i IE7?)? – cadaa

+0

Możesz spróbować tej sztuczki, aby działała z IE (nie mogę sprawdzić, czy to działa, ponieważ jestem teraz na Macu). Dodaj to do '#container ul':' zoom: 1; * display: inline; 'Uzasadnienie tego jest wyjaśnione tutaj: http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/ –

4

Oto świetne rozwiązanie: 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> 

teraz zobaczyć bardzo prosty CSS sprawia, że ​​tak się stało:

#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; 
} 

to jest div stół, który wykonuje swoje zadanie. W niektóre dni myślę "Cokolwiek działa". powinno być hasłem CSS.

0

w 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(); 

prawdopodobnie u muszą pracować na każdym zbliżeniem przeglądarki, więc dodać:

$(window).resize(function(){ 
    centerize(); 
}); 
Powiązane problemy