0

如果我 在 XHTML 严格中定义 doctype Firefox 会忽略此语句并打印空行(可通过边框看到),我会好奇地:first-line { line-height:0px; }隐藏块语句中的空第一行

我验证了我的 quellcode 并使用 Firefox 的 webdeveloper 来检查是否有任何问题,但他们说没有错误

(剥离的)示例 quellcode 是:

<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T</title>

<style type="text/css"><!--
.v { white-space:pre; display:inline-block; border:1px solid black; }
.v:first-line { line-height:0px; }
--></style>

</head><body>

<p class="v">
  Foo
  Bar
</p>

</body></html>

我的代码和其他浏览器(我已经测试过 Opera、Gnome、Safari)是否有任何问题只是忽略了严格,还是 Firefox 错误地遵守了严格?

4

2 回答 2

2

我不确定这是否真的是一个错误……</p>

我猜:first-line选择器的内部无法识别其中只有换行符的空行,但我不确定这是否需要。W3C 建议中没有任何内容可以证明这种行为是错误的还是正确的:

CSS 2.1 规范:

5.12.1 :first-line 伪元素
:first-line 伪元素将特殊样式应用于段落的第一个格式化行的内容。

--

16.6 空白:'white-space' 属性
'white-space'
...
pre这个值防止用户代理折叠空白序列。仅在保留的换行符处换行。

如果您正在动态生成 HTML 代码,请尝试在输出之前消除空行。这是我目前能给出的唯一建议。

于 2012-03-13T11:30:39.077 回答
0

尝试使用两个冒号而不是一个。来自 Mozilla

:first-line CSS 伪元素将样式应用于元素的第一行。但是,选择器 :first-line 不匹配任何真正的 HTML 元素。

于 2012-03-13T13:23:58.947 回答