HTML scrollIntoView有两个选项:scrollIntoView(alignToTop)
和scrollIntoView(scrollIntoViewOptions)
,其中scrollIntoViewOptions是带有behavior
(“自动”或“平滑”),block
的对象(“开始”,“中心”,“结束”或“最近”)和inline
(“开始”,“中心”,“结束”或“最近”)。
但是,ScalaJs仅导入第一个选项。为此有理由吗?
我想在scalajs中使用以下Javacript代码:
element.scrollIntoView({behavior: "smooth", block: "center"})
我已经尝试过此scalajs代码,但是它不起作用。它根本不会滚动。有想法吗?
@js.native
trait ElementExtended extends Element {
def scrollIntoView(o: scala.Dynamic): Unit = js.native
}
element.asInstanceOf[ElementExtended].scrollIntoView(js.Dynamic.literal(behavior = "smooth", block = "center"))
答案 0 :(得分:0)
我自己遇到了这个问题,并通过以下方法解决了该问题:
@js.native
trait ElementExtras extends js.Object {
def scrollIntoView(options: ScrollIntoViewOptions): Unit
}
trait ScrollIntoViewOptions extends js.Object {
var behavior: js.UndefOr[String] = js.undefined
var block: js.UndefOr[String] = js.undefined
var inline: js.UndefOr[String] = js.undefined
}
然后我添加了一个隐式转换以对其进行强制转换:
implicit def element2Extras(element: html.Element): ElementExtras = element.asInstanceOf[ElementExtras]
然后,我要执行以下操作:
element.scrollIntoView(new ScrollIntoViewOptions {
behavior = "smooth"
block = "end"
})