Javascript jQuery:如何在页面加载时滚动到特定的锚/div?
最近我尝试更频繁地使用jquery,现在我有一些问题想用jquery解决,希望你能帮助我 我有一些网页,其中包含一些锚标签(让锚定在页面的中间),在事件加载时,我希望页面开始在某个锚标签位置上,这意味着页面将“自动滚动”到某个位置。 这是我以前的解决方案(因为它在我的url中添加了#i),所以非常难看) 不管怎样,你能告诉我如何使用jquery来实现它吗Javascript jQuery:如何在页面加载时滚动到特定的锚/div?,javascript,jquery,Javascript,Jquery,最近我尝试更频繁地使用jquery,现在我有一些问题想用jquery解决,希望你能帮助我 我有一些网页,其中包含一些锚标签(让锚定在页面的中间),在事件加载时,我希望页面开始在某个锚标签位置上,这意味着页面将“自动滚动”到某个位置。 这是我以前的解决方案(因为它在我的url中添加了#i),所以非常难看) 不管怎样,你能告诉我如何使用jquery来实现它吗 注意:我不希望用户在到达此位置时感觉到任何滑动或效果使用以下简单示例 function scrollToElement(ele) {
注意:我不希望用户在到达此位置时感觉到任何滑动或效果使用以下简单示例
function scrollToElement(ele) {
$(window).scrollTop(ele.offset().top).scrollLeft(ele.offset().left);
}
其中ele
是您的元素(jQuery)。。例如:scrollToElement($('#myid')代码>看看
将#值添加到地址中是浏览器(如IE)用于识别页面上命名锚位置的默认行为,因为这是来自Netscape的
您可以截取并删除它,阅读本文。只需使用scrollTo插件即可
$("document").ready(function(){
$(window).scrollTo("#div")
})
没有必要使用jQuery,因为这是
我已经尝试了几个小时,阻止浏览器跳转到锚而不是滚动到锚的最简单方法是:使用另一个锚(你在网站上不使用的id)。因此,与其链接到“http://#yourImplemented”,不如链接到“http://#NoIDonYourSite”。呸,浏览器不会再跳转了
然后只需检查是否设置了锚(使用下面提供的脚本,该脚本已从另一个线程中拉出!)。并设置要滚动到的实际id
$(document).ready(function(){
$(window).load(function(){
// Remove the # from the hash, as different browsers may or may not include it
var hash = location.hash.replace('#','');
if(hash != ''){
// Clear the hash in the URL
// location.hash = ''; // delete front "//" if you want to change the address bar
$('html, body').animate({ scrollTop: $('#YourIDtoScrollTo').offset().top}, 1000);
}
});
});
请参阅以获取一个工作示例。只需将#[要滚动到的div的id]
附加到页面url。例如,如果我想滚动到stackoverflow问题的版权部分,URL将从
/* START --- scroll till anchor */
(function($) {
$.fn.goTo = function() {
var top_menu_height=$('#div_menu_header').height() + 5 ;
//alert ( 'top_menu_height is:' + top_menu_height );
$('html, body').animate({
scrollTop: (-1)*top_menu_height + $(this).offset().top + 'px'
}, 500);
return this; // for chaining...
}
})(jQuery);
$(document).ready(function(){
var url = document.URL, idx = url.indexOf("#") ;
var hash = idx != -1 ? url.substring(idx+1) : "";
$(window).load(function(){
// Remove the # from the hash, as different browsers may or may not include it
var anchor_to_scroll_to = location.hash.replace('#','');
if ( anchor_to_scroll_to != '' ) {
anchor_to_scroll_to = '#' + anchor_to_scroll_to ;
$(anchor_to_scroll_to).goTo();
}
});
});
/* STOP --- scroll till anchror */
http://stackoverflow.com/questions/9757625/jquery-how-to-scroll-to-certain-anchor-div-on-page-load
到
请注意URL末尾的#版权。我是这样实现的
if(location.pathname == '/registration')
{
$('html, body').animate({ scrollTop: $('#registration').offset().top - 40}, 1000);
}
所以你只想让用户“弹出”到那个部分,没有任何幻灯片效果?这是一个动画版本。。。OP想要在没有动画的情况下完成它!OP可以修改代码,这是帮助他朝正确方向发展的功能示例。工作完美!!:)就为了这项运动,我想从其他人那里了解更多的解决方案,尽管我现在很满意:)@Himu这很简单。。。它将的滚动位置设置在您传入的元素的左上角…我添加了插件,但它仍然显示$(“窗口”)。scrollTo不是一个函数,很抱歉它是$(窗口)。scrollTo(#id”)或您也可以使用$.scrollTo(#id)),这应该是正确的答案,问题中的示例没有使用jQuery@ReshapeMedia我同意这是最简单的答案-但请阅读问题->无论如何,你能告诉我如何使用jquery实现它吗?scrollIntoView并不是一个适合我的函数。根据文档,它仅在Firefox中受支持scrollIntoView
具有广泛的支持(这是仅在Firefox中支持的选项参数)这个解决方案对我来说很有吸引力,但我已经:a)将动画延迟从1000减少到400;b) 在URL地址栏中保持哈希不变,并且c)将#YourIDtoScrollTo
更改为'+hash+'
,以便滚动到我的网站提供的任何动态哈希,用户导航到…听起来不错。我建议为任何需要的人实施您的更改。延迟除外,延迟是每个开发人员所需的可选延迟。;)为什么有$(document).ready(function()
和$(window).load(function())
?@ChuckLeButt如前所述,这是从另一个线程中删除的。我猜这是为了对付浏览器中的一些奇怪的错误。如果您想了解更多,这里有一个线程,欢迎链接到解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及它为什么存在,不是如果目标页面不可用,请引用链接到的页面最相关的部分。
http://stackoverflow.com/questions/9757625/jquery-how-to-scroll-to-certain-anchor-div-on-page-load
http://stackoverflow.com/questions/9757625/jquery-how-to-scroll-to-certain-anchor-div-on-page-load#copyright
if(location.pathname == '/registration')
{
$('html, body').animate({ scrollTop: $('#registration').offset().top - 40}, 1000);
}