Foros del Web » Programando para Internet » PHP »

[Pregunta del millón] Diferente interpretación de capas en IE y FF

Estas en el tema de [Pregunta del millón] Diferente interpretación de capas en IE y FF en el foro de PHP en Foros del Web. Hola phperos . He encontrado un problema que aún nadie ha sabido solucionarme, empiezo a pensar que es un bug sin solución?. El problema es ...
  #1 (permalink)  
Antiguo 05/11/2007, 05:15
 
Fecha de Ingreso: octubre-2007
Ubicación: Dentro de un <div>
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta [Pregunta del millón] Diferente interpretación de capas en IE y FF

Hola phperos. He encontrado un problema que aún nadie ha sabido solucionarme, empiezo a pensar que es un bug sin solución?.

El problema es que, al crear capas en posición relativa (una debajo de otra), Firefox deja un espacio entre ellas e Internet Explorer no, ¿porqué?.

Vamos a hacer una sencilla prueba y veréis de lo que hablo, lo explico por partes y lo ilustro para mayor entendimiento.

Vamos a crear una página html con 4 capas, una capa contenedora y las otras tres restantes dentro de ésta. Así:

Código PHP:
<div id="contenido_todo">//capa que contiene a las otras 3

<div id="cabecera"></div>//capa 1

<div id="medio">//capa 2 con texto dentro
  
<p>Linea 1</p>
  <
p>Linea 2</p>
</
div>

<
div id="pie"></div>//capa 3
</div
Fácil ¿no?. Ésto debería dar como resultado lo siguiente:



En Internet Explorer se muestra como en la imagen anterior, pero el problema viene con Firefox que se muestra así:



A parte de que Firefox no centra las capas, como podéis ver, deja un espacio entre capas que no entiendo y hasta ahora nadie a sabido decirme porqué.

Las 4 capas tienen posición relativa, un ancho y un alto definido y un color de fondo, todo definido en el CSS.

La capa del medio (id="medio") tiene la propiedad overflow para que se adapte en alto al texto que vayamos introduciendo dentro de ella.

El CSS sería el siguiente:

Código:
<style type="text/css">
<!--
#contenido_todo {
	position:relative;
	width:800px;
	height:600px;
	z-index:1;
	background-color: #00FF00;
	text-align: center;
}
#cabecera {
	position:relative;
	width:200px;
	height:115px;
	z-index:2;
	background-color: #FF0000;
}
#medio {
	position:relative;
	width:200px;
	z-index:3;
	background-color: #0000FF;
	overflow: visible;
}
#pie {
	position:relative;
	width:200px;
	height:115px;
	z-index:4;
	background-color: #FF00FF;
}
body,td,th {
	color: #FFFFFF;
}
body {
	background-color: #000000;
}
-->
</style>
Os animo a hacer vuestra propia prueba con una página nueva y probarlo en vuestro explorador a ver que os sale.

Si algún gurú del php sabe porqué pasa ésto y fuera tan amable de explicarlo, sería de agradecer eternamente

¿A alguien mas le ha pasado ésto?
  #2 (permalink)  
Antiguo 05/11/2007, 06:23
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: [Pregunta del millón] Diferente interpretación de capas en IE y FF

Te has equivocado de foro. No hay nada de PHP en el asunto. Eso es cosa del foro de CSS.
__________________
Kelpie
  #3 (permalink)  
Antiguo 05/11/2007, 06:30
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Re: [Pregunta del millón] Diferente interpretación de capas en IE y FF

Esos espacios de separación que te aparecen son producto de los márgenes superior e inferior por defecto de los párrafos que tienes en el div azul.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #4 (permalink)  
Antiguo 05/11/2007, 06:52
 
Fecha de Ingreso: octubre-2007
Ubicación: Dentro de un <div>
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: [Pregunta del millón] Diferente interpretación de capas en IE y FF

Sé que IE y FF entienden el margen de diferente manera, aun así, he puesto al div azul márgenes de 0 pixeles.

Código:
#medio {
	position:relative;
	width:200px;
	z-index:2;
	background-color: #0000FF;
	overflow: visible;
	margin: 0px 0px 0px 0px;
}
Sigue saliendo el espacio entre los div's.

¿No he entendido bien tu respuesta, o no es el problema?

----------------------------------------------------------------------------------------
EDITO:

Tienes razón, es culpa de la etiqueta <p> del html.

¿Pero es posible configurar el márgen predeterminado del texto de un párrafo?

¿O cómo se solucionaría ésto?

Estoy sorprendido O_O

Última edición por yllelder; 05/11/2007 a las 06:58
  #5 (permalink)  
Antiguo 05/11/2007, 07:30
 
Fecha de Ingreso: octubre-2007
Ubicación: Dentro de un <div>
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: [Pregunta del millón] Diferente interpretación de capas en IE y FF

SOLUCIONADO !!

Qué malo es ésto de ser newbie

Simplemente poniendo un estilo a la etiqueta <p> (es que no sabía que se podía poner estilos a las etiquetas ) ya borras el margen que deja FF.

Sólo hay que tener cuidado con el formato a partir de ese momento, ya que un <p> será igual que un <br>, un simple salto de línea.

Código:
p { margin:0px 0px 0px 0px }
Fantástico, muchas gracias frijolerou !
  #6 (permalink)  
Antiguo 05/11/2007, 07:38
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: [Pregunta del millón] Diferente interpretación de capas en IE y FF

El centrado es un error de interpretación de IE...

El text-align sólo tiene que alinear el texto, los divs no tienen porque estar centrados.

Cita:
This property describes how text is aligned within the element.
El tema del margen es culpa de los p, se soluciona simple

Código:
p { margin: 0; }
  #7 (permalink)  
Antiguo 05/11/2007, 07:39
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: [Pregunta del millón] Diferente interpretación de capas en IE y FF

Para probar CSS en FF, te recomiendo firebug
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:49.