JQuery Scroll to Offset from top of browser?
I have the following scroll script, which scrolls round the page fine, works exactly how i want it too.
$(function(){
$('a[href*=#]').click(function() {
if (location.pathname.replace(/^\//,'') == this.p开发者_JAVA百科athname.replace(/^\//,'')
&& location.hostname == this.hostname) {
var $target = $(this.hash);
$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
if ($target.length) {
var targetOffset = $target.offset().top;
$('html,body').animate({scrollTop: targetOffset}, 1000);
return false;
}
}
});
});
However, i need it to ignore the top say 200px as i have a fixed header at the top of the page that the content scrolls behind.
Meaning that when i scroll to top it scrolls the content to behind the fixed header so i cannot see it, so i need it to scroll to just below the header.. so to treat the bottom of the header as the top of the browser i suppose....
Can this be done as it would be very handy?
Many thanks for any help
Would something like this work?
var targetOffset = $target.offset().top - 200;
Or grab the height of the header element for the extra offset.
var targetOffset = $target.offset().top - $("element").outerHeight(true);
You could use something like this if condition on ur code to do that
//check if the absolute position is below header
if ($('#IdOfTheScrollElement').position().top >= 200 ){
//scroll
}
else {
//do nothing
}
The Code is fine, you just need to remove the height of your fixed header here, for example if it's 200px. it will work perfectly.
$('html,body').animate({scrollTop: (targetOffset().top)-200}, 1000);
You can also check this when a button is clicked
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
// Check height of the header and padding
var header_height = $('.header').outerHeight();
Remove it from your offset
$('html,body').animate({scrollTop: (targetOffset().top) - header_height }, 1000);
精彩评论