Ver Mensaje Individual
  #12 (permalink)  
Antiguo 26/10/2008, 07:11
Avatar de Negora
Negora
 
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: ¿Funcionamiento incorrecto de border-collapse en Mozilla Firefox?

Mikmoro: Antes de nada, insisto sobre la frase del estándar que comentabas:

"Borders are centered on the grid lines between the cells."

Esto no especifica que el alineamiento con respecto al elemento contenedor haya de hacerse en base a la rejilla. Solamente dice que si un borde compuesto o fundido tiene 4 píxeles por ejemplo, éste se ha de centrar con respecto a dicha rejilla. El diagrama que indicas de hecho se refiere a eso mismo y tampoco daría respuesta a este caso.

En cuanto al hecho de que una tabla no haya de verse desplazada por el contenido y/o borde de las celdas (como dices, la causa de nuestra divergencia de opiniones), sigo sin coincidir por varias razones...

La primera se refiere al propio concepto de borde en CSS. A diferencia de un contorno (outline), éste siempre ocupa un lugar. Y si el elemento tiene disposición estática, ha de provocar un empuje a los elementos adyacentes. Como en este caso el centro del borde de la celda está ligado a la rejilla, y ésta a su vez es quien da forma a la tabla, dicha celda no puede separarse de la tabla con un empuje (lo que sí sucede con "border-collapse: separate"), por lo que el empuje debería de aplicarse a la tabla en sí. Se podría decir que el borde de la celda "rebosa" de la tabla.

Pero busquemos un fundamento físico basado en lo que dice el estándar. Si lo que hace Firefox es correcto y el elemento que contiene la tabla no usa ninguna propiedad de ocultación (overflow), ¿Por qué esa mitad externa del borde no ocupa espacio? Eso contradice por completo el concepto de borde en CSS.

Y si colocamos una tabla idéntica inmediatamente después de la otra, una vez más se contraviene el estándar, pues la mitad de sus bordes se solapan y esto jamás debería de ser así. Tendría que existir empuje, por mucho que el borde no sea de la tabla sino de las celdas. ¿O no sucede así siempre en cualquier caso?

La otra razón viene dada al poner a prueba el renderizado cuando es la tabla la que disfruta de borde:
Código:
body { margin: 0px; }
table { border-collapse: collapse; border-spacing: 0px; border: solid 4px #ff0000; }
td { width: 100px; }
En este caso la tabla tiene borde, le pertenece, pero la manifestación gráfica es idéntica, ignorando por completo el espacio que la mitad externa del borde debería de estar ocupando.

Última edición por Negora; 26/10/2008 a las 07:16