tjh*_*nce 15 html css whitespace language-lawyer
我想更好地理解HTML空白处理模型.现在我正在比较两个HTML片段:
<div>a <br>z</div>
Run Code Online (Sandbox Code Playgroud)
和
<div>a<br> z</div>
Run Code Online (Sandbox Code Playgroud)
第一个片段,当被renered时,产生两行:"a "和"z"(所以第一行有一个尾随空格.)
第二个片段产生两行:"a"和"z".第二行没有前导空间.
我的问题是:为什么?我目前正在使用http://www.w3.org/TR/CSS2/text.html#white-space-model作为参考.它指出
- 如果一行开头的空格(U + 0020)将"white-space"设置为"normal","nowrap"或"pre-line",则会将其删除.
- 所有选项卡(U + 0009)都呈现为水平移位,使下一个制表符与下一个制表符对齐.制表位于块的起始内容边缘以块的字体呈现的空格宽度(U + 0020)的8倍的倍数处出现.
- 如果一行末尾的空格(U + 0020)将"white-space"设置为"normal","nowrap"或"pre-line",它也会被删除.
- 如果行末尾的空格(U + 0020)或制表符(U + 0009)将"白色空间"设置为"预换行",则UAs可能会在视觉上将其折叠.
对此的简单解读表明,由于要删除行的开头或结尾的空格(当"空格"为"正常"时),我的第一个片段应该不会产生尾随空格.但事实并非如此.
发生什么了?
我现在的理论是,它<br>被秘密地算作一个"角色",在第一个片段中,它阻止尾随空间位于其线的"末端".但我真的不知道.
编辑:要清楚,我知道如何使用随意 创建空格.我的问题是关于什么规则(关于某些规范)引发了上述行为.
好问题!我已经确认了 Chrome 和 Firefox 中的行为,并确认它与 无关,因为它也是由条件<br>中的普通换行符触发的:white-space: pre-line
<div style="white-space:pre-line">a
z</div>
Run Code Online (Sandbox Code Playgroud)
我已向列表发送了一封电子邮件,要求澄清此问题,并询问我们是否应该更改规范以匹配实现,或者在浏览器上提交错误以匹配规范。
| 归档时间: |
|
| 查看次数: |
1499 次 |
| 最近记录: |