Мне было интересно, есть ли у кого-нибудь идея, как решить следующую проблему в IE7:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IE7 absolute positioning bug</title>
<style type="text/css">
#panel { position: relative; border: solid 1px black; }
#spacer { height: 100px; }
#footer { position: absolute; bottom: 0px; }
</style>
<script type="text/javascript">
function toggle() {
var spacer = document.getElementById("spacer");
var style = "block";
if (spacer.style.display == "block" || spacer.style.display == "") {
style = "none";
}
spacer.style.display = style;
}
</script>
</head>
<body>
<div id="panel">
<button onclick="toggle();">Click me</button>
<br /><br /><br />
<div id="spacer"></div>
<div id="footer">This is some footer</div>
</div>
</body>
</html>
Когда вы запустите это в IE7, вы увидите, что элемент «нижнего колонтитула» остается после изменения CSS для «панели». Тот же пример, протестированный в IE8, FF и Chrome, работает точно так же, как и ожидалось.
Я уже пытался обновить класс элемента, но это не работает, если окно браузера было развернуто в максимальном размере и в него не было внесено никаких дополнительных изменений размера (что составляет около 90% случаев использования, которые мы имеем для нашего продукта .... :()
Я застрял с решением на основе CSS, однако я думаю, что в этом случае я могу сделать исключение, если его легко сделать специфичным для IE7 (что означает, что другие браузеры будут вести себя стандартным образом с этим).
Пожалуйста, помогите!