2009-09-01 15 views
22

W każdej przeglądarce, z której korzystałem, z wyjątkiem ie8, element pozycjonowany absolutnie może być pozycjonowany zgodnie z najbliższym rodzicem z pozycjonowaniem względnym.Jak naprawić pozycjonowanie bezwzględne w IE8?

Poniższy kod pokazuje dwa elementy div w tabeli. Górny div ma pozycję: względną, jednak zagnieżdżony, pozycjonowany bezwzględnie element nie respektuje jego granic (w ie8, zostaje umieszczony na dole strony, zamiast na dole elementu div).

Czy ktoś wie, jak to naprawić?

<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> 

Odpowiedz

22

Zadeklaruj doctype. Zachęcam do korzystania z dokumentu w formacie HTML5:

<!DOCTYPE html> 
13

To dlatego, że nie używasz tego typu dokumentu. I IE pracuje w "quircks" mode.

Spróbuj doctype:

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

Dodaj to:

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

Zmusza IE8 poprawnie obliczyć pozycję w trybie quirks. Istnieje wiele sposobów, aby je zdobyć:

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

Zobacz http://haslayout.net/haslayout

2

Można również użyć

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

to ustalone mój problem!

6

Zawsze używałbym typu dokumentu HTML5, ale w moim przypadku jedynym problemem było to, że element nadrzędny potrzebował "position: relative;" specjalnie ustawione. potem wszystko działało idealnie.

+0

Prawidłowa odpowiedź! – leymannx

Powiązane problemy