2011-07-27 71 views
19

Estoy tratando de encontrar una manera de forzar el salto de línea en la celda de la tabla después de que el texto en su interior sea más largo que el 50% del tamaño máximo permitido.salto de línea de fuerza en la celda de la tabla html

¿Cómo puedo hacerlo sin ninguna función JS, usando solo HTML puro con CSS?

+0

@Phil es onebiglonglineoftext por lo que las ideas que figuran aquí deberían ser suficientes – dantuch

+0

no funcionará si es una sola palabra (ver http://jsfiddle.net/NweWX/) – Fender

+2

@Fender, gracias ... - funciona bien con algo así como '' – dantuch

Respuesta

31

Creo que lo que estamos tratando de hacer es palabras o direcciones URL de envoltura loooooooooooooong por lo que no empujan el tamaño de la mesa a cabo. (¡He estado intentando hacer lo mismo!)

Puede hacerlo fácilmente con un DIV dándole el estilo word-wrap: break-word (y es posible que también deba establecer su ancho).

div { 
    word-wrap: break-word;   /* All browsers since IE 5.5+ */ 
    overflow-wrap: break-word;  /* Renamed property in CSS3 draft spec */ 
    width: 100%; 
} 

Sin embargo, para las tablas , debe envolver el contenido en un DIV (u otra etiqueta de bloque) o aplicar: table-layout: fixed. Esto significa que el ancho de las columnas ya no es fluido, sino que se define en función del ancho de las columnas en la primera fila solamente (o mediante anchuras especificadas). Read more here.

Código de ejemplo:

table { 
    table-layout: fixed; 
    width: 100%; 
} 

table td { 
    word-wrap: break-word;   /* All browsers since IE 5.5+ */ 
    overflow-wrap: break-word;  /* Renamed property in CSS3 draft spec */ 
} 

la esperanza de que ayude a alguien.

+1

Anidé una palabra larga dentro de una tabla anidada usando un div con lab-break-word. No requería table-layout: estilo fijo.Gracias por una solución que funciona en IE, Chrome y FF:) – davidjmcclelland

+0

Hola David: sí, si tu contenido está * dentro de un DIV * (que está dentro de una tabla), entonces el primer fragmento es adecuado. –

+0

gracias, cambiado aceptado en this1 – dantuch

10

le sugiero que utilice un div contenedor o párrafo:

<td><p style="width:50%;">Text only allowed to extend 50% of the cell.</p></td> 

Y se puede hacer una clase fuera de él:

<td class="linebreak"><p>Text only allowed to extend 50% of the cell.</p></td> 

td.linebreak p { 
    width: 50%; 
} 

Todo esto suponiendo que significaba el 50%, como en el 50 % de la celda

+2

Ah, lo siento por la actualización tardía, pero como @Fender comentó, no ayuda, si quiero romper solo, tolonglineoftext. Y ese es el verdadero problema. – dantuch

+0

¿Cómo centrar este texto? – zygimantus

1

Es difícil que lo hagan sin el HTML, pero en general se puede poner:

style="width: 50%;" 

ya sea en la celda de la tabla, o colocar un div dentro de la celda de la tabla, y poner el estilo en eso.

Pero un problema es "¿50% de qué?" Es 50% del elemento principal que puede no ser lo que quieres.

Publica una copia de tu HTML y tal vez obtendrás una mejor respuesta.

-1

Creo que esto post ayudará. Es simple agregar la etiqueta BR al lugar donde desea dividir la celda de la tabla.

Cuestiones relacionadas