【发布时间】:2016-06-20 20:58:51
【问题描述】:
我正在寻找将 jQuery 滚动添加到顶部或滚动到锚点的答案,但实际上并不是两者都集成在一起。所以希望可以在这里提问。
我们有当前的 jQuery 函数来为更长的页面添加滚动到顶部的锚点。它工作正常。
// Add To Top Button functionality
jQuery(document).ready(function($){
// Scroll (in pixels) after which the "To Top" link is shown
var offset = 700,
//Scroll (in pixels) after which the "back to top" link opacity is reduced
offset_opacity = 1200,
//Duration of the top scrolling animation (in ms)
scroll_top_duration = 700,
//Get the "To Top" link
$back_to_top = $('.to-top');
//Visible or not "To Top" link
$(window).scroll(function(){
( $(this).scrollTop() > offset ) ? $back_to_top.addClass('top-is-visible') : $back_to_top.removeClass('top-is-visible top-fade-out');
if( $(this).scrollTop() > offset_opacity ) {
$back_to_top.addClass('top-fade-out');
}
});
//Smoothy scroll to top
$back_to_top.on('click', function(event){
event.preventDefault();
$('body,html').animate({
scrollTop: 0 ,
}, scroll_top_duration
);
});
});
- 如何修改它以允许使用 ID(例如
<h2 id="anchor-name">)平滑滚动到页面上的锚点,而不会发生冲突?
澄清:我们需要对上述脚本进行修改,或者新建一个不会与之冲突的脚本,这将为页面现有 HTML 中的任何锚链接添加平滑滚动(例如,@987654323 @)。 JS 应该检测任何锚链接并为其添加平滑滚动功能。我们不会手动将特定的锚链接添加到 JS。
【问题讨论】:
-
您希望如何识别要滚动到的 ID?在页面加载时解析 url?或者其他类型的输入(鼠标点击href)?
-
是的,您的问题中没有足够的信息来确定要滚动到的什么。事实上,这可能是最难的部分,滚动到它对 jquery 来说是微不足道的
-
为什么不使用真正的锚链接并让 jquery 处理这些,所以回退是正常行为? :)
-
如果你想解析 url 并找到要滚动到的锚点,那么你可以在 .ready() 中找到该元素的 Y 偏移量。
-
抱歉这里不够清楚。锚点和指向锚点的链接将手动添加到 HTML 中(使用 WordPress,因此添加到页面中)。我只是希望页面上的任何链接都能将您定向到 ID 以平滑滚动而不是硬跳转,同时又不会破坏当前的“滚动到顶部”功能。
标签: javascript jquery smooth-scrolling