如何用标签完美展示代码?从基础到进阶的5个步骤

在技术教程或文档中,展示代码片段是常见需求。但直接粘贴代码往往会导致格式混乱、文字溢出,甚至破坏页面布局。标签能保留空格和换行,但默认样式可能让长代码超出容器边界。本文将通过步骤式教学,教你如何结合HTML、CSS和工具实现代码块的美化与适配。 第一步:理解标签的基础用法 标签是HTML中专门用于预格式化文本的元素。浏览器会保留其中的空格、制表符和换行符,适合展示代码、诗歌等结构化内容。基础写法

在技术教程或文档中,展示代码片段是常见需求。但直接粘贴代码往往会导致格式混乱、文字溢出,甚至破坏页面布局。

标签能保留空格和换行,但默认样式可能让长代码超出容器边界。本文将通过步骤式教学,教你如何结合HTML、CSS和工具实现代码块的美化与适配。

第一步:理解
标签的基础用法

标签是HTML中专门用于预格式化文本的元素。浏览器会保留其中的空格、制表符和换行符,适合展示代码、诗歌等结构化内容。基础写法如下:

<pre>
    function hello() {
        console.log("Hello, world!");
    }
</pre>

但默认情况下,

标签不会自动换行。如果代码行过长,会出现横向滚动条或溢出现象。

第二步:用CSS解决文字溢出问题

要防止

内的长代码溢出容器,需设置CSS属性white-space: pre-wrap(允许换行)或overflow-x: auto(生成滚动条)。推荐使用pre-wrap,它能保持缩进而自动换行:

<pre style="white-space: pre-wrap; word-wrap: break-word;">
... 你的代码 ...
</pre>

如果使用全局样式,可在CSS中定义:

pre {
    white-space: pre-wrap;  /* 保留空格并换行 */
    word-wrap: break-word;  /* 强制断词 */
    background: #f4f4f4;
    padding: 15px;
    border: 1px solid #ddd;
    border-radius: 5px;
}
第三步:添加代码高亮与行号

专业代码展示需要高亮语法。推荐方法有两种:

1. 手动高亮:使用<span>标签包裹关键字,适合少量代码:

<pre><code>
<span style="color: #007acc;">function</span> hello() {
    <span style="color: #d14;">console.log</span>("Hello!");
}
</code></pre>

2. 使用JavaScript库:如Prism.js或Highlight.js。以Highlight.js为例,在HTML中引入后,只需在<pre>内添加<code>并指定语言类:

<pre><code class="language-javascript">
function hello() {
    console.log("Hello!");
}
</code></pre>

然后用CSS让<pre>包裹<code>,并设置背景色、圆角等。

第四步:响应式布局与移动端适配

在移动设备上,代码块可能超出屏幕宽度。推荐以下组合CSS:

pre {
    max-width: 100%;          /* 限制宽度 */
    overflow-x: auto;         /* 小屏时出现滚动条 */
    white-space: pre-wrap;    /* 长行自动换行 */
    font-size: 14px;          /* 可调整字体大小 */
}

对于极长代码(如配置文件),还可添加pre[data-lang]:after伪元素显示语言标签,或使用折叠按钮。例如:

<pre>
<button class="copy-btn" onclick="copyCode(this)">复制</button>
<code>... 代码 ...</code>
</pre>
第五步:实战案例——创建一个完整的代码展示模块

现在整合以上步骤,用一段Python示例展示最终效果:

<!DOCTYPE html>
<html>
<head>
    <style>
        .code-block {
            position: relative;
            background: #1e1e1e;
            color: #dcdcdc;
            padding: 20px 15px;
            border-radius: 8px;
            overflow: hidden;
        }
        .code-block pre {
            margin: 0;
            white-space: pre-wrap;
            word-break: break-word;
            font-family: 'Consolas', 'Courier New', monospace;
            font-size: 14px;
            line-height: 1.5;
        }
        .code-block .copy-btn {
            position: absolute;
            top: 10px;
            right: 10px;
            background: #555;
            color: #fff;
            border: none;
            padding: 5px 10px;
            border-radius: 4px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="code-block">
        <button class="copy-btn" onclick="navigator.clipboard.writeText(document.getElementById('code1').innerText)">📋 复制</button>
        <pre><code id="code1">def factorial(n):
    """计算阶乘"""
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))  # 输出 120</code></pre>
    </div>
</body>
</html>

通过以上自定义样式,代码块具有暗色背景、行内换行、复制按钮和完美适配性。

总结与小贴士

掌握

标签的进阶用法后,你还可以结合<details>标签实现折叠代码,或使用CSS的tab-size属性控制缩进宽度。记住以下要点:

white-space: pre-wrap是实现代码换行的关键。

• 使用语义化的<code>作为<pre>的子元素。

• 复制功能可通过JavaScript的clipboard API实现。

• 测试不同屏幕尺寸下的显示效果,避免因缩放导致错位。

现在,你可以高效地在技术文章中嵌入美观的代码块,提升读者体验。

免责声明:本文内容来源于公开资料、用户提交或站内整理,仅供学习与参考,不构成任何投资、医疗、法律或专业建议。请结合实际情况自行判断,相关风险由使用者自行承担。