pre标签的样式

  你可能正在使用 <pre> 标签。这是一个 HTML 中非常特别的标签,它允许其中的空格真正显示出来。例如:四个空格将真实显示成四个空格。这不同于其他标签通常的做法,其他标签会将之间的空白压缩成一个。从这一点来说,<pre>标签真的是很有用。

  你在 <pre> 标签中使用 <code> 标签吗?

  <pre> 标签的 “pre” 的意思是 “preformatted text”(预格式化的文本),没有特别规定里面的文本是什么内容。<code> 标签的语义表示其中的文本是代码。这对我来说尤其有用,当我需要显示一段代码时,使用它们,下面是一个例子:


<pre><code>
function cool(x) {
return x   1;
}
</code></pre>

  解释一下:在<pre><code>和代码之间有一个换行,而这也会被显示成一个空行,这非常讨厌。没有非常好的 CSS 方法来解决这个问题,最好的方法是与 <pre> 标签同一行开始代码,或者用编译程序来去除这里的换行。

  选择一个字体

  由于 <pre> 标签主要是用来显示代码块,而代码通常使用等宽字体,因此将 <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 种等宽字体

  折行还是不折行?

  这有关个人偏好,对我个人来说,分两种情况。

  当我自己在编辑器写代码时,我倾向于让代码自动折行而不出现水平滚动条。而当我在文章中阅读代码时,我喜欢代码不折行。我知道这很奇怪。在 CodePen 里,我们将折不折行提供成一个选项让用户自己选择,因为大家本来就是萝卜青菜各有所爱。

  在展示代码的时候,你需要选择究竟是否折行。如果你选择折行,幸运地,你可以使用为<pre>标签提供的独一无二的样式来保留空白同时折行,如同下面这样:


pre {
white-space: pre-wrap;
}

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


pre {
overflow-x: auto;
}

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

  也许该让它自适应

  一些人,可能包括你,既不喜欢折行也不喜欢滚动条。这种情况也有解决方案。你可以让 <pre> 保持默认的容器宽度,但是允许它在交互的时候展开:


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 端直接生成 <span> 的样式(用来语法分色),不然 Prism.js 已经足够好了。

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

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

  比如:

  标记出语言的其中一种方式是通过 data-* 属性(可能你的语法高亮工具也已经要求你标记出)然后显示它,例如:


<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;
}

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



转载请注明:前端录»pre标签的样式

<script src="http://www.wozhuye.com/index.php?m=digg&c=index&a=init&id=14-333-2"></script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从Hotspot JIT编译器打印生成的汇编代码

有时&#xff0c;在对Java应用程序进行性能分析时&#xff0c;有必要了解Hotspot JIT编译器生成的汇编代码。 这对于确定已做出的优化决策以及我们的代码更改如何影响生成的汇编代码非常有用。 在调试并行算法以确保已按预期应用可见性规则时&#xff0c;知道何时发出什么指令也…

js的闭包

function a(){var n 0;this.inc function () {n; console.log(n);}; } var c new a(); c.inc(); //控制台输出1 c.inc(); //控制台输出2 什么是闭包&#xff1f;这就是闭包&#xff01;&#xff01;有权访问另一个函数作用域内变量的函数都是闭包。当函数可以记住并访…

Background-size完美兼容IE

CSS3 新增的 background-size 是一个很有用的属性&#xff0c;用于定义背景图片的尺寸&#xff0c;有了这个属性&#xff0c;你就可以任意指定背景图片的大小。其中最常用的值应该要数 cover 了&#xff0c;该值能让背景图片缩放至填满整个容器&#xff0c;即使是图片面积小于容…

python第五章上机实践报告_第五章实践报告 - osc_kk5bjg1i的个人空间 - OSCHINA - 中文开源技术交流社区...

1.实践问题&#xff1a;工作分配问题2.问题描述设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法&#xff0c;对于给定的工作费用&#xff0c;为每一个人都分配1 件不同的工作&#xff0c;并使总费用达到最小。输入格式:输入数据的第一行有1 个正…

android服务下载,android服务之bindService和unService中下载任务中的应用

通过bindService方法来调用服务final Down down data;viewHolder.videoActionBtn.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if(bEditMode) {// 处于编辑模式&#xff0c;点击删除deleteDown(down);} else {// 处于播放模式&…

02CSS文本样式08

day08 CSS文本样式   font-family设置字体   font-size文字大小   font-size绝对单位|相对单位   cm mm pt pc xx-small   x-small medium large small xx-large x-large   相对单位&#xff1a;px em % larger smaller   color文字颜色   color:颜色|十六进制…

Illustrator、Indesign与Photoshop

Adobe illustrator是一种应用于出版、多媒体和在线图像的工业标准矢量插画的软件&#xff0c;作为一款非常好的图片处理工具&#xff0c;Adobe Illustrator广泛应用于印刷出版、海报书籍排版、专业插画、多媒体图像处理和互联网页面的制作等&#xff0c;也可以为线稿提供较高的…

判断sem信号量为零_将信号量递减为零的进程崩溃时,如何恢复信号量?

我有多个使用g 编译的应用程序&#xff0c;它们在Ubuntu中运行。我正在使用命名信号量来协调不同进程之间的关系。除非 出现以下情况&#xff0c; 否则所有方法都可以正常工作&#xff1a;如果其中一个进程调用sem_wait()或sem_timedwait()使信号量递减&#xff0c;然后在有机会…

在Spring中使用Future对象调用Async方法调用

下一个示例将演示Spring容器内部的异步方法调用。 为什么我们需要异步方法调用&#xff1f; 在某些情况下&#xff0c;我们并不真正知道是否需要重播或何时应返回结果。 传统方式在Java EE的异步处理世界中&#xff0c;使用队列/主题。 我们可以在Spring中进行相同的操作&#…

select里加链接

html select标签加链接的方法有很多&#xff0c;接下来为大家介绍下几个比较经典的&#xff0c;,感兴趣的朋友可以参考下哈&#xff0c;希望可以帮助到你 第一种 &#xff1a; <SCRIPT languagejavascript> <!-- // open the related site windows function mbar…

android ipc 多个客户端,Android IPC之AIDL进阶篇

前言在Android IPC之AIDL中我介绍了如何使用AIDL进行多进程通信&#xff0c;不过由于当时个人水平有限&#xff0c;仅仅介绍了最基础的部分&#xff0c;所以本篇博客主要是在Android IPC之AIDL的基础上深入介绍下AIDL的进阶的几点理解以及用法。AIDL接口中的in out inout的含义…

mysql数据库(3)-查询

数据库设计规范 58到家数据库30条军规解读查询 创建数据库、数据表 -- 创建数据库 create database python_test_1 charsetutf8; -- 使用数据库 use python_test_1; -- students表 create table students( id int unsigned primary key auto_increment not null, name varchar(…

Spring Data Solr教程:向所有存储库添加自定义方法

如果我们在现实生活中的软件项目中使用Spring Data Solr&#xff0c;很可能我们迟早会遇到一个要求&#xff0c;该要求指出我们的应用程序必须能够与本地Solr服务器和SolrCloud进行通信 。 目前&#xff0c;满足此要求意味着我们必须向所有Spring Data Solr存储库添加自定义方法…

远程管理口怎么看地址_红烧羊肉怎么样做才能滋味浓郁,咸甜适口,且回味有奶香?看这里...

原汁原味红烧羊肉此菜在制作上不同于其他红烧羊肉时要放入香料去膻&#xff0c;但在选料上很讲究&#xff0c;也就是说食材的好坏决定菜的好坏。选用一年生的崇明母山羊制作&#xff0c;膻味很小&#xff0c;肉质软嫩细腻&#xff0c;且带有一股淡淡奶香&#xff0c;因此不必放…

css段落文字(中英文混杂)实现两端对齐

案例如下&#xff1a; 混合使用汉字和英文的段落默认如下&#xff1a; 两边是不对齐的(一般情况下&#xff0c;我们对这种情况不做处理&#xff0c;除非需求或者设计非要我们实现两端对齐)。 对齐之后如下&#xff1a; 实现思路 一般的两端对齐是使用text-align:justify&…

44集合:蒜头军学英语

转载于:https://www.cnblogs.com/passion-sky/p/8424769.html

android病毒下载地址,LINE病毒查杀

LINE病毒查杀是免费通话、免费传讯「LINE」的周边应用程序之一。它能保护智能手机上个人信息的安全&#xff0c;使其免于病毒或恶意程序的侵害。您只要执行几个简单的步骤就能确认手机状态或完成病毒扫描。LINE病毒查杀界面LINE病毒查杀软件功能1、智能手机上的病毒将无所遁形!…

Golang系列:打印命令行参数

记得最早在学校机房学习 Java 时&#xff0c;照着书上的例子&#xff0c;写一个最简单 main 方法&#xff0c;当程序运行并在屏幕上打印出 hello world 时&#xff0c;内心竟有种莫名的激动&#xff0c;相信很多人都有这种经历吧。 不管学什么编程语言&#xff0c;都先从命令行…

Javascript 两种 function 定义的区别

大家都知道Javascript 有两个种定义Function的方法非常常用。例如 function a(){ alert ( "a" )} var a function (){ alert ( "a" )} 虽然两个种方式定义出来的 function 调用的时候结果一样&#xff0c;但是中间还是有区别的。举个简单的…

android app的签名,Android APP的签名

Android APP的签名Android项目以它的包名作为唯一的标识&#xff0c;如果在同一部手机上安装两个包名相同的APP&#xff0c;后者就会覆盖前面安装的应用。为了避免Android APP被随意覆盖&#xff0c;Android要求对APP进行签名。下面介绍对APP进行签名的步骤1、选择builder菜单下…