【问题标题】:Is it possible to make up HTML Tags? [duplicate]是否可以组成 HTML 标签? [复制]
【发布时间】:2011-09-06 00:32:18
【问题描述】:

是什么阻止了我这样做:

<head>    
<style type="text/css">
red{
    display:block;
    background:red;
    height:20px;
    width:20px;
}
</style>
</head>
<body>

<red></red>

这行得通吗?什么会阻止它?

据我了解,浏览器会根据选择器规则找到并匹配 css 样式,只要您指定所有必需的规则(我敢肯定还有更多),是什么阻止我看到屏幕上有一个小红框?

【问题讨论】:

  • 在 HTML5 中这是可以的。在那里你可以发明你自己的标签。在 Xhtml 和 HTML
  • @faileN - 是的,我知道 body 和 html 标签,只是懒得放下所有东西......只要问题得到了理解...... :-)
  • @faileN — 请指出 HTML 5 规范中说你可以组成新元素的部分。我很确定它不存在。
  • 编辑回复:您在 GoogleBot 中尝试过吗?你在 JAWS 中试过吗?您在 Internet Explorer 7 中尝试过吗?还是 8 个?
  • @GeorgeStocker 为什么你用一个较新的问题来结束一个较旧的问题?

标签: html css


【解决方案1】:

这是可能的,但不会在所有开箱即用的浏览器上运行,尽管它们会在一定程度上支持它。如果您真的想创建自己的 HTML 标记子集,您应该考虑为它创建自己的 DTD。

DTD 是一种文档类型定义,基本上是浏览器读取的文件,以查看在您的特定 html 标记语言子集中可用的标签。

This article 描述了如何创建您自己的 DTD,但它是 not recommended 这样做的,因为它不是有效的 HTML。

【讨论】:

  • 拥有一个 &lt;red&gt; 元素对其有效的 DTD 不会使该元素成为 HTML 或改进浏览器对它的支持。
  • 否,但它会防止您的页面无法验证您的 DTD 中定义的新 HTML 方言。如果你的浏览器实现了正确的规范,它也应该允许 css 为这些新元素设置样式,但众所周知,情况并非总是如此。
【解决方案2】:

它应该可以工作,但是,除非您还创建了自定义 DTD,否则这将导致您的 HTML 无法验证。

【讨论】:

  • 请原谅我在这里的无知,但是DTD?
  • DocType 声明。您正在告诉浏览器您的文件是什么类型的文档并将其链接到架构,以便它知道什么是可接受(有效)和什么不是可接受的“规则”。
  • DTD 不是模式,浏览器不关心 DTD,实际上只有验证器才关心。
  • 我知道当我说架构时它听起来不太正确。浏览器可能不在乎,但这仍然是声明文档类型的目的。
  • Wait wait... 如果浏览器不关心,它仍然会遵守 css 定义的渲染规则,实际上,最终用户将无法告诉区别?只有“标准验证器”才能解决这个问题?
【解决方案3】:

是否可以组成html标签?

您可以加入the working group并提出新元素。

这行得通吗?

对于“工作”的某些定义,即 Internet Explorer、屏幕阅读器、搜索引擎等敌对。

但它不会是 HTML。

HTML 有各种各样有用的语义元素(以及一些非语义元素),可以通过 class 属性进行扩展(可能(我还没有仔细看)role在(草案)HTML 5 规范中)。坚持那些。

【讨论】:

  • 大声笑,伙计,不要误会我的意思,我不打算仅仅因为桌子不是 11 英寸就走进树林......我很好奇这个,因为有某些元素结构(类似于我反复使用的
    ,我发现一次又一次地重复
    相当麻烦......
  • 使用模板/宏/等来处理你觉得麻烦的事情。不要尝试自己重新设计 HTML。
  • @Quentin - 虽然我同意你的观点,即需要一个通用标准,但自定义标签的空间仅适用于某些人群......考虑一下,我使用很多浮动框,后面的屏幕变暗,以显示有关某些事物的更多信息......就像更大版本的缩略图......这样做需要我重复地声明一个
    ...... . HTML5 解决了与
    标签非常相似的问题,通用属性适用...我只是在寻找相同的,但对我来说更“定制”... :-)
  • 您正在向 WWW 提供内容。你需要遵守万维网的规则。你可以私下做任何你喜欢的事情(包括使用模板、宏等),但是如果你开始在公共场合发布非标准的东西,它迟早会让你绊倒(尤其是当人们用 Internet Explorer 击中它时) .
  • @Quentin - 在 HTML5 中不是 role。与 XHTML2 相比,HTML5 中的 role 属性仅限于 WAI-ARIA 角色,因此只允许使用短的、固定的值集。此处描述了 HTML5 的扩展点:w3.org/TR/html5/infrastructure.html#extensibility
【解决方案4】:

虽然在为它提供 css 规则时会显示红色元素,但它在您的文档中仍然是一个外星人。例如,您的浏览器不会像往常一样识别 id、class 或 style 等属性。因此,您无法在脚本中通过 id 获取元素,也无法通过 CSS 中的类选择器设置元素的样式。但是,XmlDom 方法(如 getElementsByTagName)可以工作。引入红色元素时请注意这一点。

【讨论】:

  • 当然,这不是一种生产预期的方法,这是我偶然发现的并变得好奇的东西。但是,是的,在尝试使用 HTML 标准“玩 W3C”时,我已经学会了足够的谨慎......
【解决方案5】:

我可以建议一种使用替换的 PHP 技巧。

<?
  function red_rpl($buffer)
  {
    $buffer = str_replace('<red>', '<div class="red">', $buffer);
    $buffer = str_replace('</red>', '</div>', $buffer);
  return $buffer;
  }
  ob_start('red_rpl');
?>

<style>
  .red {
    display:block;
    background:red;
    height:20px;
    width:20px;
  }
</style>

<red></red>

当然,DOM 中不会有任何新标签,但你的源文件会看起来更漂亮:)

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签