2013-09-25 22 views
1

我有這個腳本是我想讓它的滾動到15%頂部的偏移量。我嘗試了很多東西,所以我很好奇你們會採取什麼樣的方法。我已經把它簡化爲什麼可行,因爲我所有的嘗試都失敗了。希望有人能幫助我。jquery偏移%而不是px - 可能嗎?

$('a[href*=#]').bind('click', function (e) { 
     e.preventDefault(); 

     var target = $(this).attr("href"); 

     $('html, body').stop().animate({ scrollTop: $(target).offset().top }, 800, function() { 
      location.hash = target; 
     }); 

     return false; 
    }); 

我在這裏做一個小提琴:http://jsfiddle.net/77rFz/

回答

0

我沒有嘗試,但我要說的是這樣可以工作:

$('a[href*=#]').bind('click', function (e) { 
    e.preventDefault(); 

    var target = $(this).attr("href"); 

    var offset = $(target).offset().top - $(target).height * 0.15; 

    $('html, body').stop().animate({ scrollTop: offset }, 800, function() { 
     location.hash = target; 
    }); 

    return false; 
}); 
+0

它不是做得很好,看到這個小提琴:http://jsfiddle.net/77rFz/ – implum

+0

如果我刪除的位置.hash =目標它停止閃爍,但然後它開始失誤,當我打鏈接2,3等 – implum

+0

真的,我已經更新了jsFiddle(http://jsfiddle.net/77rFz/44/),並會更新上面的答案 – mvieghofer

0

嘗試是這樣的

Math.round(parseInt($(target).offset().top) * 0.15) 
+0

不工作或者 - 在這裏看到:http://jsfiddle.net/77rFz/ – implum

0

這工作!

$('a[href*=#]').bind('click', function (e) { 
     e.preventDefault(); 

     var target = $(this).attr("href"); 
     var parentDiv = $(this).parent(".wrap1"); 
     var offset = Math.round(parseInt($(target).offset().top) - (0.15 * parentDiv.height())); 

     $('html, body').stop().animate({ scrollTop: offset }, 800, function() { 
      //location.hash = target; 
     }); 

     return false; 
    }); 
+0

我剛剛幾分鐘前就更新了我的答案。順便說一句''location.hash = target'不應該有任何問題 – mvieghofer

+0

你沒有設置'parstInt'函數的基數。文檔:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – Jasper