【发布时间】:2011-06-02 06:34:19
【问题描述】:
在 Firefox 3 和 Google Chrome 8.0 中,以下内容按预期工作:
<style type="text/css">
span:before { content: 'span: '; }
</style>
<span>Test</span> <!-- produces: "span: Test" -->
但当元素为<input>时不会:
<style type="text/css">
input:before { content: 'input: '; }
</style>
<input type="text"></input> <!-- produces only the textbox; the generated content
is nowhere to be seen in both FF3 and Chrome 8 -->
为什么它没有像我预期的那样工作?
【问题讨论】:
-
<input>需要自行关闭。如果你想给你的文本框一个标签,使用<label>。 -
我意识到这是一个较旧的线程,但是...... BoltClock 的评论在语义上是正确的,并且得到了 CSS 纯粹主义者广泛持有的观点的支持,即 CSS 应该仅用于设计(而不是用于内容)。但是,我认为标签元素等是设计元素——所以我觉得在这种情况下,CSS 是实现预期结果的正确途径。
-
@Joshua:我不确定。我不认为成为一名 CSS 纯粹主义者可以赚到很多钱。我听说他们中的一些(全部?)也不喜欢 CSS 中的变量等。这太荒谬了。我同意,尽管标签可以被视为内容,所以我不确定。不过,我认为限制在实践中没有多大意义......
-
同意。我认为最好将笼统的“纯粹主义风格”规则应用于那些刚刚学习工具集的人。但是一旦你掌握了它们,并且能够理解抽象在 CSS 中所扮演的角色类型,那么就可以开始质疑和扩展这些界限了。如果你在此之前这样做,你只会变得更加困惑。我想这就是编码和编程之间的区别。“看,它做了什么”与“看我做了什么”。这只是我的看法。