在日常前端开发、编写技术博客或构建在线教程平台的过程中,经常会遇到一个问题:如何在 HTML 页面中显示代码本身而不是被浏览器解析?
比如你想展示 <div>
、<script>
、
等标签或符号,但页面却直接把它当 HTML 执行了。这种时候,就需要用到 HTML 转义字符 或更合理的代码展示方式。
这篇文章将系统讲解:
HTML 转义字符是一种在 HTML、XHTML 或 XML 中使用的字符表示方式,目的是在页面中显示原本具有特殊意义的字符,比如 <
、>
、&
等。
常见的转义形式包括:
<
→ <
>
→ >
&
→ &
"
→ "
'
→ '
<
→ <
<
→ <
(大小写均可)与命名实体相比,数值字符引用在某些解析器和跨平台场景中更加稳妥。
HTML 转义字符在以下几种场景中非常实用:
示例:
<p><div class="box">Hello World</div></p>
页面将展示为:
<div class="box">Hello World</div>
虽然转义字符在很多场景下非常有用,但在以下情况下,应避免滥用:
<style>
标签或外部 CSS 文件中不能使用 HTML 实体;推荐做法:在需要使用实体的场合,优先选择数值字符引用,兼容性更好。
如果你不想手动一个字符一个字符地转义,可以采用以下几种方式来动态展示原始 HTML 代码,避免被解析:
<script type="text/plain">
<pre id="code-block"></pre>
<script type="text/plain" id="raw-code">
<div class="demo">
<p>Hello HTML</p>
</div>
</script>
<script>
const code = document.getElementById("raw-code").textContent;
document.getElementById("code-block").textContent = code;
</script>
适合展示 HTML、CSS、JS 等原始代码,格式清晰、无需手动转义。
<template>
标签<pre id="output"></pre>
<template id="html-code">
<section>
<h2>标题</h2>
<p>内容段落</p>
</section>
</template>
<script>
const code = document.getElementById("html-code").innerHTML;
document.getElementById("output").textContent = code.trim();
</script>
语义化更强,适用于结构化展示场景。
fetch()
读取外部代码文件适合展示大型项目中的片段:
fetch("demo-snippet.html")
.then((res) => res.text())
.then((code) => {
document.getElementById("code-block").textContent = code;
});
这种方式适合多人协作项目或自动化代码文档系统。
字符 | 命名实体 | 十进制代码 |
---|---|---|
< | < | < |
> | > | > |
& | & | & |
" | " | " |
' | ' | ' |
空格 | |   |
提示:你可以使用任何 Unicode 字符的十进制或十六进制编码来转义它。
更多 HTML 转义字符请查看:常用 HTML 转义字符速查表
为了避免手动转义的繁琐过程,这里推荐我个人开发的一个轻量级在线工具:
地址:HTML-Escaper
功能特点:
适合前端工程师、博客作者、技术文档写作者日常使用。
应用场景 | 推荐方式 |
---|---|
显示 HTML 特殊字符 | 使用命名实体或数值字符引用 |
在页面中原样展示代码块 | 使用 <script type="text/plain"> 或 <template> |
多页面共享代码片段 | 使用 fetch() 动态加载外部文件 |
快速转义/反转义 HTML 字符 | 使用 HTML-Escaper 工具 |
通过理解 HTML 转义字符的作用和使用场景,并结合现代浏览器的功能,我们可以更高效、安全地在网页中展示 HTML 原始代码。如果你正在写博客、做教程或前端文档,这些方法都能大大提升你的效率和页面质量。
如果你有更多使用技巧,也欢迎留言交流。