javascript - 如何转到页面上的特定元素?

在我的 HTML 页面上,我希望能够“转到”/“滚动到”/“关注”页面上的某个元素。

通常,我会使用带有 href="#something" 的 anchor 标记,但我已经将 hashchange 事件与 BBQ plugin 一起使用。加载此页面。

那么有没有其他方法可以通过 JavaScript 让页面转到页面上的给定元素?

这是我正在尝试做的基本大纲:

function focusOnElement(element_id) {
     $('#div_' + element_id).goTo(); // need to 'go to' this element
}

<div id="div_element1">
   yadda yadda 
</div>
<div id="div_element2">
   blah blah
</div>

<span onclick="focusOnElement('element1');">Click here to go to element 1</span>
<span onclick="focusOnElement('element2');">Click here to go to element 2</span>

最佳答案

如果该元素当前在页面上不可见,可以使用原生 scrollIntoView()方法。

$('#div_' + element_id)[0].scrollIntoView( true );

其中true表示对齐页面顶部,false表示对齐底部。

否则,有 a scrollTo() plugin对于 jQuery,您可以使用。

或者也许只是得到 top position()(docs)元素,并设置 scrollTop()(docs)到那个位置:

var top = $('#div_' + element_id).position().top;
$(window).scrollTop( top );

https://stackoverflow.com/questions/4801655/

相关文章:

html - Flexbox vs Twitter Bootstrap(或类似框架)

css - Margin-Top 不适用于 span 元素?

javascript - 如何替换 div 元素中的文本?

JavaScript 表单提交 - 确认或取消提交对话框

html - 移动 View 顶部的引导右列

html - 为什么我的 CSS3 媒体查询在移动设备上不起作用?

javascript - 添加两个数字将它们连接起来,而不是计算总和

html - 相对定位元素而不占用文档流中的空间

html - 固定表格单元格宽度

html - CSS:元素符号和

  • 之间的控制空间