在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。

例子:

imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >

当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。

为什么我的教授不让我使用合成元素?他们工作效率很高。

另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?


当前回答

虽然CSS有一个叫做“标签选择器”的东西,但它实际上并不知道标签是什么。这将留给文档的语言来定义。CSS被设计成不仅可以与HTML一起使用,还可以与XML一起使用,其中(假设您没有使用DTD或其他验证方案)标签可以是任何东西。您也可以将它用于其他语言,尽管您需要提出自己的语义,以明确“标签”和“属性”对应的内容。

浏览器通常将CSS应用于HTML中的未知标记,因为这被认为比完全破坏要好:至少它们可以显示一些东西。但故意使用“假”标签是非常糟糕的做法。这样做的一个原因是,新标签确实会时不时地定义,如果一个定义看起来有点像你的假标签,但不完全以相同的方式工作,这可能会导致你的网站在新浏览器上出现问题。

其他回答

人们很少使用自制的标记,因为它们不太可能在当前的每个浏览器和未来的每个浏览器中都可靠地工作。

浏览器必须将HTML代码解析为它所知道的元素,然后将生成的标记转换为适合文档对象模型(DOM)的其他内容。由于web标准没有涵盖如何处理标准之外的所有内容,web浏览器倾向于以不同的方式处理非标准代码。

在不增加不确定性元素的情况下,使用一堆不同的浏览器进行Web开发已经足够棘手了,这些浏览器都有自己的怪癖。最好的办法是坚持那些标准中的东西,那是浏览器供应商试图遵循的,所以它有最好的机会实际工作。

为什么CSS使用假元素?因为它不会伤害任何人因为你不应该使用它们。

为什么我的教授不让我使用合成元素?因为如果该元素在未来由规范定义,那么您的元素将具有不可预测的行为。

另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?因为他和大多数其他web开发人员一样,明白我们不应该使用将来可能会随机损坏的东西。

CSS是一种样式表语言,可用于表示XML文档,而不仅仅是(X)HTML文档。带有自制标记的代码片段可以是合法XML文档的一部分;如果你把它包含在一个根元素中,它就是1。可能你已经有一个<html>…</html> around it?当前的任何浏览器都可以显示XML文档。

当然,它不是一个很好的XML文档,它缺少语法和XML声明。如果使用HTML声明头(可能是发送正确mime类型的服务器配置),那么它将是非法的HTML。

HTML比普通XML有优势,因为元素有语义意义,在网页表示的上下文中是有用的。工具可以使用这种语义,其他开发人员知道它的含义,它更不容易出错,更易于阅读。

但在其他上下文中,最好使用CSS和XML和/或XSLT来表示。这就是你所做的。因为这不是你的任务,你不知道你在做什么,HTML/CSS是更好的方式,大多数时候你应该在你的场景中坚持使用它。

您应该在文档中添加一个(X)HTML头,以便工具能够为您提供有意义的错误消息。

实际上你可以使用自定义元素。下面是关于这个主题的W3C规范:

http://w3c.github.io/webcomponents/spec/custom/

这里有一个教程来解释如何使用它们:

http://www.html5rocks.com/en/tutorials/webcomponents/customelements/

正如@Quentin所指出的:这是开发早期的规范草案,它对元素名称施加了限制。

他为什么不想让你用?它们既不常见,也不是HTML5标准的一部分。 从技术上讲,这是不允许的。他们就是个笨蛋。

不过我自己也喜欢。您可能对XHTML5感兴趣。它允许您定义自己的标记,并将它们作为标准的一部分使用。

此外,正如其他人指出的那样,它们是无效的,因此不能携带。

为什么他不知道他们的存在?我不知道,只知道它们不常见。可能他只是不知道你可以。