javascript - 使用 CSS 滚动行为时如何从 URL 中删除#id
问题描述
在我的网站上,我有一个 Scroll to Top 部分。但由于大多数网站通过 实现这一点jQuery
scrollTop
,我使用了最新的 CSS scroll-behavior: smooth;
。现在它的工作方式是我给我的body
标签一个id
blog
.
例如<body id="blog">
和滚动到顶部按钮,如:
<a id="move-to-top" href="#blog">Scroll</a>
现在这工作得很好,我的网站上滚动流畅。但是,当任何人单击“滚动到顶部”按钮时,URL 都会受到#blog
我不喜欢的处理。
#blog
我想知道当任何人点击按钮时,是否有任何方法可以取出URL。
如果我执行以下操作:
document.getElementById("move-to-top").addEventListener( "click", (e) => {
e.preventDefault()
} )
滚动到顶部停止工作,因为我正在阻止默认设置。我不知道我还能怎么做。任何指导都会有所帮助。
解决方案
您可以使用 JQuery 动画功能
$('html,body').animate({scrollTop: $("#blog").offset().top},'slow');
或者你可以使用 JavaScript scrollIntoView
document.getElementById('blog').scrollIntoView(true);
如果您只是想从 URL 中删除#tag,您可以使用历史记录替换状态
document.getElementById("move-to-top").addEventListener( "click", (e) => {
history.replaceState([],"",window.location.href.split('#')[0])
});
推荐阅读
- c# - c#通过引用同一个json文件中的另一个值来获取json对象的值
- javascript - 如何在 Svelte 中设置条形高度向下的动画
- excel - 如何在excel中粘贴带有前导“0”的文本
- javascript - 发布后 iframe 未在网站上显示
- tooltip - Tableau 地图工具提示不显示平均参考线
- tensorflow - 如何创建使用少数客户端权重的 FL 算法?
- node.js - NPM:对等依赖项是否应该被列为对主机包的依赖项?
- angular - 没有 ngIf 的角度动画
- python - 使用 CNN 制作模型时出现运行时错误
- javascript - Angular Admin Guard 问题无法测试“void”类型的表达式的真实性