【发布时间】:2014-08-14 15:06:20
【问题描述】:
假设我已经标记:
<div data-generated="world!">Hello </div>
.. 使用 CSS:
div:after {
content: attr(data-generated);
}
这会产生文本:Hello world! - FIDDLE
div:after {
content: attr(data-generated);
}
<div data-generated="world!">Hello </div>
但是...
如果我尝试选择/复制文本 - 只有“你好”部分是可选的。
有没有办法选择css生成的文本?
注意:
1) 我查看了有关生成内容的规范(here 和here),但我没有看到任何关于此问题的参考。
生成的内容应该是可搜索的、可选择的,并且可供 辅助技术
2) 如果这个问题的答案是“不 - 这是不可能的” - 请链接到说明这一点的可靠来源。
【问题讨论】:
-
我不太清楚。但由于生成的内容不是 DOM 的一部分,我应该说不。
-
在 fat 中它应该 not 是可选择的,因为它实际上是 styling 我们在以这种方式使用它时误用了
content元素。如果您想要实际可选择的“内容”,请使用适当的 HTML 元素而不是伪元素。 - developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements -
我当然不认为
<div data-commentcount="3"> comments </div>也是可以接受的用法。 CSS 不应该用来生成内容,而应该用来生成样式。这里写“3”不被认为是一种风格,而是实际的内容。如果您尝试添加一些花哨的引号或要点,那将是一种风格。此外,与仅包含“3 cmets”作为文本相比,这对您有什么好处? -
@Danield 为什么需要添加额外的 span 元素?即使您不得不添加那个 span 元素,这仍然比在我的书中添加一个“数据”属性要好。
标签: html css selection pseudo-element css-content