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

在Elm中,如何检测相对于html元素的鼠标位置?,elm,mousemove,onmousemove,Elm,Mousemove,Onmousemove,我想知道鼠标相对于html元素的位置。我还知道元素的大小。可以通过mouseMove事件检测鼠标位置。这是一个如何使用Elm体系结构实现它的示例 观点: view : Model -> Html Msg view model = div [] [ img [ on "mousemove" (Decode.map MouseMove decoder) , src "http://..." ]

我想知道鼠标相对于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 )
这是一个做类似事情的库: