设置内联 SVG 样式时是否需要 CDATA?

问题描述 投票:0回答:1

我读过有关此问题的各种内容,所以我希望能对其进行明确的排序。

如果我有内嵌在 HTML 文档中的 SVG 标记,并且我使用 CSS 对其进行样式设置,我是否需要将该 CSS 包装在注释掉的 CDATA 中?

示例:

<!DOCTYPE html>
<html>
<head>
     <meta charset="UTF-8">
</head>
<body>
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
        <style type="text/css">
            /* <![CDATA[ */
            .some_styles {}
            /* ]]> */
        </style>
        <!-- SVG content here -->
    </svg>
</body>
</html>

我想可能存在像 CSS 子组合器 被误解为 XML 右括号这样的问题,并且我读过人们建议使用注释掉的 CDATA 围绕内联 SVG 样式 1 2 的各种帖子。然而,令我惊讶的是,我发现即使删除了 CDATA 并使用了子组合器,我的 HTML 仍然有效。除此之外,我无法在任何现代浏览器中检测到 SVG 渲染的任何问题。

这里在 SE 上讨论过将 CDATA 包含在

<script>
标签中,但这与
<svg>
不同,所以这似乎有必要提出自己的问题。

我不介意包含它,而且这样做不会造成任何麻烦。我只是想知道我做的是正确的事还是不必要的事。

css xml html dom svg
1个回答
5
投票

理论上,您想要写入未转义文本的任何地方都需要 CDATA 块。在 XML 中,只有 2 个字符需要转义:

<
&
,并且这两个字符在 CSS 中没有意义。

这意味着 CSS 不需要 CDATA 块。

(此外,您不需要 HTML 中的 CDATA,因为 HTML 不是 XML)。

编辑

正如评论中所指出的,现在 CSS 终于支持嵌套了,与号 (&) 已成为 嵌套选择器。在 XML 文件(包括 SVG)中编写 CSS 时请考虑到这一点。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.