繁体   English   中英

平滑滚动到HTML书签

[英]Smooth scrolling to HTML bookmark

我有以下标记

<!DOCTYPE html>
<html>
    <head>
        <title>Blah</title>
    </head>
    <body>
        <header id='navigation'>
            <nav>
                <a rel='bookmark' href='#introduction'>Home</a>
            </nav>
        </header>
        <section id='content'>
            <section id='introduction'>
                <header>
                    <h1>Welcome</h1>
                    <a href='#navigation'>Back to top></a>
                </header>
            </section>
        </section>
    </body>
</html>

因此,您可以单击“ Home并使用书签转到“ introduction部分。 然后,您可以通过单击Back to top navigation

这将适用于所有浏览器。

我想要做的是以某种方式添加一个JavaScript侦听器,以便如果在浏览器中启用了Javascript,它将侦听书签并平滑滚动到书签。

想一想,我可以在位置栏上添加一个onchange侦听器,解析位置并检查#之后的内容。 我可以在此字符之后获取文本的元素id并实现平滑的滚动算法? 我认为这不会否定UA滚动。

我还可以解析包含#链接的链接的DOM,并添加javascript onclick smoothScoll(bookmark_name)事件并删除书签,这样链接将只是'#'然后在smoothScroll进行滚动并将其添加到位置栏之后#

我想学习使用javascript而不是jQuery来做到这一点。

任何人都有这样做的想法。 我想保留HTML,并在initPage()添加javascript事件,这意味着我知道 javascript已启用。

谢谢

马特

您可以在a#href元素上添加一个点击侦听器,并确保该点击返回false ,这将使UA滚动无效。 之后,您将必须手动滚动或设置scrolling属性的动画以匹配链接的offsetTop。

这是一个使用jQuery的js提琴手: http//jsfiddle.net/ZtbVQ/1/ 您只需要将jQuery调用转换为纯js调用即可。

看看Jquery滚动:

http://demos.flesler.com/jquery/scrollTo/

这应该让您做自己想做的。 这是一个很好的用法概述:

http://flesler.blogspot.com/2007/10/jqueryscrollto.html

http://demos.flesler.com/jquery/scrollTo/

使用此插件,您可以轻松滚动溢出的元素以及屏幕本身。 它使您可以访问许多不同的选项以进行自定义,并可以使用多种方法指定滚动位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM