2012-06-10 10 views
10

Mam nieuporządkowaną listę, której używam jako prosty pasek nawigacji. To wygląda jak poniżej:Nieuporządkowana lista nie wyrównująca się do końca w lewo w div

enter image description here

Jak widać jednak, że <li> elementy nie są wyrównując całą drogę z lewej strony <div> są one zawarte w Próbowałem text-align: left; w zawierającego <div> ale wydaje. nie mieć żadnego efektu.

Stosowna HTML:

<div id="menu">                   
    <div id="menutop">                 
     <ul>                    
      <li><a href="#">Home</a></li>            
      <li><a href="#">About</a></li>            
     </ul>                   
    </div>  

Stosowna CSS:

#menu { 
    width: 800px; 
    margin: 0 auto; 
} 

#menu div { 
    float: left; 
    width: 400px; 
    height: 60px; 
    background-color: #CACACA; 
} 

#menutop { 
    text-align: left; 
} 

#menutop ul { 
    list-style: none; 
} 

#menutop li { 
    display: inline; 
    padding: 10px; 
} 

#menutop a { 
    color: #000000; 
    text-decoration: none; 
} 

#menutop a:hover { 
    text-decoration: underline; 
} 

Jakieś pomysły?

+0

Czy próbowałeś usunąć "margines" z 'ul'? – PeeHaa

+0

Umieszczenie kodu tak jak w jsfiddle działa zgodnie z oczekiwaniami. http://jsfiddle.net/5wCZk/. Twój problem leży gdzie indziej. –

+0

Zawsze można użyć ujemnego marginesu: 'margin-left: -10px' – TylerH4

Odpowiedz

29

ul i li mają margines lub dopełnienie, w zależności od przeglądarki, domyślnie. Trzeba zmienić to domyślny styl w swoim menu:

#menu ul, #menu li { 
    margin: 0; padding: 0; 
} 

Zobacz demo here

Uwaga: Domyślnie jsfiddles robi reset CSS, więc nie zawsze jest dobrze nadaje się do testowania tego typu rzeczy . Pamiętaj, aby wyłączyć "Znormalizowany CSS" podczas wyszukiwania tego rodzaju błędów.

+0

Dzięki. Nie zdawałem sobie sprawy, że elementy "ul" i "li" mają domyślnie dopełnienie i marginesy. –

+0

@NicYoung: Dlatego pojawiają się wcięte, gdy są używane jako lista. Różne przeglądarki uzyskują wcięcia na różne sposoby. – Eric

2

Spróbuj użyć urządzenia CSS Reset.

Najprostszą formą jest:

* { margin: 0; padding: 0; } 
+1

Nie wiem, czy zresetowanie wszystkiego jest najlepszym sposobem, aby przejść tutaj. To prawdopodobnie zepsuje wszystko w każdym miejscu. – Eric

+0

@Eric: Jeśli resetowanie zepsuje twoją witrynę, ** twój problem! ** –

+0

To trochę prawda. Jest jednak inny problem. Po wykonaniu resetowania musisz zdefiniować podstawowy styl dla 'ul', który będzie użyty na liście _wirtualnej_. Po raz kolejny masz ten sam problem. Aby nawigacja była potrzebna, musisz wprowadzić pewien dodatkowy margines i dopełnienie _specific_. – Eric

0

<ul> elementem jest align left, ale <li> elementy mają padding-left zestaw do 10px. Dlatego pierwszy element jest nieco po prawej stronie.

2

można po prostu przesłonić ul i li dopełnienie i margines.

ten prosty kod:

.menu ul, .menu li{ 
    margin:0; 
    padding:0; 
} 
2

Można usunąć marginesu i dopełnienie menu

#menu *{ 
margin:0; 
padding:0; 
} 
Powiązane problemy