2017-09-19 82 views

回答

2

可以使用mouseMove事件检测鼠标位置。这是使用The Elm Architecture如何实现它的一个例子。

的视图:

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

相关问题