带有scrollIntoViewOptions的scalajs scrollIntoView

时间:2019-07-09 10:42:32

标签: scala.js

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"))

1 个答案:

答案 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"
})