2011-12-13 15 views
15

Estoy generando registros de aplicaciones en html, y me he tropezado con un problema bastante molesto. Tengo la siguiente distribución:CSS: establecer un ancho máximo en una tabla

| Action | Result | File path   | 

Por ejemplo

| Copy | Success | C:\VeryVeryVeryLongF | 
|  |   | ileName.txt   | 

Las columnas 1 y 2 sólo se muestran etiquetas cortas: sus contenidos deben permanecer en una sola línea. Por otro lado, la columna 3 puede contener rutas de archivos muy largas, que deben abarcar varias líneas si no caben en una sola línea.

Para lograr esto, he utilizado white-space: nowrap; en las primeras columnas, y white-space: normal; word-break: break-all; en el pasado. Además, la tabla tiene width:100%.

Esto funciona muy bien en Chrome e Internet Explorer, pero no en Firefox: En resumen, parece que no puedo encontrar una manera de decirle a Firefox 8.0 que no amplíe la última columna de la tabla y que el texto líneas múltiples. En mi ejemplo anterior, Firefox imprime

| Copy | Success | C:\VeryVeryVeryLongFileName.txt | 

El texto en las dos primeras columnas pueden variar, por lo que no se puede establecer su anchura de forma manual y el uso de table-layout: fixed. También intenté configurar max-width en la tabla y envolverlo en un div, pero no sirvió.

Ver http://jsfiddle.net/GQsFx/6/ para un ejemplo de la vida real =) ¿Cómo puedo hacer que Firefox se comporte como Chrome?

+0

Además, 'word-wrap: break-word' no funciona. –

+0

Relacionados: http://stackoverflow.com/questions/1258416/word-wrap-in-a-html-table, http://stackoverflow.com/questions/138132/using-css-how-can-i-split -a-string-ega-long-url-in-a-table-cell –

+1

Bueno, ahora que estamos listos para FireFox22, parece que su jsfiddle se muestra bien. – Gerrat

Respuesta

0

uso de este css

.actions { 
width:100%; 
} 
.actions tr td:nth-child(3) { 
width:200px; 
word-wrap:break-word; 
    display:inline-block; 
} 
+1

Está usando un tamaño fijo para la tercera columna, que no hace lo que necesito: necesito que la tercera columna sea lo más amplia posible. –

-1

ancho máximo es CSS2 válido, pero sólo está soportado en NS7, Opera 7 y probablemente Mozilla. No creo que sea compatible con IE 6.

+2

Eso no es lo que solicitó OP. –

-1

Intenta poner width: auto;. Esto le dirá al navegador para utilizar el espacio necesario ...

+0

Eso no cambia nada:/ –

+0

¡Oh mierda! No sé por qué, lo siento! –

-1

esto debería funcionar:

.actions tr td:nth-child(3) { 
     white-space: normal; 
     word-break: break-all; 
     max-width:200px; 
    } 
+0

No deseo especificar un ancho máximo para la tercera columna, ya que la página web se puede ver en una amplia gama de monitores ... –

-1

El siguiente CSS parece conseguir que funcione para mí. Tenga en cuenta la adición de table-layout: fixed, y el uso de word-wrap: break-word.

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

.actions tr td { 
    white-space: nowrap; 
} 

.actions tr td:nth-child(3) { 
    white-space:normal; 
    word-wrap: break-word; 
} 
+0

Esto no es óptimo: todas las columnas terminan tomando el mismo espacio, mientras que las dos primeras los que se pueden reducir sin romper su contenido, dando más espacio para el último. –

9

¿Funciona? Esto parece funcionar con jsfiddle. Porcentaje basado en los primeros dos cols, luego ancho automático el tercero, con table-layout: fijado en la tabla.

http://jsfiddle.net/keithwyland/uuF9k/1/

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

.actions tr td { 
    white-space: nowrap; 
    width: 15%; 
} 

.actions tr td:nth-child(3) { 
    white-space: normal; 
    word-break: break-all; 
    word-wrap: break-word; 
    width: auto; 
} 
+2

Correcto, pero no quiero establecer el ancho de las columnas ... Y los porcentajes no funcionan bien con la escala de ventanas (el 15% de la mitad de una pantalla de 800px realmente no es mucho). Lo que necesito es un tamaño calculado en función de los contenidos ... –

+4

La única forma que he encontrado para evitar que la tabla sea demasiado grande fue con 'table {table-layout: fixed;}' o con td limiting, p. 'td {max-width: 100px; desbordamiento de texto: puntos suspensivos; desbordamiento: oculto;} ' – ubershmekel

Cuestiones relacionadas