2011-12-15 38 views
10

¿Hay alguna manera de tener texto alineado a la izquierda, centro y derecha en la misma línea con HTML/CSS, en las siguientes condiciones?Texto alineado a la izquierda, centro y a la derecha en la misma línea

  1. Las piezas de texto izquierda y derecha serán cortas, pero no sé su longitud con antelación.
  2. La pieza central de texto puede ser lo suficientemente larga como para envolverla.
  3. La pieza central de texto debe aparecer EXACTAMENTE en el centro.
  4. La pieza central de texto no debe solaparse con los textos de la izquierda o la derecha.

La solución obvia de usar 3 divs con los dos fl otados a izquierda y derecha funciona bastante bien, excepto que la pieza central de texto no está centrada exactamente (por ejemplo, si la parte izquierda del texto es más larga que la derecha, el centro aparece centrado justo a la derecha del centro absoluto).

Solo necesito una solución que funcione en WebKit. ¿Algunas ideas?

Editar - esto es lo que tengo hasta ahora ...

HTML:

<div id="left">Left</div> 
<div id="center">Center text</div> 
<div id="right">Right</div> 

CSS:

#left { 
    float: left; 
    text-align: left; 
    padding-right: 10px; 
} 

#center { 
    text-align: center; 
} 

#right { 
    float: right; 
    text-align: right; 
    padding-left: 10px; 
} 
+0

hmmm no yo sólo sé una solución JS donde se gire a la izquierda o derecha para el ancho y el uso para el otro lado ... sólo entonces el texto centrado es en el centro exaclty. sin anchuras no puedes hacer eso solo HTML y CSS ... puedes usar% ancho como 10% - 80% - 10% pero este ancho es fijo dependiendo del contenedor – ggzone

+0

¿puedes publicar el código en el que estás trabajando? – ptriek

+0

Suena como un trabajo para una mesa. Exactamente, ¿qué datos estás tratando de poner ahí? –

Respuesta

5

Tendrá que "truco" de la columna de la izquierda a ser tan ancha como el derecho, mediante la copia del texto de la derecha en la columna izquierda. ¿Por qué? Cuando la columna central necesita envolverse para mantener el centro con respecto a toda la mesa, tendrá que envolverse como si las otras dos columnas tuvieran el mismo ancho. Puede ver esto aquí: http://jsfiddle.net/brettwp/n5eSB/ ajustando el tamaño del panel Result. Tenga en cuenta que esto hace que su tabla sea una línea más alta debido al contenido oculto. No conozco todos los detalles de su implementación, por lo que tendrá que hacer ajustes (desbordamiento oculto, márgenes negativos, posición relativa, etc.) para que esto encaje en la página, pero debe comenzar:

<table> 
    <tr> 
     <td class="d1"> 
      left 
      <div class="copy">right text</div> 
     </td> 
     <td class="d2"> 
      center text that is long enough to force a word wrap! 
     </td> 
     <td class="d3">right text</td> 
    </tr> 
</table> 

table { 
    width: 100%; 
} 
td { 
    vertical-align: top; 
} 
.d1 { 
    text-align: left; 
} 
.d2 { 
    text-align:center; 
} 
.d3 { 
    text-align:right; 
} 
.copy { 
    visibility: hidden; 
} 
.copy, .d3 { 
    white-space: nowrap; 
} 
+0

Brillante, gracias! –

4

se puede lograr esto con la pantalla: mesa (-row/-cell) propiedades:

http://jsfiddle.net/WYxek/

<div class="table"> 
    <div class="tr"> 
     <div class="d1">left text</div> 
     <div class="d2">center text</div> 
     <div class="d3">right text</div> 
    </div> 
</div> 



.table { 
    display:table; 
    width:100%; 
} 
.tr { 
    display:table-row; 
} 
.d1 { 
    display:table-cell; 
    width:25%; 
} 
.d2 { 
    display:table-cell; 
    text-align:center; 
    width:50%; 
} 
.d3 { 
    display:table-cell; 
    text-align:right; 
    width:25%; 
} 
+1

Buena solución, pero evita que el texto central use más del 50% del ancho completo, incluso si la izquierda y la derecha son más cortas que el 25% cada una. –

11

solución con divs claras

https://jsfiddle.net/LaL92q88/1/

<div style="float: left">Left Text</div> 
<div style="float: right">Right Text</div> 
<div style="margin: 0 auto; width: 100px;">Centered Text</div> 
+2

simple y funciona 1 – Belldandu

+0

texto-align: center en la última línea se necesita ''

Centered Text
guido

+0

@guido - para aclarar su sugerencia: 'text-align: se necesita center' Si todas las líneas del texto central son a estar centrado (bordes desiguales izquierdo y derecho); si el objetivo es que las líneas envolventes se justifiquen a la izquierda con la primera línea (una "caja" central que tenga el mismo espacio a la izquierda y a la derecha, pero texto justificado a la izquierda dentro de esa casilla, como un párrafo típico), podría no necesitar ese. [En este caso, la combinación del margen "automático" y el ancho especificado son suficientes para centrar el cuadro de texto.] – ToolmakerSteve

Cuestiones relacionadas