CSS在'input'元素之前或之后生成内容

14 浏览
0 Comments

CSS在'input'元素之前或之后生成内容

在Firefox 3和Google Chrome 8.0中,以下代码按预期工作:\n


Test 

\n但是当元素是时,它不起作用:\n


 

\n为什么它不像我预期的那样工作?

0
0 Comments

CSS内容生成(content generation)是CSS的一个强大功能,它可以通过伪元素(pseudo-elements)在元素的内容前或后插入额外的内容。在上述示例代码中,通过使用伪元素的`::after`伪类,可以在`input`元素后的`label`元素中插入一段文本内容。

上述代码中定义了三个伪类样式,分别是`input + label::after`、`input:focus + label::after`和`input:valid + label::after`。这些伪类样式分别表示在`input`元素的相邻兄弟元素`label`之后插入内容。根据不同的状态,文本内容和颜色也有所不同。当`input`元素获取焦点时,文本内容为"not valid yet",颜色为红色;当`input`元素通过验证时,文本内容为"looks good",颜色为绿色。

然而,尽管这种使用CSS内容生成的方法可以实现预期的效果,但它并不适用于需要保持标记的可访问性的情况。CSS内容只应该用于设计方面,而不是提供有用的信息。因此,在这种情况下,更好的方法是使用JavaScript将有用的信息输入到标签中。

当然,为了提高可访问性,我们可以采用一些方法。例如,可以使用多个带有不同文本的标签,并使用`display: none`来隐藏不相关的标签。这样,屏幕阅读器可以读取相关的文本内容,而无需依赖CSS内容生成。

总之,CSS内容生成是一种强大的功能,可以在元素的内容前或后插入额外的内容。然而,在保持标记可访问性的情况下,应该避免使用CSS内容生成,而是使用JavaScript等其他方法来提供有用的信息。

0
0 Comments

CSS content generation before or after 'input' elements这个问题的出现的原因是因为元素是一种特殊类型的替换元素(replaced elements),这些元素不支持:before和:after伪类选择器。替换元素是指其表示与CSS无关的元素,它们的典型例子包括