2009-03-11 18 views
1

jQuery akordeon eklentisi ve IE7 ile garip bir sorunum var (ve belki daha önce test edemedik). ThemeRoller ile oluşturulmuş özelleştirilmiş bir jQuery UI teması kullanıyorum. Renkleri, kenar boşluklarını ve kenarlıkları ayarlamak için biraz değiştirdim. Akordeon, ana içeriğimin içine yerleştirilmiş olan bir DIV içinde yer almaktadır. Basitleştirilmiş işaretleme ve CSS aşağıda. Temel olarak içerik, sınırlarla çevrili ortalanmış bir kutudur. Menü, kutunun üst kısmının altından kaydırılır ve sol kenarın üzerinde yüzer.jQuery akordeon ve IE7 ile katman sorunu

Sorun, IE7'de bir kez menünün üzerine geldiğimde, altta yatan main DIV arasındaki sınırların akordeon boyunca gösterilmesidir. Bu FF veya Safari'de gerçekleşmez. Sorunun nedeni, varsayılan akordeon CSS'nin 1'lik bir z-indeksi oluşturmasıdır? Bu unsurların hepsi arkalarındaki DOM öğelerinin üst kısmında görünmemeli mi? Ve neden sadece vurgulu?

Bu sorunu zaten çözdüm ve çözümü bir yanıt olarak göndereceğim.

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

cevap

2

açıkça çeşitli .ui-akordeon sınıfları üzerinde bir Z endeksini ayarlamak için çalışıyor sonra bir düzey yukarı destekleme kararı aldı. main-menu DIV üzerinde bir z-endeksi (1) ayarlamanın IE7'deki sorunu çözdüğü ortaya çıkıyor. Ana .ui-akordeon sınıfındaki z-endeksi her zaman orada olduğunu unutmayın. UI-akordeon sınıfının main-menu divine uygulanması düzeni bozar ve ben, u-akordeon sınıfıyla birlikte çalışacak şekilde, onu yeniden başlatmayı denemek yerine, z-dizinini ana menüye eklemenin daha kolay olduğunu düşündüm. .