【问题标题】:How can I produce an nested list in XHTML strict without giving the nested lists first element a double bullet?如何在 XHTML strict 中生成嵌套列表而不给嵌套列表的第一个元素一个双项目符号?
【发布时间】:2011-01-15 04:03:39
【问题描述】:

我正在尝试使用 XHTML Strict 1.0 创建一个嵌套在列表中的列表。问题是对于 XHTML 严格来说,一个 ul 元素不能直接嵌套在另一个 ul 元素中。因此,内部 ul 元素必须嵌套在 li 元素中。但是,当这样做时,内部列表的第一行会得到一个双重项目符号,如下面的示例所示。所以现在 B 得到了一个双子弹,因为外部和内部 li 元素都创建了一个子弹。有谁知道如何在 CSS 中解决这个问题,以便 B 用作嵌套列表,但只有一个项目符号?谢谢!

  • 一个
    • B
    • C
    • D
  • E
    • F
    • L
    • H

上面例子的 XHTML:

<ul>
    <li>A</li>
    <li>
        <ul>
            <li>B</li>
            <li>C</li>
            <li>D</li>
        </ul>
    </li>
    <li>E</li>
    <li>
        <ul>
            <li>F</li>
            <li>L</li>
            <li>H</li>
        </ul>
    </li>
</ul>

【问题讨论】:

标签: css xhtml xhtml-1.0-strict


【解决方案1】:
 ul ul > li:first-child { list-style-type: none; }

【讨论】:

  • 删除第二组项目符号,而不是第一组。
  • 同意——在这种情况下,您要删除的项目符号来自 ul ul。然后你必须处理额外的缩进。
【解决方案2】:

这是有效的 XHTML 严格。额外的好处是,与将嵌套列表放在单独的列表项中相比,这实际上在语义上更能描述嵌套,因为(“B”,“C”,“D”到父“A”)之间的关系由描述这个标记。

有一个关于使用定义列表 (dl) 的建议,但您应该只按预期使用它(即,如果您正在显示定义列表!)

  • 一个
    • B
    • C
    • D
  • E
    • F
    • L
    • H
<ul>
    <li>A
        <ul>
            <li>B</li>
            <li>C</li>
            <li>D</li>
        </ul>
    </li>
    <li>E
        <ul>
            <li>F</li>
            <li>L</li>
            <li>H</li>
        </ul>
    </li>
</ul>

【讨论】:

  • 你说得对,这行得通。请注意(如下面的@Juraj Blahunka 注释),除了嵌套的“li”的项目符号之外,每个嵌套的“ul”还添加了一个项目符号。默认情况下,它不会像您的示例那样呈现。
  • 只是为了清楚起见 - 绝对不需要 CSS。建议的 CSS 修复是双重破解,因为仅当标记将嵌套列表放置在空的 &lt;li&gt; 元素中时才需要它,您不需要这样做。仔细检查原始问题中的 HTML 与此答案中的 HTML 之间的区别。 jsfiddle.net/g1neb028
猜你喜欢
  • 2014-11-06
  • 1970-01-01
  • 2013-12-24
  • 2021-04-21
  • 2018-05-30
  • 1970-01-01
  • 2023-03-29
  • 2013-04-05
  • 2021-08-25
相关资源
最近更新 更多