在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。
例子:
imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >
当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。
为什么我的教授不让我使用合成元素?他们工作效率很高。
另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?
在我的课上,我玩了一下,发现CSS与虚构的元素一起工作。
例子:
imsocool { 颜色:蓝色; } < imsocool >你好< / imsocool >
当我的教授第一次看到我使用它时,他有点惊讶于虚构元素的工作,并建议我简单地将所有的虚构元素更改为带有ID的段落。
为什么我的教授不让我使用合成元素?他们工作效率很高。
另外,为什么他不知道存在虚构元素,并与CSS一起工作。它们不常见吗?
当前回答
令人惊讶的是,没有人(包括我过去的自己)提到可访问性。使用有效标记而不是自定义标记的另一个原因是为了与最大数量的软件兼容,包括屏幕阅读器和人们出于可访问性目的所需的其他工具。此外,像WAI这样的可访问性法律要求建立可访问的网站,这通常意味着要求他们使用有效的标记。
显然没人提过,所以我来。
这是浏览器大战的副产品。
回到20世纪90年代,当互联网刚开始成为主流时,浏览器市场的竞争加剧了。为了保持竞争力和吸引用户,一些浏览器(最著名的Internet Explorer)试图通过试图弄清楚页面设计者的意思来提供帮助和“用户友好”,从而允许不正确的标记(例如,<b><i>foobar</b></i>将正确地呈现为粗体-斜体)。
这在某种程度上是有道理的,因为如果一个浏览器不断抱怨语法错误,而另一个浏览器接受你扔给它的任何东西,并吐出一个(或多或少)正确的结果,那么人们自然会涌向后者。
While many thought the browser wars were over, a new war between browser vendors has reignited in the past few years since Chrome was released, Apple started growing again and pushing Safari, and IE lost its dominance. (You could call it a “cold war” due to the perceived cooperation and support of standards by browser vendors.) Therefore, it is not a surprise that even contemporary browsers which supposedly conform strictly to web standards actually try to be “clever” and allow standard-breaking behavior such as this in order to try to gain an advantage as before.
不幸的是,这种放任行为导致了大量(有些人甚至认为是恶性的)标记不良的网页的增长。因为IE是最宽容、最受欢迎的浏览器,而且由于微软对标准的持续蔑视,IE因鼓励和推广糟糕的设计、传播和延续坏页面而臭名昭著。
现在你可能可以在一些浏览器上使用这样的怪癖和漏洞,但除了偶尔的谜题或游戏或其他东西,在创建网页和网站时,你应该始终坚持网页标准,以确保它们正确显示,并避免它们在浏览器更新时被破坏(可能完全被忽略)。
其他回答
现代浏览器将未知元素视为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.
人们很少使用自制的标记,因为它们不太可能在当前的每个浏览器和未来的每个浏览器中都可靠地工作。
浏览器必须将HTML代码解析为它所知道的元素,然后将生成的标记转换为适合文档对象模型(DOM)的其他内容。由于web标准没有涵盖如何处理标准之外的所有内容,web浏览器倾向于以不同的方式处理非标准代码。
在不增加不确定性元素的情况下,使用一堆不同的浏览器进行Web开发已经足够棘手了,这些浏览器都有自己的怪癖。最好的办法是坚持那些标准中的东西,那是浏览器供应商试图遵循的,所以它有最好的机会实际工作。
根据规格:
CSS
类型选择器是使用CSS限定名称语法编写的文档语言元素类型的名称
我以为这是元素选择器,但显然它实际上是类型选择器。规范继续讨论了CSS限定名称,它对名称的实际内容没有任何限制。也就是说,只要类型选择器匹配CSS限定名称语法,它就是技术上正确的CSS,并将匹配文档中的元素。对于特定规范(HTML或其他规范)中不存在的元素,没有特定于css的限制。
HTML
在文档中包含您想要的任何标签没有官方限制。但是,文档确实说了
作者不能将元素、属性或属性值用于其适当的预期语义目的以外的目的,因为这样做会妨碍软件正确处理页面。
然后它说
作者不能使用本规范或其他适用规范不允许的元素、属性或属性值,因为这样做会大大增加将来扩展该语言的难度。
我不确定具体在哪里或者规范是否说未知元素是允许的,但它确实谈到了HTMLUnknownElement接口的未知元素。有些浏览器甚至不能识别当前规范中的元素(我想到了IE8)。
虽然有一个自定义元素的草案,但我怀疑它还没有在任何地方实现。
令人惊讶的是,没有人(包括我过去的自己)提到可访问性。使用有效标记而不是自定义标记的另一个原因是为了与最大数量的软件兼容,包括屏幕阅读器和人们出于可访问性目的所需的其他工具。此外,像WAI这样的可访问性法律要求建立可访问的网站,这通常意味着要求他们使用有效的标记。
显然没人提过,所以我来。
这是浏览器大战的副产品。
回到20世纪90年代,当互联网刚开始成为主流时,浏览器市场的竞争加剧了。为了保持竞争力和吸引用户,一些浏览器(最著名的Internet Explorer)试图通过试图弄清楚页面设计者的意思来提供帮助和“用户友好”,从而允许不正确的标记(例如,<b><i>foobar</b></i>将正确地呈现为粗体-斜体)。
这在某种程度上是有道理的,因为如果一个浏览器不断抱怨语法错误,而另一个浏览器接受你扔给它的任何东西,并吐出一个(或多或少)正确的结果,那么人们自然会涌向后者。
While many thought the browser wars were over, a new war between browser vendors has reignited in the past few years since Chrome was released, Apple started growing again and pushing Safari, and IE lost its dominance. (You could call it a “cold war” due to the perceived cooperation and support of standards by browser vendors.) Therefore, it is not a surprise that even contemporary browsers which supposedly conform strictly to web standards actually try to be “clever” and allow standard-breaking behavior such as this in order to try to gain an advantage as before.
不幸的是,这种放任行为导致了大量(有些人甚至认为是恶性的)标记不良的网页的增长。因为IE是最宽容、最受欢迎的浏览器,而且由于微软对标准的持续蔑视,IE因鼓励和推广糟糕的设计、传播和延续坏页面而臭名昭著。
现在你可能可以在一些浏览器上使用这样的怪癖和漏洞,但除了偶尔的谜题或游戏或其他东西,在创建网页和网站时,你应该始终坚持网页标准,以确保它们正确显示,并避免它们在浏览器更新时被破坏(可能完全被忽略)。
博士TL;
自定义标记在HTML中无效。这可能会导致渲染问题。 使将来的开发更加困难,因为代码不可移植。 有效的HTML提供了很多好处,比如SEO、速度和专业性。
长回答
有一些争论认为带有自定义标记的代码更有用。
但是,这会导致无效的HTML。这对你的网站不好。
有效的CSS/HTML | StackOverflow的要点
谷歌更喜欢它,所以它对SEO有好处。 它使你的网页更有可能在你没有测试过的浏览器上运行。 它让你看起来更专业(至少对一些开发人员来说) 兼容的浏览器可以更快地呈现[有效的HTML] 它指出了一堆你可能忽略的、影响你可能没有测试的东西的模糊错误,例如代码页或页面的语言集。
为什么验证| W3C
作为调试工具的验证 验证作为一种面向未来的质量检查 验证简化了维护 验证有助于教授好的实践 认可是专业的标志