2012-04-04 10 views
8

Abbiamo un layout adattativo in cui vengono visualizzati in senso orizzontale alcuni elementi della lista:Full-giustificare per elementi li

| Li1 | Li2 | Li 3 | Li4 | 

Ovviamente posso solo impostare

ul {width:100%} 
ul li {width:25%} 

Per avere dimensioni cambiamento del Li come il browser cambia dimensione. Tuttavia, vogliamo che il bordo sinistro del limite più a sinistra sia allineato al bordo sinistro con il margine destro destro più allineato al bordo destro, anche se il browser si espande.

Li1 Li2 Li3  Li4 
|      | 

Li1  Li2  Li3  Li4 
|        | 

Li1 Li2 Li3 Li4 
|     | 

C'è un modo per farlo con puro css?

+0

Sicuramente questo è esattamente ciò che fa il CSS di esempio? –

+0

solo per essere chiari - stai parlando di allineamento del testo? vale a dire che l'elemento sinistro più li ha lasciato allineato al testo, e quello più a destra per avere allineato il testo a destra, e forse ... quello centrale per avere il centro allineato al testo? – Dan

+0

Non proprio ... con il css di esempio, il testo all'interno di li è giustificato a sinistra, a destra o al centro, quindi non vi è alcuna garanzia che il testo sia allineato correttamente, solo che le caselle degli elementi li si allineano a i bordi. –

risposta

17

Usa this solution (o this one). Tradurre la risposta a una lista di risultati in:

Markup:

<ul> 
    <li>Item1</li> 
    <li>Item2</li> 
    <li>Item3</li> 
    <li>Item4</li> 
</ul> 

foglio di stile:

ul {text-align: justify} 
ul::after {width: 100%; display: inline-block; content: "."; visibility: hidden} 
li {display: inline-block} 

Si tratta di una soluzione di IE7 +. Per IE7 è necessario un elemento aggiuntivo adiacente agli elementi dell'elenco.

0

http://jsfiddle.net/yUgYW/3/

questo è quello che ho fino a questo punto .. potrebbe essere un inizio per voi

HTML

<div id="container"> 
<ul> 
    <li class="fisrt">1</li> 
</ul> 
<ul class="center"> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
</ul> 
<ul> 
    <li class="last">5</li> 
</ul> 
</div>​ 

CSS

#container 
{ 
} 

li 
{float:left; 
border:1px solid red; 
width:120px;} 
.fisrt 
{ 
    float:left; 
} 
.last 
{ 
    float:right; 
} 
.center 
{ 
    width:400px; 
    margin:auto; 
}​ 
0

Hi di definire il testo align giustifica in voi li come in questo modo

css

ul {width:100%} 


ul li {width:25%; 
    list-style:none; 
    display:inline-block; 
    text-align:justify; 
    margin:2px; 
    background:yellow; 
    word-wrap: break-word; 

} 

HTML

<ul> 
    <li>Demo text hrere Demo text hrere Demo text hrere Demo text hrere Demo text hrere Demo text hrere Demo text hrere </li> 
    <li>Demo text hrere Demo text hrere Demo text hrere Demo text hrere Demo text hrere Demo text hrere Demo text hrere </li> <li>DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD</li>  
</ul> 

demo live qui http://jsfiddle.net/rohitazad/8UakC/8/

1

IMHO, il modo migliore è usare CSS3 Flexboxes:

.menu { 
    display: flex; 
    justify-content: space-around; 
} 
+0

Molto bello! Sto trovando [qui] (https://www.w3schools.com/csSref/playit.asp?filename=playcss_justify-content&preval=flex-end) tuttavia che 'spazio-tra 'più esattamente risponde alla domanda. –