2013-03-29 10 views
33

Quindi, ho tentato di creare un elenco orizzontale da utilizzare in un nuovo sito Web che sto progettando. Ho tentato un numero di suggerimenti già trovati online come l'impostazione 'float' a sinistra e così via - ma nessuno di questi ha funzionato quando si trattava di risolvere il problema.Voci di elenco orizzontale CSS

ul#menuItems { 
 
     background: none; 
 
     height: 50px; 
 
     width: 100px; 
 
     margin: 0; 
 
     padding: 0; 
 
    } 
 
    ul#menuItems li { 
 
     display: inline; 
 
     list-style: none; 
 
     margin-left: auto; 
 
     margin-right: auto; 
 
     top: 0px; 
 
     height: 50px; 
 
    } 
 
    ul#menuItems li a { 
 
     font-family: Arial, Helvetica, sans-serif; 
 
     text-decoration: none; 
 
     font-weight: bolder; 
 
     color: #000; 
 
     height: 50px; 
 
     width: auto; 
 
     display: block; 
 
     text-align: center; 
 
     line-height: 50px; 
 
    }
<ul id="menuItems"> 
 
    <li> 
 
    <a href="index.php">Home</a> 
 
    </li> 
 
    <li> 
 
    <a href="index.php">DJ Profiles</a> 
 
    </li> 
 
</ul>

Attualmente non sono sicuro di ciò che sta causando il problema, come potrei fare per e risolverlo?

+1

uso 'float' proprietà – Ron

+0

vedere http://css.maxdesign.com.au/listutorial/index.htm –

risposta

55

risposta Aggiornato

ho notato un sacco di persone stanno usando questa risposta così ho deciso di aggiornare un po '. Se vuoi vedere la risposta originale, controlla di seguito. La nuova risposta dimostra come è possibile aggiungere un po 'di stile alla tua lista.

ul > li { 
 
    display: inline-block; 
 
    /* You can also add some margins here to make it look prettier */ 
 
    zoom:1; 
 
    *display:inline; 
 
    /* this fix is needed for IE7- */ 
 
}
<ul> 
 
    <li> <a href="#">some item</a> 
 

 
    </li> 
 
    <li> <a href="#">another item</a> 
 

 
    </li> 
 
</ul>

+1

risposta in aumento perché risolve il problema, ma i float sono zoppi e vecchi! a meno che non utilizzi IE7-, dovresti usare 'display: inline-block;' – PlantTheIdea

+0

@LifeInTheGrey Questo è un grande punto - lo aggiungerò come seconda opzione - Grazie per i suggerimenti –

+1

senza preoccupazioni, modificato la tua risposta per includere la correzione per IE7 e seguenti: http://uncorkedstudios.com/2011/12/12/how-to-fix-the-ie7-and-inline-block-css-bug/ – PlantTheIdea

4

Un modo migliore è quello di utilizzare inline-block, perché non c'è bisogno di usare clear:both alla fine della vostra lista più.

Prova questo:

<ul> 
    <li> 
     <a href="#">some item</a> 
    </li> 
    <li> 
     <a href="#">another item</a> 
    </li> 
</ul> 

CSS:

ul > li{ 
    display:inline-block; 
} 

Dai un'occhiata alla qui: http://jsfiddle.net/shahverdy/4N6Ap/

1

Si potrebbe anche usare blocchi in linea per evitare elementi

<ul> 
    <li> 
     <a href="#">some item</a> 
    </li> 
    <li> 
     <a href="#">another item</a> 
    </li> 
</ul> 

e poi lo stile come galleggiante:

li{ 
    /* with fix for IE */ 
    display:inline; 
    display:inline-block; 
    zoom:1; 
    /* 
    additional styles to make it look nice 
    */ 
} 

in questo modo non avrai bisogno di galleggiare nulla, eliminando th E bisogno di clearfix

+0

' Ho tentato di farlo, ma non vengono ancora visualizzati orizzontalmente - www.s4nr.com/SpecialTesting –

+0

@LoadData il tuo menu ha una larghezza di 100px e il tuo ha una larghezza combinata di 128px, quindi il secondo l'oggetto scenderà alla riga successiva. – Jamie

0

Here è possibile trovare un esempio funzionante, con alcuni suggerimenti sul ridimensionamento dinamico della lista.

ho usato display: inline-block e una percentuale imbottitura in modo che l'elenco genitore può cambiare dinamicamente dimensioni:

display:inline-block; 
padding:10px 1%; 
width: 30% 

più altri due regole per rimuovere imbottitura per i primi e gli ultimi articoli.

ul#menuItems li:first-child{padding-left:0;} 
ul#menuItems li:last-child{padding-right:0;}