2009-09-01 23 views
22

En cada navegador que he usado, excepto ie8, un elemento completamente posicionado se puede posicionar de acuerdo con el elemento primario más cercano con una posición relativa.Cómo solucionar el posicionamiento absoluto en IE8?

El siguiente código muestra dos divs dentro de una tabla. La div principal tiene una posición: relativa, sin embargo, el elemento anidado, absolutamente posicionado no respeta sus límites (en ie8, se posiciona en la parte inferior de la página en lugar de la parte inferior del div principal).

¿Alguien sabe una solución para esto?

<style> 
#top { 
position: relative; 
background-color: #ccc; 
} 
#position_me { 
background-color: green; 
position: absolute; 
bottom: 0; 
} 
#bottom { 
background-color: blue; 
height: 100px; 
} 
</style> 
<table> 
    <tr> 
    <td><div id="top"> Div with id="top" 
     <div id="position_me"> Div with id="position me" </div> 
     </div> 
     <div id="bottom"> Div with id="bottom" 
     <p>Lorem ipsum dolor sit amet.</p> 
     </div></td> 
    </tr> 
</table> 

Respuesta

22

Declare a doctype. Lo invito a utilizar el doctype HTML5:

<!DOCTYPE html> 
13

Eso es porque no está utilizando el tipo de documento. E IE trabajando en el "quircks" mode.

probar este tipo de documento:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
19

añadir lo siguiente:

#top { 
//height: 100%; 
} 
#position_me { 
//left: 0; 
} 

Obliga IE8 para calcular la posición correcta en el modo de peculiaridades. Hay muchas maneras de conseguirlo:

//zoom: 1; 
//writing-mode: tb-rl; 

ver http://haslayout.net/haslayout

2

También puede utilizar

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

Esto fija mi problema!

6

siempre uso el doctype HTML5, pero en mi caso el único problema era que el elemento padre necesitaba "position: relative;" específicamente establecido. después de eso, funcionó perfectamente bien.

+0

¡Responda la respuesta correcta! – leymannx

Cuestiones relacionadas