- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用javascript,我们可以使用-
document.getElementById('pluginsource_wrapper').scrollIntoView();
scrollIntoView()
方法的概念,但只想了解其代码并了解其实现方式。
scrollIntoView()
实现的代码?
最佳答案
scrollIntoView()scrollIntoView()
方法滚动元素的父容器,以使用户可以看到在其上调用scrollIntoView()
的元素。
scrollIntoView()的实现
CSSOM View Module规范包含scrollIntoView()
执行的步骤序列,如下所示:
让行为为“自动”。
让块为“开始”。
让内联成为“最近”。
如果arg是ScrollIntoViewOptions词典,则:
将行为设置为选项的behavior词典成员。
将块设置为选项的block词典成员。
将内联设置为选项的inline词典成员。
否则,如果arg为false,则将block设置为“ end”。
如果该元素没有任何关联的layout box,则返回。
Scroll the element into view具有行为,阻止和内联。
(可选)执行其他一些操作,以引起用户的注意。
滚动到视图中的步骤
对于scroll an element into view element,具有滚动行为行为,块流动方向位置块和内联基本方向位置内联,意味着对建立滚动框滚动框的每个祖先元素或视口运行这些步骤,从最里面到最下面的顺序为:最外面的滚动框:
如果与元素关联的文档与与元素关联的文档或与框关联的视口的来源不同,请终止这些步骤。
将元素边界框设为元素上调用getBoundingClientRect()的返回值表示的框。
假设滚动框边缘A为滚动框的块流动方向上的开始边缘,而元素边缘A为元素边界框的边界在与滚动框边缘A相同的物理侧上。
假设滚动框边缘B是滚动框的块流动方向上的结束边缘,而元素边缘B是元素边界框在与滚动框边缘B相同的物理边界上的边界。
假设滚动框边缘C为滚动框的内联基本方向上的开始边缘,而元素边缘C为元素边界框在与滚动框边缘C相同的物理边界上的边界。
假设滚动框边缘D为滚动框的内联基本方向上的结束边缘,而元素边缘D为元素边界框的边界与滚动框边缘D在同一物理侧。
令元素高度为元素边缘A与元素边缘B之间的距离。
令滚动框高度为滚动框边缘A与滚动框边缘B之间的距离。
令元素宽度为元素边缘C和元素边缘D之间的距离。
令滚动框宽度为滚动框边缘C和滚动框边缘D之间的距离。
通过执行以下步骤,将position设为滚动位置滚动框:
如果块是“开始”,则将元素边A与滚动框边A对齐。
否则,如果块为“ end”,则将元素边B与滚动框边B对齐。
否则,如果块为“中心”,则将元素边界边框的中心与滚动框的块流动方向上的滚动框的中心对齐。
否则,块为“最近”:
If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B
Do nothing.
If element edge A is outside scrolling box edge A and element height is less than scrolling box height
If element edge B is outside scrolling box edge B and element height is greater than scrolling box height
Align element edge A with scrolling box edge A.
If element edge A is outside scrolling box edge A and element height is greater than scrolling box height
If element edge B is outside scrolling box edge B and element height is less than scrolling box height
Align element edge B with scrolling box edge B.
If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D
Do nothing.
If element edge C is outside scrolling box edge C and element width is less than scrolling box width
If element edge D is outside scrolling box edge D and element width is greater than scrolling box width
Align element edge C with scrolling box edge C.
If element edge C is outside scrolling box edge C and element width is greater than scrolling box width
If element edge D is outside scrolling box edge D and element width is less than scrolling box width
Align element edge D with scrolling box edge D.
Let associated element be the element.
Let document be the viewport’s associated Document. Let associated element be document’s root element, if there is one, or null otherwise.
关于javascript - scrollIntoView()方法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354364/
我正在制作一个网站,并制作了将元素滚动到视图中的JavaScript代码,我按下按钮的次数越多,滚动到视图中的元素的ID应该越高。它在Edge和Firefox上运行正常,但在Chrome上,它只在第一
我正在制作一个网站,并制作了将元素滚动到视图中的JavaScript代码,我按下按钮的次数越多,滚动到视图中的元素的ID应该越高。它在Edge和Firefox上运行正常,但在Chrome上,它只在第一
这个方法看起来是为了测试,但实际上我需要在使用更多小部件重建 UI 后将一个小部件滚动到屏幕上。 这存在于 GWT 世界中。 有什么方法可以在 Flutter 中实现这一点? 最佳答案 您可以使用 s
我有一个输入字段,它位于 (blur) 上或 (change)触发一个函数,该函数应该将页面滚动到下一个元素 block 。由于我忽略的原因,它不起作用,尽管在 (click) 上使用时它工作正常与按
我有一个嵌套的子容器,当我尝试 scrollIntoView 时,它破坏了父容器。我不明白为什么它会这样。请帮我解决这个问题。 请查看下面或 jsfiddle 上的代码 function moveTo
我想建立一个索引字母。当我单击字母(例如 A、B、C)时。它应该滚动到所属的标题。我在这里使用了 scrollIntoView 。除了“block:start”,一切都很好。当我想滚动到开始的标题时,
我有两个列表框的 View : 列表框 1 元素:A、B、C。 列表框 2 元素:...、A、...、B、...、C、...(长列表)。 当用户在列表框 1 中选择一个元素时,我想在列表框 2 中也将
我使用的是 Javascript(没有 jQuery),并且我有一个弹出的子菜单元素,它有时会超出查看器的底部,所以我使用scrollIntoView让子菜单立即移动以包含所有内容行项目完全在视口(v
我的网站有以下代码: function clickMe() { var element = document.getElementById('about'); element.scrollIn
使用javascript,我们可以使用- document.getElementById('pluginsource_wrapper').scrollIntoView(); 我可以理解scrollIn
当屏幕到达引用点(在方法滚动内部)时,如何停止滚动到 View ?(当屏幕到达其引用点时,我向上滚动一点,代码自动返回到引用点) interface Props { section: numb
如何制作 scrollIntoView只滚动直接父级(例如 div 和 overflow-y: scroll; )而不是整个页面? 我有一个网络界面,我正在为一个内部的、非常具体的目的而制作。我页面上
var mediaIdForFocus = 'mediaIdForFocus; ?>'; if(mediaIdForFocus) $('#flagimg'+mediaIdForFocus).get(0
我有一个非常基本的 scrollIntoView 函数,每当我单击导航栏中的链接时它就会运行。我遇到的问题是,当页面加载时,它会快速捕捉到滚动位置,然后又回到顶部。我怎样才能让它不会在页面的开头对齐?
我遇到一个问题,即在移动设备上使用 select2 jQuery 插件会出现问题,即,当下拉菜单被激活并且它在页面的底部时,虚拟键盘会覆盖选择选项。 为了解决这个问题,我想在页面打开之前将 selec
scrollIntoView() 函数有问题。我有一棵树和两个按钮: 首先将树滚动到底部节点 第二个将树滚动到顶部节点 我不知道我应该怎么做,这个滚动操作总是将节点滚动到树的顶部。我的意思是这个 fi
我正在使用 vanilla JS 让按钮平滑地向下滚动到 div 元素(目标 id) 我的代码是这样的: this.myButton.addEventListener("click",load_sec
我在事件目标上使用 scrollIntoView() 以确保它在其具有 overflow: scroll 的父项中可见,这主要是出于可访问性原因。 我的问题是我还有与该元素关联的点击事件,当点击事件也
有什么办法可以预防 scrollIntoView() 影响我尝试过的滚动监听器 evt.data.stopPropagation(); 和 elementos.scrollIntoView().
当我们使用 scrollIntoView(true) 时,整个页面布局向上移动。根据我的要求,我需要使用 true 参数。我需要避免这个举动。我在 https://jsfiddle.net/7v4t3
我是一名优秀的程序员,十分优秀!