it-swarm.com.ru

Опасно ли использование <li> без вложенных тегов <ul>?

В чем опасность вставки <li>...</li> на страницу без включения элементов в блок <ul>? Например:

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

Валидация - это наименьшее из моих опасений, мне интересно, что это может сломать в браузерах, чтобы конечный пользователь мог просматривать страницу как задумано.

29
jball

Это недействительная разметка вообще. Если он отображается правильно, это только вопрос удачи. 

Поскольку вы, по-видимому, определяете «опасно», «ломая в браузерах возможность конечного пользователя просматривать страницу как задумано», тогда да, это опасно.

Браузеры делают все возможное, чтобы компенсировать неправильную разметку, но нет никакой гарантии вообще, ваша страница отображается правильно.

Вы говорите, что проверка является наименьшей из ваших проблем, пожалуйста, пересмотрите и посмотрите на Зачем проверять? . Если вы заботитесь о том, чтобы ваша страница отображалась правильно, без каких-либо причуд, подтвердите.

Наконец, HTML Tidy может помочь вам исправить существующие HTML.

Правка: Я отправил ваш фрагмент на browsershots.org, чтобы увидеть, как он обрабатывается различными браузерами .

34
Gregory Pakosz

Использование недопустимой разметки, как в вашем примере, может вызвать неожиданное поведение на разных страницах. Если вы используете допустимую разметку, браузеры будут (или должны) отображать ваш контент в соответствии со спецификацией. Но если вы используете недопустимую разметку, браузер попытается интерпретировать разметку и отобразит страницу так, как он думает, что вы имели в виду . Иногда они будут отображать это так, как вы хотите, иногда нет. Вот пример из Firefox 3.5 на Mac.

alt text

Первый список - это ваш код, но с правильным тегом <ul>, заменяющим тег <div>. Второй список - это ваш код. Обратите внимание, что во втором списке отсутствуют поля по умолчанию слева и маркеры.

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

12
NerdStarGamer

Это то же самое, что использование тегов <td> внутри <p>. Конечно, он может работать как-то в некоторых браузерах, но он точно будет сломан. Поведение такой конструкции - undefined , нет гарантий того, как она будет работать в разных браузерах. Не говоря о доступности, программы чтения с экрана были бы весьма озадачены такой структурой.

Почему вы не можете использовать правильный тег <ul> или <ol>? Он может быть стилизован и обрабатывать так же, как <div>.

5
Tatu Ulmanen

Я не могу понять, почему он не будет отображаться правильно, хотя он не должен существовать сам по себе, он будет отображаться нормально.

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

2
JP Silvashy

Отчасти это повторяет ответ всех остальных: с любой разметкой возникает эмпирический вопрос о том, работает ли она в браузерах, на которых вы ее тестируете. Вы протестировали его на всех ваших браузерах, и вы довольны. Это круто и это огромная часть работы.

Но помимо этого, есть также гипотетический вопрос о том, насколько хорошо он может работать с комбинациями браузер-платформа, которые вы еще не тестировали, потому что:

  1. вы не включили их в тестовый набор
  2. они еще не существуют или
  3. они недоступны для тестирования (например, веб-сканеры)

Для этого набора, который всегда становится релевантным рано или поздно, вы должны следовать стандартам - когда это возможно - и использовать теги UL или OL (в данном случае).

Стоит также упомянуть, что это облегчает отслеживание тегов LI, если вы выполняете сценарии или кто-то выполняет сценарии на вашей странице (например, Greasemonkey).

2
Dan Rosenstark

Как веб-дизайнер/разработчик, вы знаете, что когда вы начинаете писать HTML, у вас не получается, что даже Frontpage или Microsoft Word не будут генерироваться. 

Придерживаться стандартов - это улица с двусторонним движением. Если мы хотим, чтобы разработчики браузеров создавали быстрые, надежные и согласованные механизмы рендеринга, нам нужно идти навстречу, создавая согласованный, чистый и правильно сформированный HTML.

1
leepowers

Неожиданное поведение рендеринга в разных браузерах? SEO? 

0
Bahadir Cambel

Решение о том, что с ним делать, зависит от реализации браузера . Если вы действительно хотите это сделать, протестируйте его во всех браузерах, которые вы хотите поддерживать, прежде чем использовать его.

Также обратите внимание, что поведение браузеров может измениться в будущем.

0
Cameron

Опасные? Это ничего не взорвет. Это может вызвать проблемы, если макет каким-либо образом важен для вас.

Вы просто не будете знать, как браузер отобразит это.

0
mark123

Я не могу себе представить, почему вы не хотите помещать теги <ul> или <ol>, они определяют список. После этого у вас есть контроль над тем, как отображается список, а браузер не может решать, что важно. Пропускать их - значит просто писать недопустимую разметку, да, это будет работать в некоторых браузерах, но id определенно будет держать их.

0
cast01

Большинство браузеров, вероятно, возьмут это и запустят с ним, но есть два доступных типа списков: неупорядоченный <ul> и упорядоченный список <ol>, где упорядоченный список имеет номера для каждого элемента.

Вместо использования тегов <li> можно использовать символ «•» (& bull;), а затем <br /> в конце каждой строки.

0
uotonyh

Я бы не стал полагаться на неопределенное поведение. Просто замените этот <div> на <ul> и используйте CSS для стилизации.

0
BalusC