我有以下标记
<!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
部分。然后,您可以点击navigation
返回Back to top
。
这适用于所有浏览器。
我想要做的是以某种方式添加一个javascript监听器,这样如果在浏览器上启用了Javascript,它就会监听书签并平滑滚动到书签。
大声思考,我可以在位置栏中添加onchange
监听器,解析位置并在#
之后检查任何内容。我可以在这个字符后得到文本的元素id
,并实现平滑的滚动算法?我不认为这会否定UA滚动。
我还可以解析包含#
个链接的链接的DOM,并添加javascript onclick smoothScoll(bookmark_name)
个事件并删除书签,以便链接只有'#'
然后在{{1滚动并将其添加到#。
我想学习使用javascript而不是jQuery。
任何人都有这样的想法。我希望保留HTML原样并在我的smoothScroll
中添加javascript事件,这意味着我知道 javascript已启用。
由于
马特
答案 0 :(得分:1)
您可以在a#href
元素上添加点击监听器,并确保点击返回 false ,这样您就会取消UA滚动。之后,您必须手动滚动或动画滚动属性以匹配链接的offsetTop。
这是一个使用jQuery来帮助你的js小提琴:http://jsfiddle.net/ZtbVQ/1/。您只需将jQuery调用转换为纯js调用。
答案 1 :(得分:0)
答案 2 :(得分:0)
http://demos.flesler.com/jquery/scrollTo/
使用此插件,您将很容易 滚动溢出的元素,和 屏幕本身。它让您访问 许多不同的选项来定制 以及指定去哪里的各种方法 滚动。