Проблема позиционирования IE CSS

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

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

Есть ли еще одно исправление, которое заставило бы этот код работать как для 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>
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
2 299
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Проблема в том, что вы не могли знать, что меню является частью div. Я использую scriptaculous, чтобы разрешить перемещение div. Если кто-то перемещает div, я хочу, чтобы меню было вместе с ним. Возможно, я мог бы переместить меню при наведении курсора на div.

dl__ 24.11.2008 01:27
Ответ принят как подходящий

Z-index ограничен рамками родительского элемента, если у родительского элемента есть position: relative или position: absolute.

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

Это ответ, с которым я согласился. Кажется, работает, хотя раскрывающееся меню немного мерцает в IE, когда я перемещаю мышь.

dl__ 24.11.2008 22:54

Другие вопросы по теме