我的jQuery有一个问题,我有一个有多个锚点的网站,我使用平滑滚动来进入锚点。问题是我的URL中有锚点。
下面是我的代码:
/**
* Checks if anchor exists. If it exists, scroll to it
*/
function scroll_if_anchor(href) {
href = typeof(href) == "string" ? href : $(this).attr("href");
// dynamically caluclates height
var fromTop;
var speed = 750; // Durée de l'animation (en ms)
var headerHeight = $('#header').height(),
navHeight = $('.nav-secondaire').height();
if( headerHeight + navHeight > 200){
fromTop = 300;
} else {
fromTop = 120;
}
// If our Href points to a valid, non-empty anchor, and is on the same page (e.g. #foo)
// Legacy jQuery and IE7 may have issues: http://stackoverflow.com/q/1593174
if(href.indexOf("#") == 0) {
var $target = $(href);
// Older browser without pushState might flicker here, as they momentarily
// jump to the wrong position (IE < 10)
if($target.length) {
$('html, body').animate({ scrollTop: $target.offset().top - fromTop }, speed);
if(history && "pushState" in history) {
history.pushState({}, document.title, window.location.pathname + href);
return false;
}
}
}
}
// When page loads, scroll to anchors
scroll_if_anchor(window.location.hash);
// Intercept all clicks on anchors
$("body").on("click", "a", scroll_if_anchor);
你有办法吗?
太感谢你了!
4条答案
按热度按时间5sxhfpxr1#
您发布的代码可以平滑滚动页面上的链接,当您访问页面时,可以滚动到特定的锚。请在javascript的末尾添加以下代码。确保在加载整个页面时调用它。
46qrfjad2#
location.hash
可能不包含初始的磅号,所以在将它传递给函数之前,必须确保它存在(函数希望井号在那里):fkvaft9z3#
添加这个答案可能有助于一些人登陆这个页面。
//首先:获取完整的url
变量hash_url =窗口位置
// second:简单地对哈希进行拆分
哈希_url =哈希_url.拆分(“#”);变量clean_url =哈希_url[0];
//检查干净的URL警报(clean_url);
//然后:
1.你可以用一个新的标签刷新页面。
1.对于页内滚动:将其添加到'clean_url'并使用scrollTop()。
替换(清除网址+"#您的新哈希”);
6rqinv9w4#
在此问题中:
How to remove the hash from window.location (URL) with JavaScript without page refresh?
可以使用以下代码删除散列
history.replaceState(null, null, ' ');