5.1.1. —perdido, buscando el diseño ideal

Implementaciones de los atributos frame y rules

Resumen de las implementaciones de los atributos frame y rules en distintos navegadores.

Tómese como una continuación de Sobre las implementaciones de COL y COLGROUP @ 5.1.1..

2006-03-04T: Agregado Netscape 6.2

Curiosamente para dibujar bordes en una tabla, HTML 4 introdujo dos atributos para el elemento TABLE: rules y frame.

Digo curiosamente porque se trata de dos atributos relacionados con la presentación del documento, y que aparecen cuando la especificación insiste en recomendar el uso de CSS.

Eso no quita que son útiles cuando sabemos que parte de la audiencia serán navegadores que no podrán interpretar la hoja de estilos.

Pueden leer la explicación y lista de valores posible sobre estos atributos en Borders and rules, pero básicamente se resume a:

rules
Maneja los bordes que se dibujan dentro de la tabla alrededor de los diferentes grupos (filas, columnas y grupos de cada una). Prueba de todos los atributos de rules.
frame
Maneja los bordes exteriores (o sea, alrededor de) la tabla. Prueba de todos los atributos de frame.

Los navegadores testeados fueron:

Motores gráficos modernos
Firefox 1.5 (y 1.0.6)
Konqueror 3.2 y Safari 2
Internet Explorer 6
Opera 7, 8 y 9 Preview 2
Motores gráficos antiguos (y humildes)
Netscape 4.8
Netscape 6.2.1
Internet Explorer 4, 5 y 5.5 (para Windows)
Opera 5 y 6, y Act 10
Off by one
Dillo 0.8.5 (para Linux)
Navegadores en modo texto
Links 2.1 pre3 (para Linux)

Firefox 1.5 (y 1.0.6)

Ninguna observación en particular.

Konqueror 3.2 y Safari 2.0.3

Aparentemente no implementaron ninguno de estos atributos. Y no, no parece estar relacionado con el bug de CAPTION.

Las pruebas en Safari fueron hechas gracias a Safaritest, por lo que presumo que se trata de la versión 2.

Internet Explorer 6

La implementación de frame tiene varios detalles.

frame = above

Dibuja bordes sobre cada celda. Para colmo se nota que el que debería ser el borde superior de la tabla es en realidad los bordes superiores de la celda; esto es porque el borde aparece con espacios en blanco cortándolo.

frame = below
También dibuja los bordes inferiores de cada celda, pero al menos el borde inferior de la tabla está bien dibujado.
frame = hsides
Es una conjunción de los dos anteriores: borde superior e inferior para cada celda, borde superior de la tabla mal dibujado, borde inferior de la tabla bien dibujado.
frame = lhs
Bordes a la izquierda de cada celda y el borde izquierdo de la tabla mal dibujado.
frame = rhs
Bordes a la derecha de cada celda y el borde derecho de la tabla bien dibujado.
frame = vsides
Conjunción de lhs y rhs.
frame = box y rules = all
Bordes alrededor de cada celda, incluyendo bordes alrededor de la tabla.

Todos los casos anteriores se resuelven agregando td {border:0}. frame arreglado en Internet Explorer.

Con respecto a rules, la implementación es perfecta, salvo porque dibuja bordes alrededor de la tabla cualquiera sea el valor de rules. En este caso, agregar table {border:0} resuelve el problema. rules arreglado en Internet Explorer. Hasta ahí.

Opera 7, 8 y 9 Preview 2

La implementación de ambos atributos sería perfecta si no fuera por un pequeño bug. Si agregamos table {border:0} cuando el atributo rules está definido, Opera agrega los bordes superior e izquierdo a la tabla.

Todos reportados como bug #198844.

Netscape 4.8

Teóricamente, el último en la serie de Netscape 4.x. No implementó ninguno de los atributos.

Netscape 6.2

Sólo implementó frame.

Internet Explorer 4, 5, y 5.5

Igual que Internet Explorer 6.

Opera 5 y 6, y Act 10

No implementaron ninguno de los dos atributos. Sobre Act 10.

Off by one

Mencionado anteriormente. rules y frame aparecen recién en HTML 4. Off by one sólo implementó HTML 3.2. No hay implementación.

Dillo 0.8.5

No implementó ninguno de los dos atributos.

Links, a diferencia de lynx, implementó un soporte para tablas en HTML.

La implementación de rules es perfecta, pero erróneamente también dibuja bordes alrededor de la tabla. Esto, en realidad, está relacionado con un bug: cualquier valor (aún los no reconocidos) para rules, provoca bordes alrededor de la tabla.

La implementación de frame también es correcta salvo por dos bugs:

  • Los valores reconocidos para frame provocan bordes alrededor de cada celda (que, por suerte, no se extienden fuera de la tabla).
  • Valores no reconocidos para frame provocan bordes alrededor de cada celda y de la tabla.

Publicado el 3 de marzo de 2006 en las categorías HTML

5 comentarios. Agregá el tuyo →

are

Interesante, no lo conocía.

No me funcionan los links de las demos.

3 de marzo de 2006

are

Bueno, parece que la nota del principio de la sección 11.3 aclara porque existen tales atributos:

Note. The following sections describe the HTML table attributes that concern visual formatting. When this specification was first published in 1997, [CSS1] did not offer mechanisms to control all aspects of visual table formatting. Since then, [CSS2] has added properties to allow visual formatting of tables.

Visto así parece sólo un residuo del pasado (que por algún motivo no ha sido desestimado aún).

3 de marzo de 2006

Federico

Enlaces arreglados. Esto pasa cuando escribis la mitad del post en Linux y la otra mitad en Windows. :)

Y sobre la aclaración en la especificación: que mal que estuve que no la ví. Lo curioso es que estos dos atributos se han mantenido incluso en XHTML Strict. Igualmente, tomando en cuenta que COL y COLGROUP fueron una novedad de HTML 4, no es tan raro que trataran de promocionar su uso regalando dos nuevos atributos que podrían mejorar la ¿usabilidad? de la tabla.

3 de marzo de 2006

are

Confirmado lo de Safari 2.

Lo he probado con Safari 2.0.3 y no tiene nada implementado.

3 de marzo de 2006

Federico

Agregado lo de Safari. Gracias por la confirmación. :)

3 de marzo de 2006

Agregá tu comentario

Agregá tu comentario

© Federico Martín Panicobpm230 (arroba) gmail (punto) com