Men*_*ist 9 html css xml svg dom
我读过有关此问题的各种内容,所以我希望能得到明确的解决。
如果我有内嵌在 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>
Run Code Online (Sandbox Code Playgroud)
我想可能存在诸如CSS 子组合器被误解为 XML 右括号之类的问题,并且我读过人们建议使用注释掉的 CDATA 围绕内联 SVG 样式1 2的各种帖子。然而,令我惊讶的是,我发现即使删除了 CDATA 并使用了子组合器,我的 HTML 仍然有效。除此之外,我无法在任何现代浏览器中检测到 SVG 渲染的任何问题。
这是SE 上讨论的关于在<script>
标签中包含 CDATA 的内容,但这与 不同<svg>
,因此这似乎有必要提出自己的问题。
我不介意包含它,而且这样做不会造成任何麻烦。我只是想知道我做的是正确的事还是不必要的事。
理论上,任何想要写入非转义文本的地方都需要 CDATA 块。在 XML 中,只有 2 个字符需要转义:<
and&
和 ,这两个字符在 CSS 中都是没有意义的。
这意味着 CSS 不需要 CDATA 块。
(此外,您不需要 HTML 中的 CDATA,因为 HTML 不是 XML)。