2014-02-11 87 views
0

我正在嘗試創建與我的JSFIDDLE中顯示的完全一致的功能,基本上是將鼠標懸停在div上,然後在該div下面有一個背景以及背景上方的下滑面板。唯一的問題是,功能是非常多的,並且在Internet Explorer中幾乎不起作用。在懸停上創建背景

這裏是JS:

function darken(panelOpen){ 
     if(panelOpen){ 
      if(jQuery('#menu-backdrop').length){ 
       jQuery("#menu-backdrop").stop().fadeIn(300); 
      }else{ 
       jQuery(document.body).stop().append(jQuery('<div id="menu-backdrop" class="modal-backdrop"></div>').css('opacity',0.7).hide().fadeIn(300)); 
      } 
     }else{ 
      jQuery(".modal-backdrop").stop().fadeOut(300); 
     } 
    } //Backdrop 

jQuery(document).ready(function(e) {  

    var bioId; 

    jQuery('.personnel').mouseover(function() { 

     jQuery(this).css('z-index','1050'); 

     darken(true); 

     bioId = '#personnel-bio-'+this.id.replace(/[^\d.]/g,''); 
     var bio = '#personnel-bio-'+this.id.replace(/[^\d.]/g,''); 
     if(jQuery(bio).is(':visible')){ 
     }else{ 
      jQuery(bio).slideDown(300); 
     } 
    }); //dropdown function 

    jQuery(".wrap").mouseleave(function() { 
     darken(false); 

     if(jQuery(bioId).is(':visible')){ 
      jQuery(bioId).slideUp(300); 
     }else{ 
     } 

     setTimeout(function() { 
      jQuery('.personnel').css('z-index','0'); 
     }, 300); 
    }); // slide up function 
}); 

和CSS:

.personnel { 
     position:relative; 
} 

.personnel-bio { 
    display:none; 
    padding:1.2em; 
    position:relative; 
    z-index:1050; 
    margin-bottom:15px; 
    background:#FFF; 
} 

,最後的HTML:

<div class="wrap"> 
<div id="personnel-1" class="pull-left personnel"> 
         <div class="personnel-inner"> 
          <div class="thumbnail"> 
           <img src="http://placehold.it/330x290"/> 
          </div> 
          <div class="thumbnail-title"> 
           <h4>LAbel</h4> 
          </div> 
         </div> 
        </div> 

<div class="clearfix"></div> 
<div id="personnel-bio-1" class="personnel-bio"> 
        <h5><strong>Pieter Strydom</strong></h5> 

        <p>loerm ipsum.</p> 
       </div> 
</div> 

我安靜不知道我現在做的不正確。所以任何幫助都會得到很高的評價。

回答

1

我整理了一下代碼,刪除了不必要的電話z-indexstop 模式背景是從一開始就在DOM中,這也有助於加快速度。最初的CSS設置爲opacity:0.7;display:none; 現在應該更加流暢。

http://jsfiddle.net/hBB97/2/

HTML:

<div id="menu-backdrop" class="modal-backdrop"></div> 
<div class="wrap"> 
    <div id="personnel-1" class="pull-left personnel"> 
     <div class="personnel-inner"> 
      <div class="thumbnail"> 
       <img src="http://placehold.it/330x290" /> 
      </div> 
      <div class="thumbnail-title"> 
       <h4>Label</h4> 
      </div> 
     </div> 
    </div> 
    <div class="clearfix"></div> 
    <div id="personnel-bio-1" class="personnel-bio"> 
     <h5><strong>Pieter Strydom</strong></h5> 
     <p>loerm ipsum.</p> 
    </div> 
</div> 

的Javascript:

function darken(panelOpen, personnelContainer) { 
    if (panelOpen) { 
     personnelContainer.css('z-index', '1050'); 
     jQuery(".modal-backdrop").fadeIn(300); 
    } else { 
     jQuery(".modal-backdrop").fadeOut(300); 
     personnelContainer.css('z-index', '0'); 
    } 
} //Backdrop 

jQuery(document).ready(function (e) { 

    var bioId; 

    jQuery('.personnel').mouseover(function() { 

     darken(true, $(this)); 

     bioId = '#personnel-bio-' + this.id.replace(/[^\d.]/g, ''); 
     var bio = '#personnel-bio-' + this.id.replace(/[^\d.]/g, ''); 
     if (jQuery(bio).is(':visible')) {} else { 
      jQuery(bio).slideDown(300); 
     } 
    }); //dropdown function 

    jQuery(".personnel").mouseleave(function() { 
     darken(false, $(this)); 

     if (jQuery(bioId).is(':visible')) { 
      jQuery(bioId).slideUp(300); 
     } 
    }); // slide up function 
}); 

CSS:

.personnel { 
    position:relative; 
} 
.personnel-bio { 
    display:none; 
    padding:1.2em; 
    position:relative; 
    z-index:1050; 
    margin-bottom:15px; 
    background:#FFF; 
} 
.modal-backdrop { 
    display:none; 
    opacity:0.7; 
} 
+0

它工作得更好,但有一個問題。我有這樣的多個圖像,我只希望其中的一個高於基於懸停的背景。 –

+0

行 - 已更新 - 將更新答案現在http://jsfiddle.net/hBB97/4/ –

+0

在ie9或ie10中不能很好地工作.. –