Comunidad de diseño web y desarrollo en internet online

Es imposible hacer una tabla de imágenes continuas en HTML5

Citar            
MensajeEscrito el 24 Jun 2010 10:44 pm
Es imposible hacer una tabla de imágenes continuas en HTML5.
Demostración:
Sea el código:

Código HTML :

<!DOCTYPE html>
<table style="border-collapse: collapse;">
   <tr>
      <td style="border: 1px solid blue; margin: 0px; padding: 0px;"><img src="images/cuadro.png" style="border: none;">
   <tr>
      <td style="border: 1px solid green; margin: 0px; padding: 0px;"><img src="images/cuadro.png" style="border: none;">
</table>

Donde "cuadro.png" es una imagen de 50 por 50 píxeles.
El código no hace más que poner una imagen encima de la otra cada una en una celda diferente, y cada celda tiene un borde de distinto color.
El doctype fuerza al navegador a usar el modo HTML5.
En todos los navegadores que soportan HTML5 en ambas celdas aparece un espacio en blanco de tres píxeles de alto justo abajo de la imagen.
Cuando se elimina la primera línea de código "<!DOCTYPE html>" el misterioso espacio en blanco desaparece y ambas imágenes aparecen una exactamente a continuación de la otra separadas solo por el borde de color de las celdas.
Esta curiosa ¿característica? hace que sea imposible mostrar una serie de imágenes en una tabla sin importar de cuántas filas y columnas, el misterioso espacio en blanco (o del color del fondo de la tabla) aparece rompiendo el diseño.
Probado en Chrome, FF, Safari y Opera.
Ahora bien, si se agrega "font-size: 0pt;" en el style de la table, el espacio en blanco se pone de un pixel de alto. Pero poniendo -1pt es un error por lo que el navegador ignora el tamaño y el espacio en blanco regresa a 2 píxeles.

Pregunta ¿por qué sucede esto? :?

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 15 Sep 2010 07:38 pm
Descubierto el misterio. Yo mismo me pregunto y yo mismo me respondo.
Para que esto no ocurra hay que especificar que el line-height dentro de las celdas sea cero.

Código HTML :

<!DOCTYPE html> 
<table style="border-collapse: collapse;"> 
   <tr> 
      <td style="border: 1px solid blue; margin: 0px; padding: 0px; line-height: 0px;"><img src="images/cuadro.png" style="border: none;"> 
   <tr> 
      <td style="border: 1px solid green; margin: 0px; padding: 0px; line-height: 0px;"><img src="images/cuadro.png" style="border: none;"> 
</table>

El "problema" está en que en HTML5 el tag <img> es de tipo "inline" por lo tanto está afectado por el alto de la línea de texto, el espacio en blanco que aparece abajo de la imagen es el mismo espacio que aparece en los <img> que están en una línea de texto (por ejemplo: <p>Esto es <img src="unaimagen.jpg" /></p>), salvo que se modifique ese comportamiento (por ejemplo haciendo img { verical-align: middle; }).
A la luz de esto, otra solución sería poner en el CSS:

Código HTML :

img { display: block; }

También quita el espacio en blanco, pero afecta a todos los <img>s de la página.
Por lo tanto otra solución sería:

Código HTML :

<!DOCTYPE html> 
<table style="border-collapse: collapse;"> 
   <tr> 
      <td style="border: 1px solid blue; margin: 0px; padding: 0px;"><img src="images/cuadro.png" style="border: none; display: block;"> 
   <tr> 
      <td style="border: 1px solid green; margin: 0px; padding: 0px;"><img src="images/cuadro.png" style="border: none; display: block;"> 
</table>


Enjoy :D

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Sep 2010 12:14 am
wow que me sorprende que no se cierran las etiquetas como siempre... alguien puede hablar un poco mas al respecto?

Por gosunkugi

Claber

251 de clabLevel

1 tutorial

Genero:Masculino  

Kuri - frontend dev - XueZhongWen!

safari
Citar            
MensajeEscrito el 08 Mar 2013 06:07 am
Millones de gracias... no sabes como me sirvio esto.
termine haciendo un widget social con tu tabla en pos de ahorrar recursos en wordpress.
no solo quedo barbaro sino que para mi tema responsive la vista movil quedo impecable,

mil gracias otra vez

Por gabrielges

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Mar 2013 07:07 pm
@gosunkugi... sí se deben de cerrar los "td" y "tr"

*No se por qué @DriverOp no los puso.. (tal vez para reducir líneas de código obvias)

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.