如何在html标签之间获取空格

时间:2019-04-24 09:26:11

标签: html elm

使用Elm的Html模块,输出在html标记之间没有任何空格。但是对于内联显示的标记,空格具有功能,并使浏览器在它们之间显示空白。

div []
    [ strong [] [ text "Key:" ]
    , span [] [ text "value" ]
    , text "(extra)"
    ]

结果:

<div><strong>Key:</strong><span>value</span>(extra)</div>

在浏览器中显示为:键:值(额外)

所需结果

所需的html必须具有某种空白:

<div>
<strong>Key:</strong>
<span>value</span>
(extra)
</div>

在浏览器中显示为:键:值(额外)

2 个答案:

答案 0 :(得分:4)

您可以手动在元素之间放置空格:

div []
    [ strong [] [ text "Key:" ]
    , text " "
    , span [] [ text "value" ]
    , text " "
    , text "(extra)"
    ]

或者,如果您想要更通用的东西,则可以使用List.intersperse轻松编写一个函数,例如:

withSpacing : List (Html msg) -> List (Html msg)
withSpacing =
    List.intersperse (text " ")


main : Html msg
main =
    div []
        (withSpacing
            [ strong [] [ text "Key:" ]
            , span [] [ text "value" ]
            , text "(extra)"
            ]
        )

或更合理地说,是基于合理的假设,即您将其应用到采用一系列子元素来生成单个元素的函数:

withSpacing : (List (Html msg) -> Html msg) -> List (Html msg) -> Html msg
withSpacing element =
    List.intersperse (text " ") >> element


main : Html msg
main =
    withSpacing (div [])
        [ strong [] [ text "Key:" ]
        , span [] [ text "value" ]
        , text "(extra)"
        ]

答案 1 :(得分:4)

您可以为Html标签制作包装,如下所示:

type alias HtmlTag msg =
   List (Html.Attribute msg) -> List (Html msg) -> Html msg


interspaced : HtmlTag msg -> HtmlTag msg
interspaced fn =
   \attr content -> fn attr (content |> List.intersperse (text " "))


main : Html msg
main =
    interspaced div []
        [ strong [] [ text "Key:" ]
        , span [] [ text "value" ]
        , text "(extra)"
        ]