2010-05-20 5 views
3

Может ли кто-нибудь объяснить мне, почему <ul> elementa не может быть пустым?Пустой UL внутри элемента LI

И почему этот HTML:

<ul> 
    <li class="header"> 
     <a href="#">Work</a> 
     <ul/> 
    </li> 
    <li class="header"> 
     <a href="#">New</a> 
     <ul/> 
    </li> 
    <li class="header"> 
     <a href="#">Ungrouped</a> 
     <ul/> 
    </li> 
    <li class="header"> 
     <a href="#">Offline</a> 
     <ul/> 
    </li> 
</ul> 

визуализируется как это:

  • Работа
    • Новый
      • разгруппирована
        • Оффлайн
+0

Этот HTML или XHTML? Это область, где они различаются. –

ответ

7

<ul> не является допустимым самозакрывающиеся теги, так браузеры могут относиться к нему, как если бы он не был надлежащим образом закрыт. Вы всегда должны использовать тег закрытия </ul>.

Для получения списка допустимых тегов самозакрывающиеся, см:

What are all the valid self-closing elements in XHTML (as implemented by the major browsers)?

+0

Собственно, это сработает:

    . Таким образом, он может быть пустым, но не без закрывающего тега – zorglub76

    +1

    Браузеры, похоже, не беспокоят пустые UL, но валидатор w3c выдаст «Line n, Column n: end tag для« ul », который не завершен» , – rob

    1

    Поскольку браузеры (как правило) не поддерживают самостоятельное закрытие тегов XML-стиль. Это будет работать:

    <ul> 
        <li class="header"> 
         <a href="#">Work</a> 
         <ul></ul> 
        </li> 
        <li class="header"> 
         <a href="#">New</a> 
         <ul></ul> 
        </li> 
        <li class="header"> 
         <a href="#">Ungrouped</a> 
         <ul></ul> 
        </li> 
        <li class="header"> 
         <a href="#">Offline</a> 
         <ul></ul> 
        </li> 
    </ul> 
    

    Для получения более подробной информации см: Can a span be closed using <span />?

    +1

    В этом случае «обычно» означает, по крайней мере, Firefox, Safari, Opera, Chrome и IE8 ... :) – zorglub76

    +0

    @ zorglub76 - я никогда не тестировал его, но связанный с ним вопрос предполагает, что он будет хорошо работать с другим типом mime: 'text/xml' вместо' text/html' - который обслуживает большинство серверов. – Kobi

    3

    Что такое звук хлопка одной ладони?

    Список с нулевыми элементами в нем не имеет смысла с точки зрения документа, а HTML - язык разметки документа.

    Спецификация поэтому defines a list как требуется хотя бы один элемент списка.

    <!ELEMENT UL - - (LI)+     -- unordered list --> 
    

    Что касается вашего второго вопроса, то в HTML Совместимый XHTML only elements which are defined as being EMPTY (то есть те, в которых конечный тег запрещенный в HTML) может (и должен) использовать самозакрывающихся синтаксис тэга.

    +0

    В нем говорится: «(LI) +», но во всех основных браузерах «

      » работает ... – zorglub76

      +4

      Это потому, что браузеры предназначены для того, чтобы справиться с огромным количеством дерьма, написанного людьми, которые не знают HTML. – Quentin

      Смежные вопросы