IE позиционирование CSS проблема - PullRequest
1 голос
/ 24 ноября 2008

У меня есть некоторая разметка для всплывающего меню, которое работает в Firefox, но не в IE. Проблема в том, что всплывающее окно появляется под другими элементами и не зависит от значения z-index. Полный исполняемый пример приведен ниже.

Теперь я знаю, что одно из исправлений - не позиционировать div как относительные, но я не могу этого сделать, потому что в реальном коде я использую scriptaculous, и он добавляет «position :lative», чтобы делать то, что это нужно сделать. Кроме того, я не думаю, что это должно иметь значение.

Есть ли другое исправление, которое заставило бы этот код работать и для IE, и для firefox?

Пример:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>IE Problem</title>
<style type="text/css">
.mydiv{
  position: relative;
  background: yellow;
  border: solid 1px black;
}
table{background:black;} 
td.menu{background:lightblue}
table.menu
{
  position:absolute;
  visibility:hidden;
  z-index:999;
}
</style>
<script type="text/javascript">
function showmenu(elmnt){
   document.getElementById(elmnt).style.visibility="visible";
}
function hidemenu(elmnt){
   document.getElementById(elmnt).style.visibility="hidden";
}
</script>
</head>

<body>
<div class="mydiv" onmouseover="showmenu('one')" onmouseout="hidemenu('one')">

   <a href="#">div one</a><br />
   <table class="menu" id="one" width="120">
     <tr><td class="menu"><a href="#">Item 1</a></td></tr>
     <tr><td class="menu"><a href="#">Item 2</a></td></tr>
   </table>

</div>
<div class="mydiv" onmouseover="showmenu('two')" onmouseout="hidemenu('two')">

   <a href="#">div two</a><br />
   <table class="menu" id="two" width="120">
     <tr><td class="menu"><a href="#">Item 1</a></td></tr>
     <tr><td class="menu"><a href="#">Item 2</a></td></tr>
   </table>

</div>  
</body>

</html>

Ответы [ 2 ]

4 голосов
/ 24 ноября 2008

Z-индекс находится в пределах родительского объекта, если родитель имеет положение: относительное или положение: абсолютное.

Решением для вашего примера является добавление style = "z-index: 2;" до первого «mydiv» и z-index: 1; ко второму.

2 голосов
/ 24 ноября 2008

Если вы переместите СТОЛЫ за пределы DIV, это сработает. Надеюсь, это удовлетворит ваши потребности? Я думаю, что я бы тоже запутался, если бы я был DIV, и вы попросили меня сделать Z-заказ, что я держу над собой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...