将<li>...</li>
插入页面而不将项目括在<ul>
块中会有什么危险?例如:
<div style="border:solid 1px red;">
<li>Item</li>
<li>Another Item</li>
<li>Yet Another Item</li>
</div>
验证是我最不关心的问题,我想知道在浏览器中这可能会破坏最终用户按预期查看页面的能力。
答案 0 :(得分:34)
它根本不是有效的标记。如果它显示正确,那只是运气问题。
由于您似乎通过“在浏览器中断最终用户按预期查看页面的能力”来定义危险,然后是的,这很危险。
浏览器正在尽力弥补无效标记,但无法保证完全您的网页能够正确显示。
您说验证是您最不关心的问题,请重新考虑并查看Why Validate?。如果您关心的页面是否正确显示而没有怪癖,请验证。
最后,HTML Tidy可以帮助您修复现有的HTML。
编辑:I submitted your fragment to browsershots.org to see how it gets rendered by different browsers。
答案 1 :(得分:12)
使用像您的示例一样的无效标记可能会导致不同页面出现意外行为。如果您使用有效标记,浏览器将(或应该)根据规范显示您的内容。但是如果您使用无效标记,浏览器将尝试插入标记并显示页面它认为您认为它是的方式。有时他们会以你想要的方式展示它,有时却不会。以下是Mac上Firefox 3.5的示例。
第一个列表是您的代码,但使用正确的<ul>
标记替换<div>
标记。第二个列表是您的代码。请注意,第二个列表缺少左侧和项目符号的默认边距。
基本上,如果你使用这样的无效标记,什么都不会死,但这是非常糟糕的做法,因为它会导致意外和不一致的结果。
答案 2 :(得分:5)
这与在<td>
中使用<p>
标记相同。当然,它可能在某些浏览器上以某种方式工作,但它肯定会被打破。这种构造的行为是 undefined ,不能保证它在不同浏览器上的工作方式。更不用说可访问性,屏幕阅读器程序会对这种结构感到非常困惑。
为什么不能使用正确的<ul>
或<ol>
代码?它的样式和处理方式与<div>
相同。
答案 3 :(得分:2)
我无法理解为什么它不能正确显示,而它本身并不存在它会让它变好。
你应该把它放在<ul>
中,对你正在使用的标记有没有的好处,而不是正确地做。
答案 4 :(得分:2)
这与其他人的答案相呼应,部分原因是:对于任何标记,都有一个经验问题,即它在您正在测试它的浏览器上是否有效。您在所有浏览器上测试了它,并且您很高兴。这很酷,是工作的重要组成部分。
但除此之外,还有一个假设性的问题:它可能对您未经测试的浏览器平台组合有多好,因为:
对于这个迟早会变得相关的集合,您应该遵循标准 - 如果可能 - 并使用封闭的UL或OL标签(在这种情况下)。
还值得一提的是,如果您正在编写脚本,或者有人在您的页面上编写脚本(例如,Greasemonkey),它会使LI标记更容易被追踪。
答案 5 :(得分:1)
作为一名网页设计师/开发人员,当你开始编写即使是Frontpage或Microsoft Word也无法生成的HTML时,你就会知道。
遵守标准是双向的。如果我们希望浏览器开发人员创建快速,可靠和一致的渲染引擎,我们需要通过创建一致,干净和格式良好的HTML来满足它们。
答案 6 :(得分:0)
不同浏览器上的意外呈现行为? SEO?
答案 7 :(得分:0)
由浏览器实现决定如何处理它。 如果您真的想这样做,请在使用之前在所有想要支持的浏览器中进行测试。
另请注意,浏览器的行为可能会在将来发生变化。
答案 8 :(得分:0)
危险?它不会打击任何东西。如果布局对您很重要,可能会导致问题。
您只是不知道浏览器将如何呈现它。
答案 9 :(得分:0)
我无法想象你为什么不想放入<ul>
或<ol>
标签,他们会定义列表。然后,您可以控制列表的显示方式,而不是由浏览器决定,这很重要。错过它们只是写出无效的标记,是的,它会在某些浏览器中起作用,但是id肯定会让它们保留。
答案 10 :(得分:0)
大多数浏览器可能会接受并运行它,但是有两种不同的列表类型可用:无序&lt; ul&gt;和有序列表&lt; ol&gt;,其中有序列表包含每个项目的编号。
而不是使用&lt; li&gt;标签,您可以使用“•”项目符号(&amp; bull;),然后使用&lt; br /&gt;在每一行的末尾。
答案 11 :(得分:0)
我不会依赖于未指明的行为。只需将<div>
替换为<ul>
,然后使用CSS设置样式。