2012-12-04 17 views
28

Devo lasciare, centro, & allineare destra testo sulla stessa riga. Ho il seguente testo:CSS: sinistra, centro e allineamento destro del testo sulla stessa riga

  • Sinistra Allinea: 1/10
  • Centro: 02:27
  • Allinea a destra: 100%

ho scritto il seguente codice che funziona per la sinistra e allineare correttamente il testo ma non funziona correttamente per il testo centrale.

HTML

<div id="textbox"> 
<p class="alignleft">1/10</p> 
<p class="aligncenter">02:27</p> 
<p class="alignright">100%</p> 
</div> 
<div style="clear: both;"></div> 

CSS

.alignleft { 
    float: left; 
} 
.aligncenter { 
    float: left; 
} 
.alignright { 
    float: right; 
} 
+2

Eventuali duplicati di [Come allineare 3 div (sinistra/centro/destra) all'interno di un altro div?] (Http://stackoverflow.com/questions/2603700/how-to- align-3-divs-left-center-right-inside-another-div) – aij

+0

Questa domanda riguarda l'allineamento del testo; non con l'allineamento dei div vuoti. – user1822824

risposta

31

Prova questa

AGGIORNATO

HTML

<div id="textbox"> 
<p class="alignleft">1/10</p> 
<p class="aligncenter">02:27</p> 
<p class="alignright">100%</p> 
</div> 
<div style="clear: both;"></div>​ 

CSS

.alignleft { 
    float: left; 
    width:33.33333%; 
    text-align:left; 
} 
.aligncenter { 
    float: left; 
    width:33.33333%; 
    text-align:center; 
} 
.alignright { 
float: left; 
width:33.33333%; 
text-align:right; 
}​ 

Demo il codice qui: http://jsfiddle.net/wSd32/1/ Spero che questo aiuti!

+1

Questo non funziona quando i caratteri non sono identici - la linea di base è tutta incasinata. –

+0

Grazie! https://github.com/hery/hery.github.com/commit/5ff552f1034a84c8a3a634ed53c636ebbb0b8821 – ratsimihah

3

Forse questo funziona:

p{width:33%;float:left;} 
.alignleft{text-align:left;} 
.aligncenter {text-align:center;} 
.alignright {text-align:right;} 
2

Una variante dell'ottima soluzione di JCBiggar consiste nel saltare la larghezza e l'allineamento del testo per .alignright, ma semplicemente per farlo fluttuare verso destra. Il vantaggio di ciò è che elimina la preoccupazione che gli elementi interni abbiano margini o paddings impostati, rendendo il 33.33% * 3 superiore alla larghezza del 100% dell'elemento contenitore. La posizione desiderata di .alignright può essere effettuata molto più semplicemente.

Il CSS sarebbe allora:

.alignleft { 
    float: left; 
    width:33.33333%; 
    text-align:left; 
    padding-left: 10px; 
} 
.aligncenter { 
    float: left; 
    width:33.33333%; 
    text-align:center; 
} 
.alignright { 
    float: right; 
    padding-right: 10px; 
}​ 

questo ha funzionato bene per me quando ho avuto gli elementi che hanno richiesto imbottiture di importi (e non potrebbe essere rappresentata come percentuale) - come mostrato sopra nel CSS.

4

Il modo HTML5 magia che funziona in risposta è quello di utilizzare Flex:

<div id="textbox"> 
<p class="alignleft">1/10</p> 
<p class="aligncenter">02:27</p> 
<p class="alignright">100%</p> 
</div> 
<div style="clear: both;"></div> 

CSS

#textbox { 
    display: flex; 
    justify-content: space-between; 
} 

Demo:

http://jsfiddle.net/sep4kf6a/1/

Troverete evita la scomoda involucro che si verifica con galleggianti su un piccolo schermo.

+0

Questo centra '02: 27' tra il lato destro di' 1/10' e il lato sinistro di '100 %'. Non lo centra nel contenuto di '# textbox'. – expz

1

E ora un approccio nuovo, molto diverso.

.same-line { 
 
    height: 10px; /*childrens it's all absolute position, so must set height*/ 
 
    position: relative; 
 
} 
 
.same-line div{ 
 
    display: inline-block; 
 
    position: absolute; 
 
} 
 
.on-the-left{ 
 
left:0px; 
 
} 
 
.on-the-center{ 
 
    left: 0%; 
 
    right: 0%; 
 
    text-align: center; 
 
} 
 
.on-the-right{ 
 
    right: 0px; 
 
}
<div class="same-line"> 
 
    <div class="on-the-left" >it's Left</div> 
 
    <div class="on-the-center" >this Centrer bla bla bla</div> 
 
    <div class="on-the-right" >it's Right</div> 
 
    </div>

Problemi correlati