WordPress 技巧:让 PRE 标签自动换行

* WordPress / # , , / 转播到腾讯微博 2008年12月09日 / 27条评论 / 2,322 次浏览

技术类Blog在成长过程中总会遇到使用代码的情况,你是用什么方式显示代码的呢? NetPuter 是用插件( WP-Syntax )实现的,这款插件优点就是简洁,支持的语言语法很多。但我在使用过程中也发现了一个问题,就是不会自动换行。感觉很多人也会遇到这个问题,今天就来告诉大家如何通过 CSS 使 WP-Syntax 等利用PRE标签的插件自动换行

让 PRE 标签自动换行

为了方便演示,本文的效果都是截图,而代码则来自《WordPress 技巧:在 SEO 面前砍掉多余内容》。

首先,我们先来看看 WP-Syntax 原始效果:

嗯,如果不是在代码中换行,代码就会整一行的显示出来。根据源码我们可以发现在pre标签中显示代码的名为 Code 的 Class ,因此我们就能针对其进行修改啦!请出超强大的 CSS !

1
2
3
4
5
6
.code pre{
	word-wrap:break-word; /* 内容将在边界内换行。如果需要,词内换行( word-break )也将发生。 */
	word-break:break-all; /* 允许在词间换行, 也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本。
 */
	white-space:normal; /* 文本自动处理换行。假如抵达容器边界内容会转到下一行。 */
}

把这段代码插入到主题目录的 style.css 的屁股(其实想插哪儿都可以),然后你会发现代码变成酱紫了:

代码的确都自动换行了,但是有行号的话就会对不上。其实,对于 WP-Syntax 来说是不可能实现行号相对应且代码自动换行的。因为 WP-Syntax 是使用一个表格来显示代码,而左列是行号,右列是代码。如果你想又行号对应,又自动换行的话,可以考虑使用 CoolCode 这款插件,它是采用 li 的方式显示每一行代码的,但插件本身也不支持自动换行,但是你可以参考上面提供的代码SM下 CoolCode 哦。XD

因此,现在就只有实现无行号自动换行、有行号不换行咯,瞎蒙了下居然可以实现了(不知道为啥):

1
2
3
4
.code pre{
	word-wrap:break-word;
	word-break:break-all;
}

然后就变成这鸟样了:

OK!但至于为什么呢我就不知道了,有童鞋可以告诉我吗?

关于如何在非IE浏览器实现此效果,可以看看 Leeiio 童鞋的《讓你的< pre >< /pre > 能自動換行》。

围观评论 或者直接发表评论
Notify
NetPuter 发表于 2008-12-09 13:43

其实,是不是应该改叫“CSS技巧”才合适呢..?

Notify
Leeiio 发表于 2008-12-09 14:10

我也很迷茫 ~

Notify
Leeiio 发表于 2008-12-09 14:11

@NetPuter, 回得真快,我刚回你就自己自沙了~

Notify
免费PHP空间 发表于 2008-12-09 15:02

看不懂啊 技术太深了.

Notify
大学生乱弹琴 发表于 2008-12-09 16:02

技术问题就交给你们这些牛X了~问一下怎样实现留言不用刷新就能看见留言啊,就像你这里这样?

Notify
Yacca 发表于 2008-12-09 16:15

-.-幸亏我代码贴的少..

Notify
Utopia 发表于 2008-12-09 20:41

我使用的是coolcode插件,代码在IE下不能自动换行,您有解决的方法么?请指点

Notify
司法案例网 发表于 2008-12-10 09:41

又学了一招,呵呵~~~

Notify
NetPuter 发表于 2008-12-10 12:39

@免费PHP空间, 简单来说或,就是把文中提到的第二段CSS代码加入你主题的style.css中.

Notify
NetPuter 发表于 2008-12-10 12:40

@大学生乱弹琴, WordPress Thread Comment [http://wpland.cn/2008/08/wordpress-thread-comment.html]

Notify
NetPuter 发表于 2008-12-10 12:41

@Utopia, 你可以参考本文提供的CSS代码,并针对CoolCode的相关Class或ID进行修改.如果有这方面需要的童鞋比较多,我可以再写一篇~

Notify
xiaorsz 发表于 2008-12-10 13:45

我用coolcode,代码基本上都会换行的,不换行的比较少~~
呵呵!!
不过这确实是个好的技巧 !!

Notify
雪深 发表于 2008-12-10 14:39

收藏了

Notify
housne 发表于 2008-12-10 15:39

利用CSS技术实现的效果,其实IE对很多新鲜的CSS效果都不支持,而且很不标准,所以我狠IE6

Notify
LD 发表于 2008-12-10 17:26

我用coolcode, 不好转哪

Notify
iColor 发表于 2008-12-10 19:02

我坚信我 Blog 里不会出现代码地,,,哈哈哈

Notify
97xxoo 发表于 2008-12-10 21:01

好文章啊,支持一下!

Notify
yinheli 发表于 2008-12-10 23:10

貌似mg12说改了会不符合w3c标准....

Notify
NetPuter 发表于 2008-12-11 13:21

@yinheli, 可能吧,怪不得怎么没有语法高亮..

Notify
leehow 发表于 2008-12-11 15:43

过了玩这个的年纪了...

Notify
醉倚西风 发表于 2008-12-12 12:05

一般不搞CSS 所以用不着插件 呵呵

Notify
NetPuter 发表于 2008-12-13 13:08

@醉倚西风, CSS可是很强大的哦,而且未来设计的趋势一定是和CSS有关的!

Notify
做啥网 发表于 2008-12-13 16:27

呵呵 这个觉得挺有意思的,不过还没有深究过。

Notify
Utopia 发表于 2008-12-14 18:14

@NetPuter, 请写一下关于解决Coolcode在IE6下不能自动换行的方法吧

Notify
NetPuter 发表于 2008-12-14 22:54

@Utopia, 好的,我有空看看.不过,IE6已经被越来越多人抛弃了..

Notify
二手科学家 发表于 2008-12-18 14:31

一直没有启动代码插件,所以,我的blog中很少代码,

Notify
Showfom 发表于 2008-12-23 23:36

不错不错,学习了