使用<li>而不包含<ul>标签危险吗?</ul> </li>

时间:2010-01-09 00:23:12

标签: html html-lists

<li>...</li>插入页面而不将项目括在<ul>块中会有什么危险?例如:

<div style="border:solid 1px red;">
    <li>Item</li>
    <li>Another Item</li>
    <li>Yet Another Item</li>
</div>

验证是我最不关心的问题,我想知道在浏览器中这可能会破坏最终用户按预期查看页面的能力。

12 个答案:

答案 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的示例。

alt text

第一个列表是您的代码,但使用正确的<ul>标记替换<div>标记。第二个列表是您的代码。请注意,第二个列表缺少左侧和项目符号的默认边距。

基本上,如果你使用这样的无效标记,什么都不会死,但这是非常糟糕的做法,因为它会导致意外和不一致的结果。

答案 2 :(得分:5)

这与在<td>中使用<p>标记相同。当然,它可能在某些浏览器上以某种方式工作,但它肯定会被打破。这种构造的行为是 undefined ,不能保证它在不同浏览器上的工作方式。更不用说可访问性,屏幕阅读器程序会对这种结构感到非常困惑。

为什么不能使用正确的<ul><ol>代码?它的样式和处理方式与<div>相同。

答案 3 :(得分:2)

我无法理解为什么它不能正确显示,而它本身并不存在它会让它变好。

你应该把它放在<ul>中,对你正在使用的标记有没有的好处,而不是正确地做。

答案 4 :(得分:2)

这与其他人的答案相呼应,部分原因是:对于任何标记,都有一个经验问题,即它在您正在测试它的浏览器上是否有效。您在所有浏览器上测试了它,并且您很高兴。这很酷,是工作的重要组成部分。

但除此之外,还有一个假设性的问题:它可能对您未经测试的浏览器平台组合有多好,因为:

  1. 您没有将它们包含在测试集中
  2. 它们尚不存在或
  3. 它们不可用于测试(例如网络抓取工具)
  4. 对于这个迟早会变得相关的集合,您应该遵循标准 - 如果可能 - 并使用封闭的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设置样式。