gpt4 book ai didi

css - 在 Elm 中添加元素时如何使用 CSS 过渡?

转载 作者:行者123 更新时间:2023-11-28 09:16:19 25 4
gpt4 key购买 nike

简单的场景是我有一个按钮,它从 API 获取一些数据并将数据添加到列表中。

我想为新添加的元素应用不透明度属性的 CSS 过渡,以便它在添加到列表时淡入。

通常这是通过使用带有 opacity: 0;transition 规则的默认 CSS 类来完成的。然后在添加该元素后,您使用 opacity: 1; 将另一个 CSS 类应用到它,您将获得淡入淡出的效果。

你如何用 Elm 做到这一点?

这就是现在将列表项添加到 View 的方式,

ul [ class "list"] (List.map (\item -> li [] [ text item ]) model.items)

最佳答案

Amir 所说的是您真正需要补充的唯一内容。 Elm 可以很好地处理它。

如果遇到任何问题,您可以尝试使用 Html.Keyed package ,它应该消除订购/添加/删除的错误 - 你只需使用 Html.Keyed.ul,它期望 child 不是 Html msg 而是 (字符串,Html 消息)。因此,通常您会为行元素提供某种 ID。 (编辑:例如,使用此代码添加到列表前面看起来就像添加到列表后面。更新示例请参见 here。)

因此,使用一些 Elm 代码 ( Ellie link ) 扩展 Amir 的答案:

module Main exposing (..)

import Html as H exposing (Html)
import Html.Events as HE


type alias Model =
{ rows : List String }


type Msg
= AddText


main : Program Never Model Msg
main =
H.beginnerProgram
{ model = model
, update = update
, view = view
}


model : Model
model =
{ rows = [] }


update : Msg -> Model -> Model
update msg model =
case msg of
AddText ->
{ model | rows = model.rows ++ [ "Another row" ] }


view : Model -> Html Msg
view model =
H.div []
[ H.button [ HE.onClick AddText ] [ H.text "add new row" ]
, H.ul [] (List.map viewRow model.rows)
]


viewRow : String -> Html Msg
viewRow row =
H.li [] [ H.text row ]

以及随附的 HTML(请参阅 CSS):

<html>
<head>
<style>
html {
background: #F7F7F7;
color: red;
}
li {
animation: fadein 2s;
}

@keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
</style>
</head>
<body>
<script>
var app = Elm.Main.fullscreen()
</script>
</body>
</html>

关于css - 在 Elm 中添加元素时如何使用 CSS 过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43086679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com