javascript - scrollIntoView 不包含边框

标签 javascript

我使用的是 Javascript(没有 jQuery),并且我有一个弹出的子菜单元素,它有时会超出查看器的底部,所以我使用scrollIntoView让子菜单立即移动以包含所有内容行项目完全在视口(viewport)内(即子菜单的底部与视口(viewport)的底部对齐。

document.getElementById('sub1').scrollIntoView(false);

但是,我随后向该子菜单元素添加了一个 2px 边框,尽 pipe 菜单的行项目完全显示在查看器中,但边框却没有;它仍然远离视口(viewport)的底部。 有没有办法在scrollIntoView中包含边框而不向页面添加其他元素?

提前致谢。

最佳答案

嗯..根据 CSS 盒模型 ( official W3 spec ),边框实际上位于元素本身的区域之外(就像边距,与填充不同)

所以..我想你所要做的就是获取元素的top-border的值(动态)并调整页面滚动的计算(已经回答here )并发现了一点调整here

var element = document.getElementById('sub1');
element.scrollIntoView(false);
document.documentElement.scrollTop -= element.style.borderTopWidth.slice(0, -2);

关于javascript - scrollIntoView 不包含边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53763137/

相关文章:

javascript - 如何在 JQuery 中到达容器 scrollTop 时淡入元素?

javascript - 与多个变量连接的字符串未在 setTimeout() 中执行

javascript - 发送到 PHP 时接收 Javascript 变量时出现问题

javascript - 如何使用 Trello 的 API 打开新看板

javascript - 通过 JavaScript 到新页面的超链接不起作用

javascript - 在iframe嵌入上,点击显示div或计数器开始

javascript - 如果下拉选择值为 1,JQuery 添加必需的属性

javascript - JS+CSS 如何从右上到左下显示数组中的图片

javascript附加到文本文件忽略元素

javascript - 检测异步加载的按钮