阻止我这样做的原因是什么:
<head>
<style type="text/css">
red{
display:block;
background:red;
height:20px;
width:20px;
}
</style>
</head>
<body>
<red></red>
这会有用吗?什么会阻止它?
根据我的理解,浏览器会根据选择器规则找到并匹配css样式,只要你指定所有必需的规则(我确定还有更多),什么阻止我看到屏幕上有一个小红框?
答案 0 :(得分:6)
虽然可以对所有浏览器提供一定程度的支持,但它可能会在开箱即用的所有浏览器中运行。如果您真的想要创建自己的HTML标记子集,那么您应该考虑为它创建自己的DTD。
DTD是一种文档类型定义,它基本上是浏览器读取的文件,用于查看html标记语言的特定子集中可用的标记。
This article介绍了如何创建自己的DTD,但这样做not recommended,因为它不是有效的HTML。
答案 1 :(得分:3)
它应该可行,但是,除非您还创建自定义DTD,否则这将导致HTML无法验证。
答案 2 :(得分:2)
是否可以组成html标签?
您可以加入the working group并提出新元素。
这会有用吗?
对于某些“工作”的定义,即Internet Explorer,屏幕阅读器,搜索引擎等敌对。
它不会是HTML。
HTML有各种各样有用的语义元素(以及一些非语义元素),可以通过class
属性扩展(,并且可能(我没有仔细观察){ (草案)HTML 5规范中的{1}} )。坚持那些。
答案 3 :(得分:1)
虽然为其提供css规则时会显示红色元素,但它仍然是文档中的外星人。例如,您的浏览器将无法像往常一样识别id,class或style等属性。因此,您无法在脚本中通过id获取元素,并且您无法通过CSS中的类选择器设置元素的样式。但是,像getElementsByTagName这样的XmlDom方法可以正常工作。在引入红色元素时要注意这一点。
答案 4 :(得分:0)
我可以建议使用替换的一个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中不会有任何新标记,但您的源文件看起来会更漂亮:)