Правильный способ составления списков

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

Способ 1

<ol>
    <li>List item 1</li>
    <li>List item 2
        <ol>
            <li>List item 3</li>
        </ol>
    </li>
    <li>List item 4</li>
</ol>

Мне это кажется семантически правильным, поскольку подсписок является подсписком этого элемента списка, однако он не очень чистый (элемент списка Content<list right next to it>).

Способ 2

<ol>
    <li>List item 1</li>
    <li>List item 2</li>
        <ol>
            <li>List item 3</li>
        </ol>
    <li>List item 4</li>
</ol>

Более чистый, но это не совсем понятно, список является подсписком пункта 2 (хотя это понятно с точки зрения человека).

Между прочим, это чисто проблема семантической разметки, оба метода представляют одно и то же содержимое на странице.

Итак, что вы думаете? Источники там, где это возможно, предпочтительнее, но личное использование тоже хорошо. Я заметил, что наследственные оглавления MediaWiki используют метод 1, который побуждает меня верить, что это правильное использование.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
4
0
1 155
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Метод 1 правильный.

Ответ принят как подходящий

Метод 2 недействителен HTML. OL не может быть прямым потомком другого элемента OL. В LI разрешен только OL.

Кроме того, принадлежность подсписка к пункту 2 очевидна только человеку-читателю из-за отступа. Сделайте отступ даже с помощью LI, и будет казаться, что внутренний список сам является третьим элементом. Я мог бы ожидать такой рендеринга с двумя числами:

1. List item 1
2. List item 2
3. 1. List item 3
4. List item 4

Метод 1 - это то, что вам нужно.

И если вас действительно беспокоит выравнивание текстового содержимого по отношению к содержимому элемента ("<li> Элемент списка 2 <ol> ...") по эстетическим причинам (и это действительно все, что сводится к эстетике) , оберните текстовое содержимое отрезком ("<li> <span> Элемент списка 2 </span> <ol> ..."). Однако в этом нет необходимости.

Chris 17.11.2009 14:49

HTML 4.01 разрешает только элементы LI в OL. Однако закрывающий тег LI необязателен. Это означает, что это эквивалентно вашему методу 1:

<ol>
   <li>List item 1
   <li>List item 2
      <ol>
        <li>List item 3
      </ol>
   <li>List item 4
</ol>

Читателю будет несколько двусмысленно, где находятся закрывающие LI - хотя в спецификации ясно, что это будет после закрывающим OL.

XHTML 1.1 имеет те же ограничения, но заставляет использовать закрывающий LI, чтобы сделать его явным.

Другие вопросы по теме