我想知道为什么浏览器只对第一个元素显示双引号.第二个元素使用单引号.
a::before {
content: open-quote;
}
<a href="http://www.google.com">Google</a> <br>
<a href="http://www.amazon.com">Amazon</a>
我想知道为什么浏览器只对第一个元素显示双引号.第二个元素使用单引号.
a::before {
content: open-quote;
}
<a href="http://www.google.com">Google</a> <br>
<a href="http://www.amazon.com">Amazon</a>
您的开始引号没有终止,因此浏览器假设您即将嵌套您的引号,从而导致第一个元素使用双外引号,第二个元素使用单内引号.这就是引号标点符号在嵌套引号中的工作方式.参见Wikipedia和其中嵌套引语的引用.
值得注意的是,元素边界被忽略了,所以即使您的第二个元素嵌套得更深,或者如果两个元素都嵌套在它们自己的父元素中,它仍然以相同的方式工作,这使得它在可能包含不同类型和组合的短语元素(a
、br
、code
、em
、span
、strong
等,以及q
本身)的段落中特别有用.报价的嵌套方式完全取决于在任何时间点生成的open-quote
和close-quote
的数量,section 12.3.2 of the CSS2 spec中详细介绍了该算法,并以以下注释结束:
Note.引用深度与源文档的嵌套或格式 struct 无关.
为此,有两个所谓的"解决方案"来解决这个问题,这两个方案都涉及添加一个::after
伪元素来平衡第一组打开的引号.
通过使用::after
插入右引号,第一个元素的引号在遇到第二个元素之前终止,因此不会嵌套引号.
a::before {
content: open-quote;
}
a::after {
content: close-quote;
}
<a href="http://www.google.com">Google</a> <br>
<a href="http://www.amazon.com">Amazon</a>
如果您实际上不想渲染右引号,仍然可以使用no-close-quote
阻止浏览器为第二个元素生成单引号.
a::before {
content: open-quote;
}
a::after {
content: no-close-quote;
}
<a href="http://www.google.com">Google</a> <br>
<a href="http://www.amazon.com">Amazon</a>