- From: Dean Lee <xslidian@gmail.com>
- Date: Tue, 4 Jun 2013 14:47:02 +0800
- To: 一丝 <yiorsi@gmail.com>
- Cc: public-html-ig-zh <public-html-ig-zh@w3.org>
这里出现偏差的是没有包含在单独元素标签里的“游离文字”。 将它们渲染为匿名 inline 元素(类似于 <span>)似乎没有分歧。** 我们先把它放到默认 inline 的 <span> 标签里,以便通过选择器选择。 楼主也加了高亮背景。 (只测试了 Chrome 27.0.1453.94-m 和 Opera 12.15.1748。下面就爱信不信啦) 首先,由于是流式解析渲染,<input type="text" /> 在游离文字之前, (假设刚好在它后面网络中断,)浏览器理应先绘制它,并占用一定的宽度(及高度)。 接下来渲染游离文字。 我们先把 white-space: nowrap; 注释掉,大家表现一致,符合 ***-2 的分行渲染要求 (每行右边留下了合适的位置,包括第一行)。 现在让 white-space: nowrap; 重新生效,分歧出现了。 大家都把高亮加到了最右边。似乎是因为 <input> 这个块级元素的存在,同层的 <span> 也(相当于)被套了一层匿名块级框(***-1,不允许同处一层)。 匿名框的属性继承非常少,不应该影响 <span> 内的表现。右边仍然应该留下合适的位置。 但 Opera 在上一步里偷懒,直接把 span 改成了 block!于是里面的文字也不再 inline 了。 所以上一段对高亮的判断有误。Opera 可是急性子。 (验证:添加样式 span {display: block;} 可以使 Chrome 得到同样的结果。) (Chrome 给人选择的余地。并且就算你不深究细节,它通常也跟你的想象一致。 所以我支持它的大多数渲染策略。) 总结:水平方向上 inline 元素会给 block 元素腾位置。 (水平排版:inline 横着走,竖着展开,block 竖着走,横着展开。[CSS3-writing-modes]) 规范依据: ** 匿名 inline 元素: [CSS2-visuren] 9.2.2.1: 任何直接包含在块容器元素内(而不是在 inline 元素内)的文字必须作为匿名 inline 元素对待。([CSS3-box] 4.2 也有等效解释。) *** 1: 不同层; 2: 自动换行时分行渲染: [CSS3-box] 4.2.1-1: 块级框只能含有行框(相当于 inline 框)或块级框,但两者不能同时出现。4.2.1-2: 在需要时,框元素内的所有行框会被拆为一或多个(但尽可能少)display: block 的匿名框。(译注:拆分后匿名框内的文字仍继承所处匿名框上级的 display 属性) 参考链接列表: [CSS2-visuren] http://www.w3.org/TR/CSS2/visuren.html#anonymous [CSS3-box] http://www.w3.org/TR/css3-box/#block-level0 [CSS3-writing-modes] http://www.w3.org/TR/css3-writing-modes/#vertical-intro --- Best wishes, Dean (@xslidian) On Tue, Jun 4, 2013 at 12:24 PM, 一丝 <yiorsi@gmail.com> wrote: > 问题源于这个讨论: > http://lists.w3.org/Archives/Public/www-style/2013Apr/0540.html > > 我写了一个测试用例:http://jsbin.com/afuxid/1/edit > > 得到如下结果: > > http://img02.taobaocdn.com/tps/i2/T1rgC1XANbXXbAUXjT-270-405.png > > 其中: > Chrome,IE8-10 表现一致,文字不遮盖 input; > Opera 与 Firefox 表现一致,文字遮盖 input; > Firefox 21 在 input 获得焦点后省略号消失。 > > Webkit bug:https://bugs.webkit.org/show_bug.cgi?id=115746 > Chromium bug:https://code.google.com/p/chromium/issues/detail?id=237078 > Firefox bug:https://bugzilla.mozilla.org/show_bug.cgi?id=864759 > > 那么到底哪一种才是符合标准的? > text-overflow 规范:http://dev.w3.org/csswg/css-ui/#text-overflow0 > > 以上 > 一丝
Received on Tuesday, 4 June 2013 06:47:48 UTC