2014-12-04 56 views
0

我工作的一個項目,我嘗試使用移動箭頭導航。 現在我的jQuery中出現了一些問題。 箭頭的原始不起作用,但如果我調整窗口的大小,它確實工作。 所以de window.resize函數工作,但window.load不。 我也嘗試更換window.load bij document.ready,但這不起作用。 我希望有人能幫助我。錯誤在我的jQuery箭頭菜單動畫

該網站是在線瀏覽:http://jesseu.nl/madein030/ 的jsfiddle:http://jsfiddle.net/dgLthkjy/ 的HTML代碼是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Made in 030</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link href="style.css" rel="stylesheet" media="all" type="text/css" /> 
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
    <script src="js/myscript.js"></script> 
</head> 
<body> 
    <header> 
     <div class="menu_container"> 
      <menu> 
       <ul class="left_menu" > 
        <li class="left" ><a href="#">Home</a></li> 
        <li class="left active" ><a href="#">Over</a></li> 
        <li class="left"><a href="#">Probeerlijst</a></li> 
        <li class="logo_container"> 
         <div class="logo"> 
          <img src="img/logo.png" alt=""/> 
         </div> 
        </li> 
        <li class="right"><a href="#">Contact</a></li> 
        <li class="right"><a href="#">Shop</a></li> 
        <li class="right"><a href="#">Blog</a></li> 
        <li id='magic-line'></li> 
       </ul> 
      </menu> 
     </div> 
     <div class="banner"> 
      <img src="img/banner.jpg" class="banner_image"/> 
      <img src="img/skyline.png" class="skyline_image"/> 
     </div> 
     <div class="banner_footer"> 
     </div> 
    </header> 
</body> 

jQuery代碼是:

$(window).load(function() { 

window.setTimeout(function(){ 
    var bannerHeight = ($(".banner_image").height()+'px') 
    $(".banner").css({'height': bannerHeight}); 
    console.log(bannerHeight); 
}, 1); 

var $el, leftPos, newWidth, 
    $mainNav = $("menu ul"); 
var $magicLine = $("#magic-line"); 
var menuLinkWidth = $('menu ul li.active a').width()/(2); 

$magicLine 
    .width($("menu ul li.active").width()) 
    .css("left", $("menu ul li.active a").position().left) 
    .data("origLeft", $magicLine.position().left) 
    .data("origWidth", $magicLine.width()); 

$("menu ul li a").hover(function() { 
    $el = $(this); 
    leftPos = $el.position().left; 
    newWidth = $el.parent().width(); 
    $magicLine.stop().animate({ 
     left: leftPos, 
     width: newWidth 
    },500); 
}, function() { 
    $magicLine.stop().animate({ 
     left: $magicLine.data("origLeft"), 
     width: $magicLine.data("origWidth") 
    },500);  
}); 

var value = $('body').width()/(11); 
$('menu ul li a').css('font-size',$('body').width()/85); 
$('#magic-line').css('top',value - 9); 

var outerHeight = $('menu ul li').height(); 
var innerHeight = $('menu ul li a').height(); 
$('menu ul li a').css('margin-top', (outerHeight - innerHeight)/2); 

}); 

$(window).resize(function(){ 

var $el, leftPos, newWidth, 
    $mainNav = $("menu ul"); 
var $magicLine = $("#magic-line"); 
$magicLine 
    .width($("menu ul li.active").width()) 
    .css("left", $("menu ul li.active a").position().left) 
    .data("origLeft", $magicLine.position().left) 
    .data("origWidth", $magicLine.width()); 

$("menu ul li a").hover(function() { 
    $el = $(this); 
    leftPos = $el.position().left; 
    newWidth = $el.parent().width(); 
    $magicLine.stop().animate({ 
     left: leftPos, 
     width: newWidth 
    },500); 
}, function() { 
    $magicLine.stop().animate({ 
     left: $magicLine.data("origLeft"), 
     width: $magicLine.data("origWidth") 
    },500);  
}); 

var value = $('body').width()/(11); 
$('menu ul li a').css('font-size',$('body').width()/85); 
$('#magic-line').css('top',value - 9); 

var BannerHeight = ($(".banner_image").height()+'px') 
$(".banner").css({'height': BannerHeight}); 
console.log(BannerHeight); 

var outerHeight = $('menu ul li').height(); 
var innerHeight = $('menu ul li a').height(); 
$('menu ul li a').css('margin-top', (outerHeight - innerHeight)/2); 

}); 

的CSS代碼是:

#magic-line { 
position: absolute; 
left: 0; 
height: 10px; 
background-image:url(img/active.png); 
background-repeat:no-repeat; 
background-position:bottom center; 
background-size:25px; 
} 
+0

:-) http://jsfiddle.net/2duz0ty8/ – clement 2014-12-04 08:35:42

+0

@clement http://jsfiddle.net/dgLthkjy/) – 2014-12-04 09:13:22

回答

0

我解決它自己被改變:

$(window).load(function() { 

onResize = function() { 

} 
$(window).load('resize', onResize); 
$(window).bind('resize', onResize); 

關閉這種方式我只需要編寫一次代碼,而問題被解決了。在的jsfiddle奧夫