javascript - scrollIntoView block 与内联

标签 javascript js-scrollintoview

我注意到scrollIntoView自上次查看以来有一些新选项。

即, block 内联。这两者有什么区别?我猜测 {block: "start"} 会将元素的顶部与页面的顶部对齐,但我不确定这会有什么不同来自inline,或者您如何同时使用这两个选项?

最佳答案

block 选项决定元素在其可滚动祖先的可见区域内垂直对齐的位置:

  • 使用{block: "start"},元素在其祖先的顶部对齐。
  • 使用{block: "center"},元素在其祖先的中间对齐。
  • 使用{block: "end"},元素在其祖先的底部对齐。
  • 使用{block: "nearest"},元素:
    • 如果您当前位于其祖先的下方,则与它的祖先的顶部对齐。
    • 如果您当前位于其祖先的上方,则与它的祖先的底部对齐。
    • 如果已经在 View 中,则保持原状。

inline 选项决定元素在其可滚动祖先的可见区域内水平对齐的位置:

  • 使用{inline: "start"},元素在其祖先的左侧对齐。
  • 使用{inline: "center"},元素在其祖先的中心对齐。
  • 使用{inline: "end"},元素在其祖先的右侧对齐。
  • 使用{inline: "nearest"},元素:
    • 如果您当前位于其祖先的右侧,则在其祖先的左侧对齐。
    • 如果您当前位于其祖先的左侧,则在其祖先的右侧对齐。
    • 如果已经在 View 中,则保持原状。

blockinline 可以同时使用,一次滚动到指定点。

查看以下代码片段,了解每个代码片段的实际工作原理。

片段:

/* ----- JavaScript ----- */
var buttons = document.querySelectorAll(".btn");

[].forEach.call(buttons, function (button) {
  button.onclick = function () {
    var where = this.dataset.where.split("-");
    document.querySelector("div#a1").scrollIntoView({
      behavior: "smooth",
      block: where[0],
      inline: where[1]
    });
  };
});
/* ----- CSS ----- */
body {
  padding: 500px;
  width: 2000px;
}

header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100;
}

div#a1 {
  width: 1000px;
  height: 300px;
  background: url(//www.w3schools.com/css/trolltunga.jpg);
  background-repeat: no-repeat;
}
<!----- HTML ----->
<header>
  <button class="btn" data-where="start-start">T-L</button>
  <button class="btn" data-where="start-center">T-C</button>
  <button class="btn" data-where="start-end">T-R</button>
  <button class="btn" data-where="center-start">C-L</button>
  <button class="btn" data-where="center-center">C-C</button>
  <button class="btn" data-where="center-end">C-R</button>
  <button class="btn" data-where="end-start">B-L</button>
  <button class="btn" data-where="end-center">B-C</button>
  <button class="btn" data-where="end-end">B-R</button>
</header>

<div id = "a1"></div>

关于javascript - scrollIntoView block 与内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48634459/

相关文章:

javascript - django 的 CSS/JavaScript 管理器

javascript - 在 Summernote 中更改字体大小非常有问题

javascript - 滚动到 View /滚动到顶部

javascript - 一次加载两个 HTML 文档(从字符串加载 iframe 内容)

javascript - 使用 onchange 调用多个函数

Javascript scrollIntoView() 中间对齐?

javascript - 在 React 中使用 document.querySelector?我应该使用 refs 代替吗?如何?

javascript - 在 Javascript 中将参数传递给函数

javascript - 如果网络驱动程序的 headless 等于 True,如何执行 "scrollIntoView()"函数?

javascript - jQuery 自动完成与多个输入上的 getJSON 搜索