使用 Elm 的Html模块,输出的 html 标签之间没有任何空格。但对于内联显示的标签,空格有一个功能,可以使浏览器在它们之间显示空白。
div []
[ strong [] [ text "Key:" ]
, span [] [ text "value" ]
, text "(extra)"
]
Run Code Online (Sandbox Code Playgroud)
结果是:
<div><strong>Key:</strong><span>value</span>(extra)</div>
Run Code Online (Sandbox Code Playgroud)
在浏览器中显示为:Key:value(extra)
所需的 html 必须有某种空白:
<div>
<strong>Key:</strong>
<span>value</span>
(extra)
</div>
Run Code Online (Sandbox Code Playgroud)
在浏览器中显示为:键:值(额外)
您可以手动在元素之间添加空格:
div []
[ strong [] [ text "Key:" ]
, text " "
, span [] [ text "value" ]
, text " "
, text "(extra)"
]
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要更通用的东西,您可以使用 轻松编写一个函数来执行此操作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)"
]
)
Run Code Online (Sandbox Code Playgroud)
或者更方便的是,基于您将其应用到一个采用子元素列表来生成单个元素的函数的合理假设:
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)"
]
Run Code Online (Sandbox Code Playgroud)