我想知道为什么浏览器只对第一个元素显示双引号.第二个元素使用单引号.

a::before {
  content: open-quote;
}
<a href="http://www.google.com">Google</a> <br>
<a href="http://www.amazon.com">Amazon</a>

推荐答案

您的开始引号没有终止,因此浏览器假设您即将嵌套您的引号,从而导致第一个元素使用双外引号,第二个元素使用单内引号.这就是引号标点符号在嵌套引号中的工作方式.参见Wikipedia和其中嵌套引语的引用.

值得注意的是,元素边界被忽略了,所以即使您的第二个元素嵌套得更深,或者如果两个元素都嵌套在它们自己的父元素中,它仍然以相同的方式工作,这使得它在可能包含不同类型和组合的短语元素(abrcodeemspanstrong等,以及q本身)的段落中特别有用.报价的嵌套方式完全取决于在任何时间点生成的open-quoteclose-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>

Css相关问答推荐

如何为FLEX方向编写响应式的CSS

如何在不重叠侧边栏的情况下尽可能使元素居中?

如何使用混合混合模式更改动画背景上的文本 colored颜色

如何从 WooCommerce 中的 Betheme 图像中删除产品永久链接图标

.NET 8 预览版 6 中不使用新项目模板提供 Blazor CSS 文件

在 Next.js 中使用 .modules.scss 时未应用样式

为什么 width: 100% 在 Flex 父级中缩小这个 div ?

如何在一个父类里面 Select 两个不同的类?

.SVG 文件对象在锚标签下可点击

如何在真实文本旁边制作文本阴影,使其看起来像 css 中的重复文本?

BootStrap:右对齐嵌套手风琴

CSS背景位置从顶部的给定像素开始?

将复选框对齐到中心

如何将 .btn-group 从 twitter-bootstrap 居中?

找到第一个可滚动的父级

CSS Select /样式第一个词

如何使用 JavaScript 获取元素的背景图片 URL?

div内的CSS中心内容

为什么是垂直对齐:文本顶部;不能在 CSS 中工作

仅当存在 2 个类时,您可以使用 CSS 定位元素吗?