Что в действительности означает разделение контента и презентации? - PullRequest
6 голосов
/ 14 февраля 2010

Что в действительности означает разделение контента и представления?

Это просто значит избегать встроенного CSS?

Означает ли это, что дизайн должен быть в состоянии манипулировать без изменения HTML?

Можем ли мы внести какие-либо изменения в дизайн только с помощью CSS?

  • Если мы хотим изменить размер изображения, то мы должны будем пойти в HTML код
  • Если мы хотим добавить еще один разрыв строки в абзаце, то снова мы будем нужно перейти в HTML-код
  • Если мы хотим добавить еще один разделитель в каком-то месте, то мы снова будем иметь перейти в HTML-код

Какой тег X / HTML следует избегать для разделения контента и представления?

Является ли разделение контента и презентации также полезным для пользователей, которые читают программы для чтения с экрана? ... а для программиста / разработчика / дизайнера?

Ответы [ 4 ]

12 голосов
/ 14 февраля 2010

При определении содержания и представления просмотрите ваш HTML-документ как контейнер данных. Затем задайте себе следующие вопросы для каждого элемента и атрибута:

  • Представляет ли атрибут / элемент значимую сущность в моих данных?
    Например, слова между тегом <b> выделены жирным шрифтом просто для удобства отображения или я хочу добавить акцент на эти данные?

  • Использую ли я соответствующий атрибут / элемент, чтобы свойство представляло тип данных, которые я хочу представить?
    Поскольку я хочу добавить акцент на этот конкретный раздел, я должен использовать <em> (это не означает курсив, это означает акцент и может быть выделен жирным шрифтом) или <strong> в зависимости от требуемого уровня выделения.

  • Использую ли я атрибут / элемент только для целей отображения? Если да, может ли элемент быть удален, а родительский элемент стилизован с использованием CSS?
    Иногда тег представления можно просто заменить правилами CSS на родительском элементе. В этом случае тег представления должен быть удален.

Задав себе эти три простых вопроса, вы обычно можете принять довольно обоснованное решение. Пример:

Оригинальный код: <label for="name"><b>Name:</b></label>

Проверка тега <b> ...

Представляет ли атрибут / элемент значимую сущность в моих данных?
Нет, тег не представляет узел данных. Это там только для презентации.

Использую ли я соответствующий атрибут / элемент для свойства, представляющего тип данных, которые я хочу представить?
<b> используется для представления жирных элементов.

Использую ли я атрибут / элемент только для целей отображения? Если да, может ли элемент быть удален, а родительский элемент стилизован с использованием CSS?
Поскольку <b> является презентационным, и я использую его для презентации, да. И поскольку элемент <b> влияет на весь <label>, его можно удалить и применить стиль к <label>.

Цель семантического HTML не в том, чтобы упростить дизайн и редизайн или избежать встроенного стиля, а в том, чтобы помочь синтаксическому анализатору понять, что этот конкретный тег представляет в вашем документе. Таким образом, могут быть созданы приложения (т.е. : поисковая система), чтобы разумно решить, что означает ваш контент, и соответствующим образом классифицировать его.

Поэтому имеет смысл использовать свойство CSS content: для добавления кавычек вокруг текста, расположенного в теге <q> (он не имеет значения для данных, содержащихся в вашем документе, кроме представления), но не имеет смысла для используйте то же свойство CSS, чтобы добавить символ © в нижний колонтитул, поскольку он имеет значение в ваших данных.

То же относится и к атрибутам. Использование атрибутов width и height в теге <img>, представляющем значок размером 16x16, имеет смысловой смысл, поскольку важно понимать значение тега <img> (значок может иметь различные представления в зависимости от размера это отображается в). Использование тех же атрибутов в теге <img>, представляющем эскиз большого изображения, не позволяет.

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

Нет неправильных элементов. Неправильное использование определенных элементов. <b> не следует использовать при добавлении акцента. <small> следует использовать для легального подтекста, а не для уменьшения размера текста (см. HTML5 - раздел 4.6.4 , почему) и т. Д. ... Все элементы имеют определенный сценарий использования и все они представляют данные (минус презентационные элементы, но в некоторых случаях они действительно используются). Ни один элемент не должен быть отложен.

Атрибуты - это другое. Большинство атрибутов носят презентационный характер. Такие атрибуты, как <img border> и <body fgcolor> редко имеют значение в данных, которые вы представляете, поэтому вам не следует их использовать (за исключением тех редких случаев).


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

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

5 голосов
/ 14 февраля 2010

Лучшим примером, вероятно, является CSS Zen Garden .

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

На каждой странице дизайна у вас будет ссылка для просмотра CSS-файла этого дизайна.

2 голосов
/ 14 февраля 2010

Что в действительности означает разделение контента и представления?

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

это просто значит избегать встроенного CSS?

Как отмечалось выше, встроенные стили не имеют ничего общего с семантикой вашего контента, и их следует избегать любой ценой. Но это не , а .

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

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

Какой X / HTML-тег нам следует избегать для разделения контента и представления?

Поиск устаревших тегов в W3C HTML 4.01 / XHTML 1.0 Reference

Является ли разделение контента и презентаций полезным для пользователей, читающих программы для чтения с экрана?

Конечно. Более структурированная информация обычно остается читаемой, даже если некоторые браузеры отображают стили неправильно (или не отображают их вообще). Такой контент может также выглядеть более адекватно на печатных носителях (хотя стили печати могут применяться для достижения еще лучшей эстетики - они, опять же, не имеют ничего общего с семантикой контента).

Полезно ли разделение контента и презентации для программиста / разработчика / дизайнера?

Конечно. Разделение содержания и представления берет свое начало от более общей философии, разделения интересов. Разделение выгодно всем: поставщик контента не обязательно должен быть хорошим дизайнером, и наоборот.

1 голос
/ 14 февраля 2010

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

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

Размечая контент, не заботясь о представлении, вы, прежде всего, делаете его машиночитаемым. Тогда вы также сможете предоставлять один и тот же контент разным клиентам в разных форматах, например, в мобильной версии. Вы также можете легко изменить презентацию, не связываясь с файлами HTML, скажем, для большого редизайна.

Еще одно преимущество, которое естественным образом достигается за счет разделения контента и представления (файлы HTML - CSS), заключается в том, что вам приходится меньше печатать и меньше поддерживать, плюс к вашим страницам очень легко можно применить согласованный стиль. Сравните тысячи встроенных стилей и одно определение стиля в одном файле CSS, который «естественно» применяется ко всем элементам с одинаковым «значением» (разметка).

В идеале ваш (X) HTML состоит только из содержательной, семантической разметки и ваших стилей CSS, использующих эту разметку для своих селекторов. В реальном мире вы часто будете смешивать классы и идентификаторы в вашей разметке, которые не добавляют никакого дополнительного значения, потому что вам нужны эти дополнительные «крючки», чтобы стилизовать все так, как вы хотите. Но даже здесь есть разница между class="blue right-aligned" и class="contact-info secondary". Всегда старайтесь добавлять , что означает к содержанию, а не к стилю. Сбалансировать это само по себе искусство. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...