【问题标题】:scalajs scrollIntoView with scrollIntoViewOptions带有scrollIntoViewOptions的scalajs scrollIntoView
【发布时间】:2019-10-22 03:36:11
【问题描述】:

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

【问题讨论】:

    标签: scala.js


    【解决方案1】:

    我自己也遇到了这个问题,用以下方法解决了:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 2017-02-04
      • 2018-12-05
      • 2017-02-14
      • 2020-02-20
      • 2012-11-16
      • 1970-01-01
      相关资源
      最近更新 更多