2009-03-11 3 views
1

У меня странная проблема с плагином jQuery для аккордеона и IE7 (а может быть и раньше, там не тестировались). Я использую настраиваемую тему пользовательского интерфейса jQuery, созданную с помощью ThemeRoller. Я изменил его, чтобы настроить цвета, поля и границы. Аккордеон расположен внутри DIV, который, в свою очередь, вложен в основное содержимое. Упрощенная маркировка и CSS ниже. В основном контент представляет собой центрированную рамку, окруженную границами. Меню смещено ниже верхней части окна и плавает над левым краем.Проблема с расслоением с jQuery аккордеон и IE7

Проблема в том, что в IE7, когда я наводил курсор на меню, границы из базового main DIV показывают через аккордеон. Это не происходит в FF или Safari. Вопрос в том, почему, поскольку по умолчанию аккордеон CSS устанавливает z-индекс 1? Не должны ли все эти элементы отображаться поверх элементов DOM позади них? И почему только при наведении?

Я уже решил эту проблему и опубликую решение в качестве ответа.

<div id="main" style="position: relative;"> 
    <div id="main-menu"> 
     <ul id="navigation" class="ui-accordion"> 
      <li> 
       <div class="ui-accordion-header"> 
       </div> 
       <div class="ui-accordion-content"> 
       </div> 
      </li> 
     </ul> 
    </div> 
</div> 

CSS

#main 
{ 
    clear: both; 
    padding: 30px 30px 30px 30px; 
    background-color: #fff; 
    border: solid 1px #669933; 
    margin-bottom: 30px; 
    min-height: 500px; 
    height: auto !important; 
    height: 500px; 
    _height: 1px; /* only IE6 applies CSS properties starting with an underscrore */ 
} 
#main-menu 
{ 
    position: absolute; 
    top: 1em; 
    left: -1em; 
} 

#navigation 
{ 
    width: 10em; 
} 

/*UI accordion*/ 
.ui-accordion { 
    /*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.5; text-decoration: none; font-size: 100%; list-style: none; 
    font-family: Verdana, Arial, sans-serif; 
    font-size: 1.1em; 
/* additions from default */ 
    background-color: #ffffff; 
    color: #333333; 
    border: solid 1px #336600; 
    text-indent: 0.2em; 
    z-index: 1; 
} 

ответ

2

После попытки явно установить Z-индекс по различным классам .ui-аккордеона, я решил поддержать на один уровень вверх. Оказывается, что установка z-индекса (1) на main-menu DIV решает проблему в IE7. Обратите внимание, что z-индекс в основном классе .ui-аккордеон всегда присутствовал. Применение класса ui-accordion в div main-menu приводит к разрыву макета, и я решил, что проще просто добавить z-index в главное меню, вместо того, чтобы пытаться восстановить его так, чтобы он работал с классом ui-accordion ,