在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。
例子:
imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >
当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。
为什么我的教授不让我使用合成元素?他们工作效率很高。
另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?
在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。
例子:
imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >
当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。
为什么我的教授不让我使用合成元素?他们工作效率很高。
另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?
当前回答
根据规格:
CSS
类型选择器是使用CSS限定名称语法编写的文档语言元素类型的名称
我以为这是元素选择器,但显然它实际上是类型选择器。规范继续讨论了CSS限定名称,它对名称的实际内容没有任何限制。也就是说,只要类型选择器匹配CSS限定名称语法,它就是技术上正确的CSS,并将匹配文档中的元素。对于特定规范(HTML或其他规范)中不存在的元素,没有特定于css的限制。
HTML
在文档中包含您想要的任何标签没有官方限制。但是,文档确实说了
作者不能将元素、属性或属性值用于其适当的预期语义目的以外的目的,因为这样做会妨碍软件正确处理页面。
然后它说
作者不能使用本规范或其他适用规范不允许的元素、属性或属性值,因为这样做会大大增加将来扩展该语言的难度。
我不确定具体在哪里或者规范是否说未知元素是允许的,但它确实谈到了HTMLUnknownElement接口的未知元素。有些浏览器甚至不能识别当前规范中的元素(我想到了IE8)。
虽然有一个自定义元素的草案,但我怀疑它还没有在任何地方实现。
其他回答
实际上你可以使用自定义元素。下面是关于这个主题的W3C规范:
http://w3c.github.io/webcomponents/spec/custom/
这里有一个教程来解释如何使用它们:
http://www.html5rocks.com/en/tutorials/webcomponents/customelements/
正如@Quentin所指出的:这是开发早期的规范草案,它对元素名称施加了限制。
博士TL;
自定义标记在HTML中无效。这可能会导致渲染问题。 使将来的开发更加困难,因为代码不可移植。 有效的HTML提供了很多好处,比如SEO、速度和专业性。
长回答
有一些争论认为带有自定义标记的代码更有用。
但是,这会导致无效的HTML。这对你的网站不好。
有效的CSS/HTML | StackOverflow的要点
谷歌更喜欢它,所以它对SEO有好处。 它使你的网页更有可能在你没有测试过的浏览器上运行。 它让你看起来更专业(至少对一些开发人员来说) 兼容的浏览器可以更快地呈现[有效的HTML] 它指出了一堆你可能忽略的、影响你可能没有测试的东西的模糊错误,例如代码页或页面的语言集。
为什么验证| W3C
作为调试工具的验证 验证作为一种面向未来的质量检查 验证简化了维护 验证有助于教授好的实践 认可是专业的标志
从早期开始,CSS就被设计为与标记无关的,因此它可以与任何标记语言一起使用,生成类似DOM结构的树(例如SVG)。任何符合名称令牌生成的标记在CSS中都是完全有效的。所以你的问题是关于HTML而不是CSS本身。
HTML5规范支持带有自定义标记的元素。HTML5标准化了DOM中解析未知元素的方式。所以严格来说,HTML5是第一个支持自定义元素的HTML规范。你只需要使用HTML5 doctype <!文档中的DOCTYPE html>。
至于自定义标签名称本身……
本文档http://www.w3.org/TR/custom-elements/建议您选择的自定义标记至少包含一个“-”(破折号)符号。这样它们就不会与将来的HTML元素冲突。因此,你最好把你的文档修改成这样:
<style>
so-cool {
color:blue;
}
</style>
<body>
<so-cool>HELLO</so-cool>
</body>
我认为编造的标签可能比带有id的p更令人困惑或不清楚(通常是一些文本块)。我们都知道带ID的p是一个段落,但是谁知道创建的标记是用来干什么的呢?至少我是这么想的。:)因此,这更多的是一个风格/清晰度问题,而不是功能问题。
现代浏览器将未知元素视为div。这就是它们有效的原因。这是即将到来的HTML5标准的一部分,该标准引入了模块化结构,可以向其中添加新元素。
在较老的浏览器(我认为是IE7-)中,你可以应用javascript技巧,之后它们也能正常工作。
下面是我在寻找例子时发现的一个相关问题。
这里有一个关于Javascript修复的问题。事实证明IE7确实不支持这些开箱即用的元素。
也;为什么他不知道自制标签的存在和CSS的工作。它们不常见吗?
是的,相当。但特别的是:它们没有额外的用途。他们是html5的新手。在HTML的早期版本中,未知标记是无效的。
Also, teachers seem to have gaps in their knowledge, sometimes. This might be due to the fact that they need to teach students the basics about a given subject, and it doesn't really pay off to know all ins and outs and be really up to date. I once got detention because a teacher thought I programmed a virus, just because I could make a computer play music using the play command in GWBasic. (True story, and yes, long ago). But whatever the reason, I think the advice not to use custome elements is a sound one.