elm - 在 Elm 中,如何检测相对于 html 元素的鼠标位置?

标签 elm mousemove onmousemove

我想知道鼠标相对于 html 元素的位置。我也会知道元素的大小。

最佳答案

可以通过 mouseMove 事件检测鼠标位置。这是一个如何使用 Elm 架构实现它的示例。

观点:

view : Model -> Html Msg
view model =
    div []
        [ img
            [ on "mousemove" (Decode.map MouseMove decoder)
            , src "http://..."
            ]
            []
        ]

解码器:

decoder : Decoder MouseMoveData
decoder =
    map4 MouseMoveData
        (at [ "offsetX" ] int)
        (at [ "offsetY" ] int)
        (at [ "target", "offsetHeight" ] float)
        (at [ "target", "offsetWidth" ] float)

类型别名

type alias MouseMoveData =
    { offsetX : Int
    , offsetY : Int
    , offsetHeight : Float
    , offsetWidth : Float
    }

还有消息

type Msg
    = MouseMove MouseMoveData

这就是数据到达更新的方式:

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        MouseMove data ->
            -- Here you can use your "data", updating
            -- the model with it, for example
            ( { model | zoomMouseMove = Just data }, Cmd.none )

这是一个做类似事情的库:http://package.elm-lang.org/packages/mbr/elm-mouse-events/1.0.4/MouseEvents

关于elm - 在 Elm 中,如何检测相对于 html 元素的鼠标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305894/

相关文章:

javascript - mousemove 和跨浏览器 e.which

image - 如何检测鼠标何时不再位于控件中?

delphi - TeeChart:在当前鼠标位置显示系列值的快速方法

c# - 用鼠标移动 PictureBox

elm - 在 Elm 中解析 XML

testing - 将外部数据加载到 Elm 测试套件中

elm - 在 Elm 中实现我自己的 toString 的正确方法是什么

elm - 在 elm 中赋值

java - 我应该如何将两个项目与 MouseMovementListeners 链接起来?

python - PyGame:每次移动鼠标时计时器都会重置