Ответ 1
Для семантической корректности. HTML имеет возможность выражать списки вещей, а также помогает роботу Google, читателям экрана и всем пользователям, которые не заботятся исключительно о презентации сайта, лучше понимают ваш контент.
Я не уверен, почему мне нужно использовать ul-li vs, просто используя divs при перечислении элементов. Я могу сделать так, чтобы оба выглядели точно так же, а где функциональное преимущество для создания неупорядоченного списка и выстраивания divs?
Для семантической корректности. HTML имеет возможность выражать списки вещей, а также помогает роботу Google, читателям экрана и всем пользователям, которые не заботятся исключительно о презентации сайта, лучше понимают ваш контент.
Я не уверен, почему мне нужно использовать ul-li vs, просто используя divs при перечислении элементов. Я могу сделать оба выглядеть точно таким же
Что есть ключевое слово в вашем вопросе: "Посмотри". Можете ли вы также заставить их вводить то же самое для слепых, используя считыватель Брайля? Можете ли вы заставить их звучать одинаково для слепых, используя синтезатор текста в речь? Можете ли вы по-прежнему заставить их выглядеть одинаково для людей с ослабленным зрением, используя пользовательские таблицы пользовательских стилей на стороне клиента?
Это слово "смотреть" - очень опасное слово - когда вы используете это по отношению к HTML, все сигналы тревоги должны уходить в вашу голову. HTML - это язык для описания семантической структуры документа гипермедиа. Семантическая структура не имеет "взгляда", это абстрактное понятие.
Даже если вы не заботитесь обо всем этом семантическом hocuspocus, и вы не заботитесь о слепых, подумайте об этом: Google, Yahoo, MSN и Co. не имеют глаз, они не "смотрят" на ваш визуализированный CSS.
Используя семантически правильную разметку, вы добавляете дополнительную информацию в свой текст. Используя ul/li, вы сообщаете потребляющему приложению, что информация представляет собой список, а не просто "что-то" (кто знает, что), это какой-то текст внутри произвольного элемента.
Прямой ответ на ваш вопрос: Функциональным преимуществом является то, что divs мало что значит сами по себе, тогда как ul lis явно означает "это un/упорядоченный список элементов".
Термин "семантика" относится к тому, как вы используете встроенное значение существующих структур для создания явного значения. HTML состоит из тегов, которые обозначают определенные вещи сами по себе. И есть установленные правила/рекомендации/способы их использования, чтобы опубликованный документ HTML передавал то, что вы хотите.
Если вы перечислите что-то в своем документе, добавьте упорядоченный список (UL) или неупорядоченный список (OL). С другой стороны, элемент разделения страницы (DIV) используется для создания конкретного и отдельного фрагмента контента.
Элемент div "делит". Когда вы смотрите на страницу, есть определенные части, такие как тело контента, нижний колонтитул, заголовок, навигация, меню, формы и т.д. И вы можете использовать теги div для создания этих разделов. Часто части страницы соответствуют визуальному расположению, поэтому использование явных разделов страницы (DIVs) для разбивки макета в CSS является естественным. Таким образом теги div становятся структурными.
Если вы злоупотребляете или злоупотребляете тегом div, он может создавать непреднамеренное значение и раздувать код.
Чтобы запутать вопросы: Google использует h3 и div для разделения своих перечисленных результатов поиска. ul > li > h3 + div
Поэтому, когда вы отключите все стили (Shift + Cmd/Crtl + S в Firefox с панелью инструментов WebDeveloper), divs должны уйти и естественно стекаться. Ваш голый HTML должен по-прежнему отображать хорошую страницу с четкой иерархией: сверху вниз, самый важный контент, и списки с марками и номерами для перечисленных элементов. И неплохо добавить ссылку вверху (для невизуальных пользователей), которая позволяет перейти к: основному содержимому, важным формам или основным заголовкам (например, оглавлению).
Наконец, имейте в виду, что вы создаете документ. Без всех визуальных эффектов он все равно должен быть документом.
Вы должны использовать соответствующие теги для содержимого, которое вы хотите разместить внутри. Это не только означает, что ul/li более подходит для списков. Это также означает, что вы должны учитывать содержимое своего списка и видеть, является ли его неупорядоченным/упорядоченным или списком определений.
Другим аргументом является то, что когда вы отключите css. В браузере будет отображаться стиль по умолчанию, который позволяет лучше смотреть, используются ли альтернативные устройства просмотра. Это также увеличивает доступность.
Если вы используете div вместо этого, lynx не сможет отобразить страницу читаемым способом.
Мне лично нравится li для семантики. При просмотре источника вы сразу видите, что у вас есть список чего-то, если они завернуты ли. Коллекция div не содержит семантического значения, и обычно единственная семантика этого списка вводится классами css, такими как "listItem". Это, очевидно, указывает на то, что li должен был использоваться в первую очередь.
Если у вас есть цикл в вашей логике представления, я всегда предпочитаю li над div.
<Li> означает элемент в списке и который позволяет синтаксическим анализаторам (браузерам, поисковым системам, паукам) знать, что вы перечисляете элементы. Вы можете использовать DIV вместо LI, но эти парсеры никогда не узнают, что эти элементы перечислены, а DIV не описывает ничего, кроме того, что это блок.
Существует много разговоров об использовании <li>
или использовании <div>
, но ни один комментарий не дал убедительного примера содержимого, которое входит в эти теги. Я чувствую, что <ul>
и <li>
на самом деле не так важны, как я не могу сказать вам в последний раз, когда я действительно читаю "список" вещей на веб-сайте, в газете или журнале - онлайн или в печати.
<div>
гораздо более универсален. Если вы публикуете ингредиенты для пирога, да, это список. Если вы перечисляете вещи, чтобы отправиться в поход, да, это список.
Но как насчет пользовательской формы, например, в которой перечислены некоторые случайные вещи, которые на самом деле не являются списком, ни серией абзацев, ни всеми "заголовками". Некоторые вещи - это даты, некоторые - флажки, а некоторые - текст. Разделите его, если вы спросите меня. Слепой человек был бы неправильно проинформирован, если бы он был отмечен <ul>
и <li>
, и они услышали "Вот список...", когда это всего лишь путаница вещей, а не список.
Использование <li>
(там, где это необходимо) уменьшает суп <div>
, который вы так часто видите на веб-страницах, что помогает разработчикам многое.
Не то, что <div>
являются плохими, но всякий раз, когда тег становится чрезмерно используемым (как часто бывает <div>
), он размывает смысловое значение тега до такой степени, что он абсолютно бесполезен. Я узнал об этом недавно от подрядчика, которого мы наняли, чтобы помочь с CSS/UI нашего веб-приложения, и разница, которую он сделал с удобочитаемостью/ремонтопригодностью HTML-кода, очень заметен для меня.
Если все, о чем вы заботитесь, это получение списков, которые выглядят определенным образом с минимальными усилиями, то это уже не проблема: <li>
- это один символ меньше, чем <div>
, а его закрывающий тег является необязательным в HTML.
И это в дополнение к тому, что все остальные говорили о семантике.
Для правильной рендеринга в примитивных браузерах или мобильных устройствах
Это зависит от проекта. Недавно я сделал проект, в котором было меню, разработанное с использованием списка. Они хотели добавить кучу эффектов, таких как сползание/выцветание, а также хотели сделать их разборчивыми с несколькими уровнями.
В этом случае DIV были гораздо более подходящими. Я смог создать контейнеры для дочернего div и применить jQuery для достижения желаемых эффектов.
Даже если ваш проект еще не имеет этих требований, может быть разумным подумать о том, как вы можете изменить его в будущем...
другая вещь о ul li; вы можете использовать ul в качестве контейнера, который поможет вам установить класс стиля
<ul class="myHebe">
<li><a href="#">.net</a></li>
<li><a href="#">.net</a></li>
</ul>
Мне нравится этот шаблон, когда я использую ul
.myHebe{} // container
.myHebe li {} // items
.myHebe li a {} // subitems
Конечно, это зависит от того, как мы хотим использовать его и как нам это нравится. Так мне нравится
Надежда помогает Благодаря
На ваш вопрос уже ответили, что я хочу добавить свои два цента здесь. Я работал над проектом, в котором я делал логику бэкэнд, и мои данные были объединены в шаблон страницы, сделанный моим дизайнером. он использовал теги ul и li для представления всех видов списка на странице, некоторые из которых были виджетами. Данные поступали из cms, где пользователи могли вводить расширенный текст через теги html. когда пользователи начали создавать списки в своем контенте, списки больше не выглядели как маркированные списки, а скорее испортили всю страницу.
извлеченный урок: не используйте теги списка с универсальными селекторами css, если ваш контент может содержать html сам по себе.