让OSX Safari尊重css" white-space:pre"

时间:2017-06-26 07:39:45

标签: html css macos safari

我有一个博客,我正在使用ccs style =" white-space:pre"与div元素。我这样做是为了在博客中显示大量的代码示例或cli输出..并且必须将该文本复制并粘贴到html页面中。

我希望源代码易于阅读,所以希望使用" white-space:pre"在浏览器显示时保留原始输出的空白格式。

Chrome和Firefox显示html页面很好,但出于某种奇怪的原因...... Safari正在做"预包装"当我要求它做" pre"。我必须有保留空白和nowrap组合功能......这是" pre"但是没有被osx的野生动物园所尊重。

有没有人针对此类问题采取任何解决方法?我从很多测试中都清楚地知道firefox和chrome支持" pre"由CSS white-space属性定义,但osx的safari没有。我不想使用& nbsp,因为这会使我的源htm难以阅读和管理。

提前感谢任何有用的建议。

4 个答案:

答案 0 :(得分:4)

我在Safari 11.0.3上遇到了同样的问题,在jQuery对话框中有一个“whitespace:pre”格式。使用预标签代替并没有解决问题。

但是,将“word-wrap:normal”添加到工作的样式中。这是我发现为我的场景工作的最终css:

padding: 15px;
white-space: pre;
word-wrap: normal;
resize: none;
box-sizing: border-box;

答案 1 :(得分:0)

到目前为止,我仍然在Safari 11中找到了这个。块元素,例如<div>white-space: pre;overflow: auto;在Safari中的行为与Chrome,Firefox或Edge不同。文本将包装在容器内,而不是按照应有的方式滚动,如他在Google论坛上的帖子中包含的Neal图像所示。

解决方法是使用<pre>元素。 Safari会正确处理,其他浏览器也会处理它。

答案 2 :(得分:0)

padding: 15px;
white-space: pre;
word-wrap: normal;
resize: none;
box-sizing: border-box;

为我工作..

答案 3 :(得分:0)

即使overflow-wrapword-wrap,Safari也会错误地应用white-space(又名pre)。规范说,当一开始不允许包装时,它就不适用,但是Safari似乎忽略了它。

因此,要解决此问题,请将white-space:preword-wrap:normal结合使用,您应该会很好。