预格式化文本pre标签

预格式化文本pre标签pre 元素可定义预格式化的文本 被包围在 pre 元素中的文本通常会保留空格和换行符 而文本也会呈现为等宽字体 pre 标签的一个常见应用就是用来表示计算机的源代码 演示 pre 此例演示如何使用 pre 标签对空行和空格进行控制 pre 效果如下 此例演示如何使用 pre 标签对空行和空格进行控制所谓的预格式化文本就是 按照我们预先写好的文字格式 pre

pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

< pre > 标签的一个常见应用就是用来表示计算机的源代码。

演示

<pre> 此例演示如何使用pre标签 对空行 和空格 进行控制  
     pre> 

效果如下:

此例演示如何使用pre标签 对空行 和空格 进行控制 

需要注意的是

  • pre元素是块级元素,但是只能包含文本或行内元素。也就是说,任何块级元素(常见为可以导致段落断开的标签)都不能位于pre元素中。
  • pre元素中允许的文本可以包含物理样式和基于内容的样式变化,还有链接、图像和水平分隔线。当把其他标签,比如标签放到
    块中时,就像放在HTML/XHTML文档的其他部分中一样即可。
  • 制表符tab在
    标签定义的块当中可以起到应有的作用,每个制表符占据8个字符的位置,但并不推荐使用tab,因为在不同的浏览器中,tab的表现形式各不相同。在用
    标签格式化的文档段中使用空格,可以确保文本正确的水平位置。
  • 如果希望使用
    标签来定义计算机源代码,比如HTML源代码,请使用符号实体来表示特殊字符。一般将
    标签与标签结合起来使用,以获得更加精确的语义,用于标记页面中需要呈现的源代码。
  • 如果想要把某一段规定好的文本格式放在HTML中,那么就要利用pre元素的特性。
 <pre> <code> function cool(x) { return x 1; }  
     code>  
      pre> 

对我们来说幸运地是,浏览器默认字体已经将 < pre > 设置成等宽字体,因此你可以不做任何处理。当然,你可以设置一个你喜欢的字体。

这  里有篇文章是 Michael Tuck 写于 2009 年的,他研究了“font stacks”。font stack 是说将一组字体罗列在一个 font-family 标签中,首选字体列在前面,备选字体依次列在其后。他的等宽字体 font stack 较好地利用了跨平台系统预装字体。

font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; 

在这里插入图片描述
 我不确定 font stack 在今天有没有过时,不管怎样这是一个好的开端。

另外,你可以用自定义字体。或者使用第三方服务。在我写下这篇文章的时候,Typekit 提供了 23 种等宽字体。

标签提供的独一无二的样式来保留空白同时折行,如同下面这样:

pre { white-space: pre-wrap; } 

如果你不想折行,你就不用像上面那样做,不过你得考虑如果一行太长了怎么办。太长的行可能会撑开固定宽度的容器或者超出容器范围。要避免这个,我建议你加上横向滚动条:

pre { overflow-x: auto; } 

在这里插入图片描述
 你也可能要考虑 max-height 指定最大高度,以及 overflow:auto 允许所有的滚动条,来避免代码块过高。

 保持默认的容器宽度,但是允许它在交互的时候展开:

pre:hover, pre:focus { width: min-content; } 

在这里插入图片描述

如果在 email 中怎么办?

也许因为某些原因,你的 HTML 在 email 中使用。一些标签在 email 中可能会有问题,因为你的 css 在 email 中不生效,因此当特别长的不换行的文本存在时,可能会破坏掉 email 的布局。

在 CSS-Tricks, 我必须要用 RSS feed 自动生成电子报刊,因此我生成 RSS feed 时要一个特殊处理 HTML,保证对所有的 < pre > 标签强制添加一个 inline 样式如下:

<pre style="white-space: pre-wrap;"> 
     pre> 

是我所能做的保证代码块中很长的一行不会破坏掉布局。(一般我们除了加上面的那个外,还加上 word-wrap: break-word 和 word-break: break-all —— 译者注)

你需要代码语法高亮吗?

网上不乏各种语法高亮方案,你可以搜索自己喜欢的方案。我个人推崇 Prism.js,因为:

  1. 它代码量少。
  2. 它无依赖。
  3. 它对标签的 class 起名起的好。
  4. 它允许你 copy 它的代码自己修改和定制。

在这里插入图片描述
除非从 server 端直接生成 的样式(用来语法分色),不然 Prism.js 已经足够好了。

你标注了代码是什么语言了吗?

我个人比较喜欢在代码块上标准出使用的语言。

<pre data-lang="HTML"><code> <h1>Example code 
     h1> <code> 
      pre> 
pre[data-lang]::before { content: attr(data-lang); display: block; } 

我想这也不是一种特别简单的方法,所以可能一些人只是简单在代码里注释一下。也许用 title 属性是更好的选择?

控制空格

如果你使用 tab 来缩进,你可能会觉得缩进太宽了。

默认情况下,tab 被按照 8 个空格来渲染,这很荒唐。

在这里插入图片描述
 在写代码的时候,我们通常让 tab 宽度为 4 个空格。幸运地,你可以用样式控制它:

pre { tab-width: 4; } 

就我个人而言,我喜欢直接用空格缩进。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225069.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:12
下一篇 2026年3月17日 上午10:12


相关推荐

  • HTML常用符号

    HTML转义符号HTML转义符号HTML常用符号:显示一个空格&nbsp;&#160;<小于&lt;&#60;>大于&gt;&a

    2021年12月22日
    50
  • 即梦AI正版

    即梦AI正版

    2026年3月12日
    2
  • 华硕g550jk4700笔记本bios设置u盘启动呢?

    华硕g550jk4700笔记本bios设置u盘启动呢?华硕 g550jk4700 笔记本怎么 bios 设置 u 盘启动呢 华硕 g550jk4700 系统是一款万元内最具划算的游戏本 对于热爱玩游戏的朋友们来说 倾慕这款游戏本很久了吧 但入手之后却不懂华硕 g550jk4700 笔记本如何设置 u 盘启动也大有人在 接下来快启动小编带大家了解详细的设置教程哦 下载系统准备 u 盘装系统 小编为大家推荐好用的系统狗 http www xitongdog com

    2026年3月26日
    1
  • Mybatis二级缓存原理

    Mybatis二级缓存原理记录是一种精神,是加深理解最好的方式之一。最近看了下Mybatis的源码,分析了二级缓存的实现方式,在这里把他记下来。虽然这不复杂,对这方面的博客也有很多,写的也很好。但我坚信看懂了是其一,能够教别人或者描述清楚记下来才能真正的掌握。曹金桂cao_jingui@163.com(如有欠缺还请指教)时间:2016年10月11日16:00这篇文章能够帮你学会对Mybatis配置…

    2026年2月2日
    4
  • 安装登录ClawHub并给OpenClaw接入skills

    安装登录ClawHub并给OpenClaw接入skills

    2026年3月13日
    2
  • eleUI Tab切换echarts显示问题

    eleUI Tab切换echarts显示问题eleUITab 切换 echarts 显示问题问题 使用 elementUI 中的 tab 切换选项卡 其中一个 tab 中内容是 echarts 图表 出现了图片空白期

    2025年8月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号