Mateus, Ich beginne gerade mit Elm, also nimm das für das, was es wert ist.
Wenn Sie ein Ereignis empfangen, können Sie das Ereignisziel abfragen, um Informationen darüber oder ein relatives Element zu erhalten. Offenbar fehlte ein Ereignis gibt es (derzeit) nicht eine Möglichkeit, „zu erreichen in“ der DOM bei Werten herausziehen nolens volens (siehe * 1 unten)
Ressourcen:
* 1: https://medium.com/@debois/elm-the-dom-8c9883190d20
* 2: https://robots.thoughtbot.com/building-custom-dom-event-handlers-in-elm
Zurück zu Ihrer Frage, stellt sich heraus, was als Stil-set [(key1, val1) ... (keyn, valn)] wird in {key1 gedreht: val1, ... keyn: valn }. (Ich finde dies durch Debugging Ulms transpiled Code ... dann Dokumentation siehe woanders darüber; gehen Sie Abbildung.)
Siehe unten, um Zeilenhöhe speziell zu erhalten. Ich denke, es könnte nützlicher sein, eine Liste aller Stile zu bekommen. Überarbeitete Probe folgt:
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (on)
import Json.Decode
main =
beginnerProgram { model = "", view = view, update = update }
type Msg = Attr StyleStruct
type alias StyleStruct =
{lineHeight: String}
view model =
div []
[ button [ id "btn"
, class "cls"
, style [("color", "green"), ("line-height", "3em")]
, myOnClick Attr ]
[ text "Show line-height" ]
, div [] [ text ("(" ++ model ++ ")")]
]
update msg model =
case msg of
Attr v1 ->
toString v1
targetStyle =
Json.Decode.map StyleStruct
(Json.Decode.at ["target", "style"] styleStructDecoder)
styleStructDecoder =
Json.Decode.at ["line-height"] Json.Decode.string
myOnClick : (StyleStruct -> msg) -> Html.Attribute msg
myOnClick tagger =
on "click" (Json.Decode.map tagger targetStyle)
Könnten Sie in ein bisschen mehr Detail erklären, was Sie zu erreichen versuchen? Wozu brauchst du die Linienhöhe? –
Ich versuche tatsächlich, eine flüssige Textarea zu implementieren (mit zunehmender Höhe der Zeilenzahl). Normalerweise machen wir dies, indem wir die Zeilenhöhe berechnen, da css dies standardmäßig nicht hat. https://github.com/ohanhi/autoexpand ist ein Beispiel, aber es hat hier nicht funktioniert, und ich mochte nicht, wie es funktioniert. Außerdem habe ich den Code nicht verstanden. –
Zur Erinnerung, ich finde es komisch, dass CSS keine "line size" Maßeinheit hat. Es würde das Leben so viel einfacher machen, wenn wir 'div {height: 3lines}' schreiben könnten. Stattdessen erfinden sie immer mehr Maßeinheiten, die dem, was wir bereits haben, nichts Neues hinzufügen. –