添加“;必需的”;通过CSS将文本转换为HTML表单

添加“;必需的”;通过CSS将文本转换为HTML表单,html,css,forms,Html,Css,Forms,我有一个看起来像这样: <form> <input type="text" name="name" id="name" /><span class="required"></span> </form> 我在谷歌上搜索了一下,发现它可以通过CSS样式使用内容来实现,比如: .required:before { content: "aaaa" } 但是,我应该使用这种技术(例如,每个主流浏览器都支持这种技术)还是有更可取的方法来

我有一个
看起来像这样:

<form>
  <input type="text" name="name" id="name" /><span class="required"></span>
</form>
我在谷歌上搜索了一下,发现它可以通过CSS样式使用
内容来实现,比如:

.required:before
{
  content: "aaaa"
}
但是,我应该使用这种技术(例如,每个主流浏览器都支持这种技术)还是有更可取的方法来做这类事情

谢谢


更新Ps。我不想使用JavaScript来实现这一点,只需要简单的CSS。

我想你应该看看JavaScript。将内容添加到具有特定类/ID的标记中是JavaScript的用途之一。有许多库可以加快开发速度—jQuery、Prototype、Dojo和MooTools。

u可以使用jQuery来完成这项工作

jQuery是一个javascript库:

写下这段代码

$(document).ready(function(){
  $(span[class=required]).innerText='<sometext>';
});
$(文档).ready(函数(){
$(span[class=required])。innerText='';
});

但是你必须下载这个插件。但是你也可以使用javascript

绝对不应该使用CSS来实现这一点!上帝不p

如上所述,请使用javascript——但如果您想避免这种情况,则必须使用服务器端脚本——因此,请学习一些PHP。

检查以下内容:

还要检查兼容性

不要使用


我觉得我们根本不应该使用内容声明。它将内容添加到页面,CSS用于向页面添加演示文稿,而不是内容。因此,我觉得如果您想动态生成内容,就应该使用JavaScript。CSS是这个工作的错误工具。

我同意在大多数情况下使用CSS添加内容是不正确的。然而,视觉上突出显示一个必填字段,我觉得这样做完全可以

内容
支持不够广泛(即完全不支持IIRC)


您可以让“必需”范围包含一个包含“必需”文本或星号的背景图像。使用图形文本有一些缺点,但基于jQuery的解决方案也没有缺点

正如其他人所指出的,CSS可以做到这一点,但它并没有得到充分的支持,也不是解决这个问题的正确方法。如果“必需”文本的出现至关重要,那么必须将其添加到HTML中。Javascript在某种程度上是一个合适的解决方案,但前提是您不能编辑源代码。虽然可以使用JS生成内容,但很明显,它只会出现在启用JavaScript的人面前,这增加了维护的复杂性。当有人在五年后在页面上修改代码时,他们最初会想知道“必需的”文本来自哪里

另一个相当快速和整洁的选择是给跨度一个星号的背景图像,并在表单上方包含一个键:

* required field

您确实应该在HTML中添加此文本。其他解决方案是不可访问的-例如,没有视力的用户不会意识到该字段是必需的。

感谢Extrakun,我应该提到我希望避免使用JavaScript。更新了问题。我认为除了JavaScript之外,没有其他客户端解决方案。然后,您可能想看看服务器端编程,它允许您使用模板和一些简单的编程来复制内容。microsoft再次罢工…:(但如果CSS仅用于表示,那么CSS具有content属性的原因是什么呢?我在谷歌上搜索了W3C(),它说:“生成的内容不会改变文档树。特别是,它不会反馈给文档语言处理器(例如,用于重定版本)。”因此这意味着它实际上是“表示”,而不是添加“内容”到页面,对吗?我不认为我同意这个论点,它不应该被使用,因为它在页面中添加了“内容”。添加了一点“必需”blurb只不过是CSS已经传达的背景图像、图标或信息颜色的内容。它不应该用于插入段落,但对于类似的内容,我认为它在语义上非常合适。也就是说…IE不太支持它。我要做的是使用darn标记,然后使用us JS来修复它浏览器。@Mark:“添加一点“必需”的模糊内容只不过是CSS已经传达的背景图像、图标或信息性颜色。”如果CSS是通知用户该字段为必填字段的唯一方式,那么它是内容,不应该在CSS中。@Paul:可能吧。但它仍然不是关键任务。大概你在表单上有某种验证。这只是一些小动作。请看我在上面的评论@Pranay Rana。如果我使用“背景图像”属性,不是与“内容”属性相同吗?唯一的区别是,在“内容”的情况下,我添加一个字符串,在“背景图像”的情况下,我添加一个图片?两者都不是“内容”,但都添加了一些视觉呈现的“数据”是吗?@Zabba严格地说,是的。这两者都不符合将内容和演示分离的理念。但如果这对你有效,考虑到所有的缺点(图形文本在屏幕阅读器中不可读,无法打印等)我倾向于说这没关系。@Zabba:区别在于
背景图像
得到广泛支持。被接受;我认为@Pranay Rana评论中的@Mark也有一个很好的观点。总之,我认为最好使用@Pekka的解决方案,使用CSS content属性,然后为可怜的IE用户使用JavaScript:)添加一个词来表示某物的类型不应被视为内容。如果你的习惯是这样的话,它只会把背景涂成红色。这是一种文体选择,即使它碰巧是字母。它属于css,我不同意这种情况:开始使用服务器端语言来构建表单比使用css来呈现(比如)星号要困难得多。总的来说,你是对的。不,费
* required field