原文链接:http://www.ipmtea.net/css_ie_firefox/201007/18_134.html
先看看pre的定义
HTML <pre> 标签
定义和用法
pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。
<pre> 标签的一个常见应用就是用来表示计算机的源代码
在 HTML 4.01 中,pre 元素的 "width" 属性是不被赞成使用的。
在 XHTML 1.0 Strict DTD 中,pre 元素的 "width" 属性是不被支持的。
给pre添加一个overflow的样式,
- overflow:auto;
在IE7下测试,这时,会出现滚动条,auto值的意思是当超出宽度时才出现滚动条,如果设置overflow:scroll,即使没有超出宽度也有滚动条,
有趣的是:对于pre标签,如果你想只设置垂直方向滚动而不设置水平方向是不行的,即:
- overflow-y: auto | scroll;
即使没有设置overflow-x,但是如果内容超出宽度,依然会出现滚动条,即当设置overflow-y:auto|scroll的时候,
overflow-x默认为:auto
white-space的问题:
<pre>标签可以理解为默认CSS就是{white-space:pre}
在IE下,可以设置{word-wrap:break-word }
word-wrap:设置或检索当当前行超过指定容器的边界时是否断开转行。
word-wrap:break-word:内容将在边界内换行。如果需要,词内换行(word-break)也行发生。
遗憾的是,貌似firefox不支持此属性。
浏览器默认是强制不换行输出 pre 里的内容。这样的话,代码一长就出现了撑到页面外部的样子。当然,你可以在编辑文章的时候手动换行,不过我觉得很麻烦,而且我是个懒人
- pre {
- whitewhite-space: pre-wrap; /* css-3 */
- whitewhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */
- whitewhite-space: -pre-wrap; /* Opera 4-6 */
- whitewhite-space: -o-pre-wrap; /* Opera 7 */
- word-wrap: break-word; /* Internet Explorer 5.5+ */
- }
经测试,除IE[当前使用6]外, 其他可以.... 郁闷,然后增加 width:600px; 后,ok,.换行了,其实位置还是衍生出去了。样子是这样的: 代码是在里面了,但下面的叙述性的东西却出了去。在说,定义一个这个宽度也不是个好的方法,其他的不直接改这个css的方法基本没有了。
然后看上面css想到, 为什么定义其他的都用 white-space 而定义 IE 的不使用呢? 又不是IE 不支持。。于是加上就可以了
- pre {
- whitewhite-space: pre-wrap; /* css-3 */
- whitewhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */
- whitewhite-space: -pre-wrap; /* Opera 4-6 */
- whitewhite-space: -o-pre-wrap; /* Opera 7 */
- word-wrap: break-word; /* Internet Explorer 5.5+ */
- whitewhite-space : normal ; /* Internet Explorer 5.5+ */
- }
至于本站上使用的是把ie和其他的分开了,因为white-space 在最后也都作用于其他了....
- pre {
- whitewhite-space: pre-wrap; /* css-3 */
- whitewhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */
- whitewhite-space: -pre-wrap; /* Opera 4-6 */
- whitewhite-space: -o-pre-wrap; /* Opera 7 */
- }
- * html pre {
- word-wrap: break-word; /* Internet Explorer 5.5+ */
- whitewhite-space : normal ; /* Internet Explorer 5.5+ */
- }