HTML中pre标签的⽤法
我们经常会在要保持⽂本格式的时候使⽤pre标签,⽐如当我们要展⽰源代码的时候,只要放⼀个pre标签,然后把源代码直接复制,粘贴,然后在页⾯上就可以保持好格式。不会像放在其它标签⾥那样,把换⾏和空格都⾃动折叠了。这⾥看⼀下pre是如何⼯作的呢?
pre标签
HTML⾥的pre元素,可定义预格式化的⽂本。在pre元素中的⽂本会保留空格和换⾏符。⽂本显现为。
下⾯我们看⼀个⽰例,这⾥我使⽤的是⼀段css代码,你也可以换成其它的。如下:
1 2 3 4body{
background:#fff;
font: 12px/24px 1.66; }
当我们⽤pre包裹它们时
1 2 3 4<pre>body{
background:#fff;
font: 12px/24px 1.66; }</pre>
会在浏览器上直接得到
可以看出上⾯的tab,空格,换⾏都完整的保留下来了。
我们可以把这段css代码放到其它元素下,如得到下⾯的图。
很完美,以后就可以⽤pre来标识代码了。哪⾥想⽤放哪⾥,但这⾥还有⼀些可以优化。
语义化
pre元素并不能代码放⼊,⾥⾯的内容是什么,可以是歌词,可以是代码,可以是其它⽂本。当pre元素来展⽰源代码的时候最好的⽅式是⽤code元素来包裹代码,这样既可以保持格式⼜可以代表语义,⼀举数得。如上⾯的代码可以改写为:
1 2 3 4 5 6<pre>
<code>body{
background:#fff;
font: 12px/24px 1.66; }</code>
</pre>
嵌套html其它标签
pre中最好不要包含可以导致段落断开的标签(如:p,标题),虽然主流浏览器对此解析没有问题,但最好不要这样使⽤。存在着语义不明的情况,⽐如⽆法判断是想显⽰结构的不同展⽰,还是想把标签作为代码的⼀部分显⽰,最好对这⾥只包含代码⽂本,对于标签进⾏转义如'>'对应'>'。
pre元素中允许的⽂本可以包括,还有链接、图像和⽔平分隔线。当把其它标签放到pre块中时,会被直接渲染为正常元素。
⽰例如下:
1 2 3 4 5 6 7 8<pre>[ti:凡⼈歌]
[ar:李宗盛]
[al:凡⼈歌]
[00:00](music)
[00:28]你我皆凡⼈,⽣在⼈世间;
[00:35]终⽇奔波苦,⼀刻不得闲;
[00:43]既然不是仙,难免有杂念;
[00:50]<a href="#">道义放两旁</a>,利字摆中间。</pre>
显⽰出来样式如下:
问题
⽂本过长时,溢出
如果我们在pre⾥放置的⽂本过长,中间也没有换⾏,由于pre会保持⽂本的格式,导致⽂本溢出。演⽰如下:
1 2 3<div >
<pre>[ti:凡⼈歌][ar:李宗盛][al:凡⼈歌][00:00](music)[00:28]你我皆凡⼈,⽣在⼈世间;[00:35]终⽇奔波苦,⼀刻不得闲;[00:43]既然不是仙,难免有杂念;[00:50]<a href="#">道义放两旁</a>,利字摆中间。</pre>
</div>
浏览器中的表现
解决⽅法1:给pre标签定义横向滚动条
1 2 3pre{
overflow:auto; }
href标签怎么用解决⽅法2:使⽤text-wrapping
直接定义pre标签⾥的css属性white-space的值为pre-wrap。
1 2 3pre{
white-space:pre-wrap; }
渲染html元素
上⾯已经提到过,html元素会在pre标签中直接被解析。如果我们想显⽰这些标签,只要把这些特殊符号转换为,就可以了。如: "<" 代表 "<",">" 代表 ">"。
1 2 3 4 5<pre><code><ul class="main-list">
<li><a href="#">;藏新线才是最西藏的进、出线</a></li> <li><a href="#">;藏新线才是最西藏的进、出线</a></li> <li><a href="#">;藏新线才是最西藏的进、出线</a></li> </ul></code></pre>
也可以使⽤⼀些线上的⼯具去完成这个转义的过程,这⾥可以百度⼀下,随便了⼀个截了个图
意外的空格
有时候我们把代码直接复制到页⾯时,编辑器会给我们⾃动缩进对齐,这⾥其实是很好的,但这⾥遇到pre标签就有⿇烦了,⽐如:
1 2 3 4 5 6 7<div>
<pre><code><ul class="main-list">
<li><a href="#">;藏新线才是最西藏的进、出线</a></li>    <li><a href="#">;藏新线才是最西藏的进、出线</a></li>    <li><a href="#">;藏新线才是最西藏的进、出线</a></li>    </ul></code></pre>
</div>
结果效果如下:
建议使⽤下⾯的形式来对代码进⾏排版。
1 2 3 4 5<div>
<pre><code>第⼀⾏
//中间代码进⾏格式化最后⼀⾏</code></pre> </div>
扩展
定义⼀下tab的⼤⼩
1 2 3pre{
tab-size:2; }
但这个IE浏览器⽀持情况不太好。视情况来选择吧。
使⽤等宽字体
可以⽅便排版,看起来⽐较舒服。
使⽤语法⾼亮
这个要借助⼀些库来完成,⽐如highlight.js,具体怎么使⽤,⼤家百度吧。
总结
上⾯的这些只是⼀些⼩的总结,如果有什么其它⽅式的应⽤,或这⾥没提到的⿊科技,⼤家可以在评论⾥提出来,⼀起讨论。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。