此代码段在Firefox上为红色,在Chrome上为蓝色。谁是对的?
* { background: red; '}
* { background: blue; }
§4.1.6块中说:
单
'
引号()和双引号("
)也必须成对出现,并且它们之间的字符将解析为字符串。
但是,如果'
还是"
不匹配成对出现,应该如何语法错误处理?
通过阅读4.2解析错误以及所谓的“匹配对规则”,我可以构造:
* { background: red; '}
* { background: blue; }
应理解为:
* { background: red; ...<EOF> }
也就是说,文件中的所有内容都'}
将被丢弃,因为该行中没有与之匹配}
的内容{
(因为在看到另一行{
之前总是存在另一个优先项}
),因此直到文件末尾隐式关闭它之前,它不会关闭。
当然,这确实很复杂,所以我可能会错...
进一步阅读CSS21语法似乎可以证实这一点。基本上,这里有两种作用:
'
将导致忽略当前行末尾的所有内容。和,{
将导致文件末尾的所有内容都被解析,就好像它仍是同一声明块的一部分一样。因此,基本上,#1导致关闭}
失败。#2可能会导致其后的所有内容丢失,因为无法将其解析为该块的有效声明(因为{..}
嵌套计数始终是错误的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句