Chrome, Safari ignorando el ancho máximo en la tabla


Tengo código HTML como este:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <title></title> 
    </head> 

    <body> 
       <table style="width:100%;"> 
          <tr> 
             <td> 
                <table style="width:100%; max-width:1000px; background:#000099;"> 
                       <tr> 
                           <td> 
                               001 
                           </td> 
                       </tr> 
                   </table> 
               </td> 
           </tr> 
       </table> 
    </body> 
    </html> 

El problema es que Chrome y Safari están ignorando "max-width:1000px" Mi amigo ha descubierto que podemos evitarlo agregando "display:block" para la tabla interna, y de alguna manera está funcionando.

Entonces, lo que quiero saber es - ¿hay alguna otra forma de resolver este problema y por qué está sucediendo esto?

Author: GaGar1n, 2010-10-26

8 answers

El ancho máximo se aplica a elementos de bloque. <table> no es ni bloque ni inline. Ambiguo suficiente? jaja. Puedes usar display:block; max-width:1000px y olvidarte de width:100%. Chrome y Safari siguen las reglas!

Editar Mayo 2017: tenga en cuenta, este comentario fue hecho hace 7 años (en 2010!). Sospecho que los navegadores han cambiado un montón en los últimos años (no lo sé, ya no hago diseño web). Recomiendo usar una solución más reciente.

 84
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-31 21:47:46

Sé que esto ha sido respondido por un tiempo y con una solución de trabajo, pero la respuesta que indica que max-width solo se aplica a los elementos de bloque y cita una fuente que no es la especificación es completamente incorrecta.

La especificación (la especificación CSS 3 para el tamaño intrínseco y extrínseco de CSS se refiere a la especificación CSS 2.1 de esta regla) establece claramente:

Todos los elementos, excepto los elementos en línea no reemplazados, filas de tabla y grupos de filas

Lo que significaría que debería aplicar a elementos de tabla.

Significa que el comportamiento de WebKit de no honrar max-width o min-width en los elementos de la tabla es incorrecto.

 31
Author: dustinwilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-20 01:27:27

Creo que lo que estás buscando aquí es:

table-layout: fixed

Aplique este estilo a la tabla y su tabla respetará el ancho que le asigne.

Nota: Aplicar este estilo directamente en Chrome parecerá que no está funcionando. Debe aplicar el estilo en su archivo CSS / HTML y actualizar la página.

 25
Author: Serj Sagan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-09 00:43:42

Envuelva la tabla interna con div y establezca max-width a este div de envoltura.

 8
Author: Jan Mazánek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-20 08:55:43

Tuve el mismo problema. Utilicé una tabla como un medio para centrar mi contenido en la página, pero safari ignoró width:100%; max-width:1200px como un estilo que apliqué a la tabla. Aprendí que si envuelvo la tabla en un div y establezco los márgenes izquierdo y derecho en auto en el div, se centraría en la página y obedecería los atributos de ancho máximo y mínimo en safari y firefox en el mac. Todavía tengo que comprobar explorer o chrome en Windows. He aquí un ejemplo:

<div style="position:relative; width:100%; max-width:1200px; min-width:800px; margin-left:auto; margin-right:auto">

Luego anidé la tabla dentro del div...

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
 6
Author: Cliff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-21 13:58:35

Acabo de encontrar esta respuesta y vale la pena señalar que de acuerdo con MDN ( https://developer.mozilla.org/en-US/docs/Web/CSS/max-width ), su tabla de compatibilidad para max-width dice:

|             Feature  | Chrome        | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
--------------------------------------------------------------------------------------------------------
|applies to <table> [1]| Not supported | (Yes)           | Not supported     | (Yes) | Not supported   |

"[1] CSS 2.1 deja explícitamente el comportamiento de max-width como indefinido. Por lo tanto, cualquier comportamiento es compatible con CSS2.1; las especificaciones CSS más recientes pueden definir este comportamiento, por lo que los desarrolladores web no deberían confiar en uno específico ahora."

Aunque hay algunas cosas interesantes en MDN como "fill-available" y "fit-content", tenemos algunas cosas que esperar cuando la especificación se estabilice y sea explícita en este frente...

 1
Author: jcuenod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-20 12:24:26

Pude solucionar mi problema con media query:

Sustituí

max-width: 360px

Con

@media (min-width: 440px) {
    width: 360px;
}
 0
Author: user2908392,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-22 18:45:00

Aquí hay una referencia inequívoca: 10 Detalles del modelo de formato visual (w3.org)

En CSS 2.1, el efecto de 'min-width' y 'max-width' en tablas, tablas en línea, celdas de tabla, columnas de tabla y grupos de columnas es indefinido.

Las referencias dadas anteriormente en este hilo, se leen erróneamente "filas de tabla" como "tabla". Este sin embargo, realmente dice "mesa". Eso es parte de CSS2, pero CSS3 se refiere a CSS2 para la base de max-width.

Así que es simplemente indefinido y el navegador son libres de hacer lo que deseen y es inseguro confiar en él.

 0
Author: Hibou57,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-09 15:42:27