我想创造类似的东西
<menu>
<lunch>
<dish>aaa</dish>
<dish>bbb</dish>
</lunch>
<dinner>
<dish>ccc</dish>
</dinner>
</menu>
Run Code Online (Sandbox Code Playgroud)
可以在HTML5中完成吗?我知道我可以做到
<ul id="menu">
<li>
<ul id="lunch">
<li class="dish">aaa</li>
<li class="dish">bbb</li>
</ul>
</li>
<li>
<ul id="dinner">
<li class="dish">ccc</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
但它的可读性低得多:(
Tim*_*rez 145
您可以在浏览器中使用自定义标签,但它们不是HTML5(请参阅自定义元素是否有效HTML5?和HTML5规范).
假设您要使用名为的自定义标记元素<stack>.这是你应该做的......
步骤1
在CSS样式表中规范化其属性(想想css重置) - 示例:
stack{display:block;margin:0;padding:0;border:0; ... }
Run Code Online (Sandbox Code Playgroud)
第2步
通过将此脚本附加到头部,使其在旧版本的Internet Explorer中工作(重要!):
<!--[if lt IE 9]>
<script> document.createElement("stack"); </script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
然后,您可以自由使用自定义标签.
<stack>Overflow</stack>
Run Code Online (Sandbox Code Playgroud)
随意设置属性...
<stack id="st2" class="nice"> hello </stack>
Run Code Online (Sandbox Code Playgroud)
mar*_*rio 26
我对这些答案不太确定.正如我刚刚读到的那样:"在HTML中总是允许标记."
http://www.crockford.com/html/
这里的重点是,HTML基于SGML.与具有其文档类型和模式的XML不同,如果浏览器不知道一个或两个标记,则HTML不会变为无效.想想<marquee>.这还没有达到官方标准.因此,虽然使用它使您的HTML页面"正式未经批准",但它也没有打破页面.
然后是<keygen>,它是特定于Netscape的,在HTML4中被遗忘并重新发现,现在在HTML5中指定.此外,我们现在还有自定义标记属性,例如所有HTML5标记上允许的数据-XyZzz ="...".
因此,虽然您不应该发明自己的整个自定义未指定标记沙拉,但并不完全禁止在HTML中使用自定义标记.但是,除非您希望使用+ xml Content-Type发送它或嵌入其他XML命名空间,例如SVG或MathML.这仅适用于SGML限制的HTML.
正如迈克尔在评论中所说,你想要做的事情很有可能,但你的命名是错误的.您不是"向HTML 5添加标记",而是使用自己的标记创建新的XML文档类型.
我在上一份工作中为一些项目做了这个.一些实用的建议:
当你说你想"将它们添加到HTML 5"时,我假设你真正想要的是你希望页面在现代浏览器中正确显示,而不必在服务器端做很多工作.这可以通过在xml文件的顶部插入"样式表处理指令"来完成,例如<?xml-stylesheet type ="text/xsl"href ="menu.xsl"?>.将"menu.xsl"替换为您创建的XSL样式表的路径,以将自定义标记转换为HTML.
注意事项:您的文件必须是格式良好的XML文档,包含XML标头<xml version ="1.0">.关于诸如不匹配的标签之类的东西,XML比HTML更挑剔.此外,与HTML不同,标签区分大小写.您还必须确保Web服务器正在使用适当的mime类型"application/xml"发送文件.如果文件扩展名为".xml",Web服务器通常会配置为自动执行此操作,但请检查.
Big Caveat:最后,正如我所描述的那样,使用浏览器的自动XSL转换,最好只用于调试以及有很多控制权的有限应用程序.我成功地在我的上一个雇主那里建立了一个简单的内联网,最多只能由几十个人访问.并非所有浏览器都支持XSL,并且那些浏览器不支持完全兼容的实现.因此,如果要将页面发布到"狂野"中,最好将它们全部转换为服务器端的HTML,这可以通过命令行工具或许多XML编辑器中的按钮来完成.
在HTML中创建自己的标记名称是不可能/无效的.这就是XML,SGML和其他通用标记语言的用途.
你可能想要的是什么
<div id="menu">
<div id="lunch">
<span class="dish">aaa</span>
<span class="dish">bbb</span>
</div>
<div id="dinner">
<span class="dish">ccc</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
或代替<div/>,并<span/>像<ul/>和<li/>.
为了使它看起来和功能正确,只需挂钩一些CSS和Javascript.
小智 5
自定义标签可以在 Safari、Chrome、Opera 和 Firefox 中使用,至少就使用它们代替“class=...”而言是这样。
css 中的绿色 {color: green} 适用于
<green>This is some text.</green>
Run Code Online (Sandbox Code Playgroud)
小智 5
我只想在前面的答案中添加一个含义,即只为自定义元素使用双字标签.它们永远不应该标准化.
例如,你想使用标签<icon>,因为你不喜欢<img>,而你也不喜欢<i>......
好吧,请记住,你不是唯一一个.也许在将来,w3c和/或浏览器将指定/实现此标记.
此时,浏览器可能会为此标记实现本机样式,并且您的网站设计可能会中断.
所以我建议使用(根据这个例子)<img-icon>.
事实上,标签<menu>是明确定义的,即不是如此使用,而是定义.它应该包含<menuitem>哪些行为<li>.
| 归档时间: |
|
| 查看次数: |
86307 次 |
| 最近记录: |