2010-08-13 11 views
6

Ok, sé que el uso de tablas para el diseño es malo. Pero tenemos un cliente que tiene ie6 instalado en todas las estaciones de trabajo y tenemos que hacer un diseño complicado que funcione perfectamente para que la solución CSS limpia no funcione, así que tuve que hacerlo con tablas.elemento div en la celda de la tabla tiene algún tipo de espacio

Aquí está el código HTML que tengo:

<body> 
<table id="main_table"> 
    <tr> 
    <td> 
     <div class="content">Content</div> 
    </td> 
    </tr> 
</table> 
</body> 

Aquí está la CSS que tengo:

body { 
     margin:0; 
     padding:0; 
    } 
#main_table { 
     border-collapse:collapse; 
     border-spacing:0; 
     width:100%; 
    } 
#main_table td { 
     margin:0; 
     padding:0; 
    } 
#main_table div.content { 
     margin:0; 
     padding:0; 
    } 

Y por alguna razón misteriosa, hay algún tipo de margen entre la parte superior y el de la célula div. Estoy absolutamente seguro de que todos mis márgenes y almohadillas están en 0, pero todavía está allí.

me trataron:

  • un lapso en lugar del div y el problema sigue ahí
  • usar position:relative en la celda de la tabla y la posición: absoluta en el div pero el div siempre tome su posición a partir de la arriba a la izquierda del navegador, no en la parte superior izquierda del elemento

¿Alguien ha tenido un problema similar en el pasado? Gracias de antemano por tu ayuda.

EDITAR: El problema no está solo en IE6 sino en todos los navegadores.

+0

intente usar firebug para ver dónde está el margen –

+0

Intenté comprobar con firebug y no veo ningún margen o relleno ... – Gabriel

+1

Ok, ahora me siento como un Noob completo. Encontré el problema: era que mi celular le agregaba algo de altura y la alineación vertical era el valor predeterminado de la mitad. Así que todo el div estaba en el medio de la celda, y dejó lo que parecía un margen en la parte superior. Realmente me siento idiota en este ... ¡Gracias por la participación de todos! Iré a buscar una cueva y me esconderé allí durante unos años ...;) – Gabriel

Respuesta

0

Ok, parece que me olvidé por completo de buscar una respuesta para esta pregunta y parece que 2 años después algunas personas aún sienten la necesidad de agregar nuevas respuestas, así que aquí estaba la solución a mi problema (que publiqué en comentarios de mi pregunta original)

El problema era que mi celda tenía algo de altura y la alineación vertical era el valor predeterminado de la mitad. Así que todo el div estaba en el medio de la celda, y dejó lo que parecía un margen en la parte superior.

así que no era un problema real, sólo yo ya no se solía hacer el diseño HTML con tablas ...

No, esa es la respuesta al problema ... Ahora bien, si alguien puede cerrar esta pregunta para evitar más comentarios/respuestas, sería genial ...;)

0

Creo que desea utilizar #main_table tr td o posiblemente #main_table tbody tr td para llegar a las celdas y eliminar su relleno y margen, pero no estoy 100% seguro. ¿Se muestra correctamente en otros navegadores en este momento? ¿Puedes verificar que las reglas de tus css se estén aplicando a tus celdas con algo así como la barra de herramientas de IE Developer?

+0

Debería haber especificado que el problema no solo está presente en IE6, sino también en otros navegadores ... Actualizaré mi pregunta para reflejar esto. – Gabriel

0

ie6 = el enemigo del mundo. no hay garantía pero pruebe cosas como poner "0px" en lugar de solo "0".

¿Has probado también poner <table cellspacing="0" cellpadding="0">?

No se puede pensar en mucho más.

¿Podemos tener un enlace para jugar?

0

Después de haber probado cellpadding/spacing. No puedo probarlo ya que no tengo IE6. Ya ni siquiera soporto IE6, Microsoft ha dejado de apoyarlo y, si ya no lo admiten, tampoco lo haré.

<table id="main_table" cellpadding="0" cellspacing="0"> 
+0

Parece que Microsoft siguió soportando IE6 para grandes organizaciones. Dado que este problema es para la intranet de una organización grande como esa, es difícil no admitirlo. El resto del tiempo, ya no soporto IE6 ... – Gabriel

0

Sí, tuve problemas similares, las tablas tienen muchas reglas funky, especialmente en IE6. Lo único que pude solucionar fue usar divs con CSS y tener reglas específicas de IE6 para arreglar los problemas del modelo de IE Box. Puede haber algunos problemas específicos de IE6 como ésta: Internet Explorer table 1 pixel spacing problem

0

Sólo tiene que añadir

body { line-height:0;} 
0

Mi solución de propósito general para IE6 temas de relleno/margen era (porque no apoyamos nunca más) para dar al elemento del contenedor ofensor el zoom property propiedad de IE con un valor de 100% para desencadenar hasLayout. YMMV.

#main_table td div.content { zoom:100%; }
0

¿Usó 'reset.css' en su proyecto? Porque la mayoría de las veces, si no especificamos ningún estilo para ningún elemento, el navegador usa su configuración predeterminada en esos lugares.

0

@Gabriel Puede que sepas que todos los navegadores tienen algunos ajustes predeterminados y, cuando no damos ningún estilo a ninguna etiqueta, el navegador le da los estilos predeterminados a esa etiqueta específica. Le sugiero que use 'reset.css', que puede encontrar here en su proyecto. Hay cuatro tipos de css, de los cuales Eric Meyer es "Reset CSS".

Cuestiones relacionadas