在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。
例子:
imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >
当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。
为什么我的教授不让我使用合成元素?他们工作效率很高。
另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?
在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。
例子:
imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >
当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。
为什么我的教授不让我使用合成元素?他们工作效率很高。
另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?
当前回答
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头,以便工具能够为您提供有意义的错误消息。
其他回答
我认为编造的标签可能比带有id的p更令人困惑或不清楚(通常是一些文本块)。我们都知道带ID的p是一个段落,但是谁知道创建的标记是用来干什么的呢?至少我是这么想的。:)因此,这更多的是一个风格/清晰度问题,而不是功能问题。
这对于html5来说是可行的,但是你需要考虑到旧的浏览器。
如果你决定使用它们,一定要注释你的html!!有些人可能很难弄清楚它是什么,所以注释可以节省他们大量的时间。
就像这样,
<!-- Custom tags in use, refer to their CSS for aid -->
当你创建自己的自定义标签/元素时,旧的浏览器将不知道这是什么,就像html5的元素如nav/section一样。
如果你对这个概念感兴趣,那么我建议你用正确的方法去做。
开始 自定义元素允许web开发人员定义新的HTML类型 元素。该规范是几个新的API原语之一 Web组件的保护伞,但它很可能是最 重要的。如果没有通过解锁的特性,Web组件就不存在 自定义元素: 定义新的HTML/DOM元素创建从其他元素扩展的元素 元素从逻辑上将自定义功能捆绑在一起 扩展现有DOM元素的API
您可以使用它做很多事情,并且它确实可以使您的脚本更漂亮,就像本文想说的那样。自定义元素在HTML中定义新元素。
让我们回顾一下,
Pros
非常优雅,易于阅读。 很高兴没有看到那么多的潜水者。: p 让代码有一种独特的感觉
Cons
较老的浏览器支持是需要考虑的重要因素。 如果不了解自定义标记,其他开发人员可能不知道该做什么。(向他们解释或添加评论告知他们) 最后要考虑的一件事,但我不确定,是块和内联元素。通过使用自定义标签,你最终会写更多的css,因为自定义标签不会有默认的一面。
选择完全取决于您,您应该根据项目的要求来选择。
更新1/2/2014
这里有一篇非常有用的文章,我发现并打算分享,自定义元素。
为什么要自定义元素?自定义元素让作者进行定义 他们自己的元素。作者将JavaScript代码与自定义标记相关联 名称,然后像使用任何标准一样使用这些自定义标记名称 标签。 例如,注册后的一种特殊按钮叫做 超级按钮,像这样使用超级按钮: 自定义元素仍然是元素。我们 能像其他的一样轻松地创建、使用、操纵和组合它们吗 今天的标准。
这似乎是一个非常好用的库,但我注意到它没有通过windows的构建状态。我相信这也是一个预alpha版本,所以我会密切关注它的发展。
其他人提出了很好的观点,但值得注意的是,如果你看看像AngularJS这样的框架,自定义元素和属性是非常有效的。它们不仅向xml传递更好的语义含义,而且还可以为web页面提供行为、外观和感觉。
他为什么不想让你用?它们既不常见,也不是HTML5标准的一部分。 从技术上讲,这是不允许的。他们就是个笨蛋。
不过我自己也喜欢。您可能对XHTML5感兴趣。它允许您定义自己的标记,并将它们作为标准的一部分使用。
此外,正如其他人指出的那样,它们是无效的,因此不能携带。
为什么他不知道他们的存在?我不知道,只知道它们不常见。可能他只是不知道你可以。
实际上你可以使用自定义元素。下面是关于这个主题的W3C规范:
http://w3c.github.io/webcomponents/spec/custom/
这里有一个教程来解释如何使用它们:
http://www.html5rocks.com/en/tutorials/webcomponents/customelements/
正如@Quentin所指出的:这是开发早期的规范草案,它对元素名称施加了限制。