Осмысленная разметка: POSH и не только
Эмили Льюис (Emily P. Lewis) | 21.06.10 Давным-давно, в 1998 г., я работала координатором по маркетингу для бухгалтерской компании. Помимо множества других действий, связанных с печатными изданиями, я отвечала за дизайн и написание контента для бюллетеней нашего клиента. Однажды мой босс попросил меня взглянуть на наш корпоративный веб-сайт и переработать его контент. По мере продвижения в процессе редактирования и переписывания я все больше интересовалась тем, как работает веб-сайт. Чуть-чуть поиска в Интернете, и я узнала о чем-то, называющемся HTML. В один роковой день я открыла «Блокнот» и ввела:
Я сохранила текстовый файл с расширением Прошло двенадцать лет, но разметка все так же магически притягивает меня. Я считаю, что это основа Интернета. Она прекрасна в своей простоте. И несмотря на мое постоянно растущее умение и постоянно меняющиеся современные технологии, разметка меня все еще притягивает меня. Для каждого разрабатываемого мной веб-сайта я пытаюсь писать самую экономную, самую эффективную и самую семантически понятную разметку. И нельзя забывать о ее корректности. Что печалит меня, так это то, что не у всех есть подобная тяга к хорошей разметке. Веб-сайты страдают от таких болезней, как суп из тегов, вложенные теги div (div-itis) и span-мания. И, честно говоря, я не понимаю, почему. Да, я понимаю, что есть определенные ограничения. С ними сталкиваются все дизайнеры и разработчики, будь это устаревшая система с ограниченными возможностями изменения разметки или босс, который предпочитает выделять время и ресурсы для чего-то другого помимо разработки интерфейсных приложений. Но умение создавать отличные веб-сайты, работая в рамках этих ограничений, и есть признак настоящего профессионала. Однако большинство встреченных мною людей, работающих в веб-отрасли — действительно настоящие профессионалы. Они влюблены в свою работу и постоянно стремятся создавать замечательные веб-сайты и приложения. Так почему же так много из них забывает о силе хорошей разметки? И я пришла к выводу, что дело не только в ограничениях. Дело не в обращении с HTML как с приемным ребенком. Это даже не лень (хотя я допускаю, что иногда именно она является причиной). Проблема должна сводиться к недостатку понимания и знаний. К счастью, что-то я могу помочь изменить с помощью небольшой экскурсии, описанной в этой статье. Мы разберемся в том, что такое семантическая разметка и на что она похожа, а также в чем ее преимущества. Мы также увидим, как понять можно вывести семантику за границы разметки с помощью CSS. И, наконец, мы увидим, как можно расширить семантическую разметку, чтобы обеспечить полезное значение для машин Что такое семантическая разметка? Семантическая разметка — это разметка, имеющая смысл, разметка, описывающая контент, который она содержит, а не то, как этот контент должен выглядеть. Это означает, что для макета не используются ни теги Вместо этого семантическая разметка стимулирует думать в первую очередь о контенте. Поэтому, если есть список, то следует использовать элемент списка, такой как Напротив, если нужно выделить контент, не используйте Эта концепция семантической разметки — фундамент современных веб-стандартов, стимулирующих отделять контент от представления (CSS) и поведения (JavaScript). Фактически, семантическую разметку часто называют разметкой, «совместимой со стандартами». И, в соответствии с любовью компьютерщиков к сокращениям, семантическая разметка также называется POSH (Plain Old Semantic HTML, старый добрый семантический HTML). Независимо от терминологии семантическая разметка всегда должна быть корректной. Это лишь значит, что разметка соответствует назначенному типу документа DOCTYPE. Независимо от выбранного вида разметки — HTML 4, XHMTL или даже HTML5 — написанная разметка не должна содержать ошибок и некорректных элементов и атрибутов. Как узнать, правильна ли написанная разметка? Просто. Используйте Интернет-средство проверки W3C. Преимущества семантической разметки К этому моменту вы, возможно, уловили суть семантической разметки, но еще удивляетесь, почему она так важна. Эффективность Одним из самых главных преимуществ является переносимость. Страницы, размеченные в соответствии с POSH, работают не только в веб-браузерах, но и в компьютерах и устройствах всех видов, включая программы чтения с экрана, мобильные устройства и текстовые браузеры. Поэтому напишите POSH один раз, и можно будет доставлять контент на множество устройств как сейчас, так и в будущем. Семантическая разметка также обеспечивает эффективность процесса разработки, что особенно полезно для командной работы. С помощью POSH создается общий словарь для разметки создаваемого веб-сайта. Разработчикам не нужно тратить дополнительное время на анализ того, какая разметка должна использоваться для различных типов контента. Абзац — это Далее, благодаря соблюдению этих стандартов и удалению ненужных тегов Доступность Другим преимуществом семантической разметки является то, что она обеспечивает фундамент для доступного веб-сайта. Как я уже упоминала в своем руководстве по специальным возможностям и WAI-ARIA, технологии, поддерживающие доступность, такие как программы чтения с экрана осуществляют переходы по веб-сайтам в соответствии со структурой. Например, веб-сайт, в разметке которого элементы заголовков ( И, конечно же, рекомендации WCAG 2.0 стимулируют использовать семантическую структуру не только для структуры страницы, но и для списков ( Ощущения пользователя Страницы, разработанные в соответствии с POSH, обычно являются более легкими, чем их аналоги, представляющие собой суп из тегов. Это часто положительно влияет на время загрузки страниц и время отклика, которые, в свою очередь, улучшают ощущения пользователя. Помните, не у всех есть высокоскоростной доступ и не все используют самые последние и лучшие технологии. POSH позволяет создавать наименьший общий знаменатель, позволяя эффективно доставлять контент всем пользователям. Оптимизация для поисковых машин? Многие годы я рассказывала о преимуществах семантической разметки для органической оптимизации для поисковых машин (SEO, Search Engine Optimization). Я долго слушала истории о том, что поисковые машины спотыкаются на вложенных элементах К сожалению, большинство доказательств в пользу этих историй основываются на отдельных наблюдениях. Я пыталась найти твердые факты, свидетельствующие, что правильная, семантическая разметка улучшает результаты работы поисковых машин. Фактически, компания Google даже утверждала, что использование CSS вместо элементов Несоответствие моих ощущений и действий поисковых машин связано с улучшением поисковых алгоритмов с течением времени. Вложенные элементы Все так, но я лично подозреваю, что что-то происходит с поисковыми машинами и семантической разметкой. Например, компания Google рекомендовала разумно использовать элемент Написание семантической разметки Теперь, когда вам известны смысл и преимущества семантической разметки, давайте поговорим о том, как действительно перейти к ее использованию. Во-первых, я должна признать, что от новичков в ее использовании семантическая разметка потребует чуть большей работы и изменения образа мышления. Если при разработке веб-сайтов вы использовали теги И поверьте, я чувствую вашу боль. Я была в таком же положении. Когда я начала изучать HTML, у меня не было ни малейшего представления о том, что такое веб-стандарты, не говоря уже о семантической разметке. Мои веб-сайты очень точно попадали под определение «суп из тегов». Но как только я поняла, что существуют стандарты для HTML, предлагающие множество преимуществ, о которых я даже никогда не подозревала, я больше не смогла, в хорошем смысле, продолжать разрабатывать веб-сайты, так как раньше. Если вы пришли к такому же выводу, вот с чего я рекомендую начать:
Конечно, эта последовательность действий описывает только мой процесс создания разметки. Возможно, для вас (и вашей команды) лучше подойдет другой рабочий процесс. Суть в том, чтобы выделить время на продумывание решений. И, поверьте мне, чем больше вы будете думать, тем проще и быстрее придет успех в написании семантической разметки. Но этот подход действительно накладывает определенные обязательства и действительно требует определенного времени. Но стоит втянуться, и, я подозреваю, процесс станет менее пугающим. Несколько примеров Применим эту последовательность действий к нескольким реальным примерам, начиная с ряда простейших навигационных ссылок. С точки зрения контента буде использовать: Главная Продукты Услуги О компании Мне попадались веб-сайты, в которых для этого контента использовалась следующая разметка:
Но давайте проанализируем этот контент. Является ли на деле абзацем каждая из этих ссылок? Для какой цели используется контейнер Мне кажется, что эти навигационные ссылки фактически являются группой связанных элементов контента. Это делает их идеальными кандидатами для элемента неупорядоченного списка
Теперь рассмотрим другой пример контента, на этот раз сведения о контактах для веб-сайта: Компания АБВ Главная улица 123 Город, ОБЛ 123456 info@abv.ru 123-456-7890 Несемантический подход к разметке этого контента мог бы выглядеть следующим образом:
А я бы использовала другой подход, делая упор на семантику:
Семантическая разметка может быть субъективной Одним из самых проблемных моментов в написании семантической разметки оказывается выбор «правильных» элементов для использования. Для некоторого контента сразу же очевидно, что нужно использовать Рассмотрим вышеприведенный пример для компании АБВ. В моей семантической разметке я воспользовалась списком определений ( Я, с другой стороны, придерживаюсь мнения, что списки определений могут также использоваться для элементов контента, непосредственно связанных друг с другом, где контент Могут найтись и несогласные с моим использованием тега Чтобы показать субъективную природу семантической разметки, я могла бы применить к этим сведениям о контактах другие подходы, например:
Итак, в действительности не существует «правильного» семантического подхода ко всему контенту (хотя ряд пуристов от семантики могут с этим не согласиться). И снова, я призываю вас сфокусироваться на том, чтоб думать, создавая разметку. Понимать причины выбора одних элементов, а не других, и быть открытым к изучению других подходов. По мере роста ваших знаний представления о правильной семантике могут меняться. Не забудьте о HTML5 Так как фокусом этой статьи является семантическая разметка, я должна немного поговорить и о HTML5. Хотя стандарт HTML5 все еще является черновиком, в нем введен ряд новых семантических элементов, которые могут уменьшить или устранить необходимость использования для структуры тегов
В рамках этой статьи я не собираюсь глубже погружаться в HTML5. Кроме того, пока я разработала на HTML5 только один веб-сайт, и я только работаю над упорядочиванием в моей голове нюансов этой спецификации. Но я действительно рекомендую обратиться к следующим отличным ресурсам, которые оказались полезными для меня: За рамками структуры До сих пор это обсуждение по большей части было сосредоточено на использовании семантических элементов для определения структуры. Но семантика может не ограничиваться только элементами разметки, распространяясь и на семантические значения атрибутов, чтобы обеспечить еще больше смысла. Значения классов и идентификаторов Как я писала в статье Научитесь работать в группе CSS, соглашения о семантических именах для значений
Пары «значение-свойство» в этих примерах идентичны, но какой из них содержит больше смысла? Я надеюсь, что больший смысл второго объявления очевиден, благодаря использованию осмысленного имени класса. «Alert» (предупреждение) намного более информативно, чем «f23», а дополнительный контекст может упростить для разработчика (и всех, кто будет работать с этой таблицей CSS) понимание, на какой контент влияет объявление стиля. Помимо контекста семантические (а не описывающие представление) значения Это означает, что понадобится изменить не только значение в CSS, но и все ссылки на этот идентификатор в разметке. Вместо этого, чисто семантическое значение, например Значение для машин Помимо упрощения сопровождения и дополнительной информации для разработчика, семантические значения атрибутов также сообщают машинам (пользовательские агенты, поисковые машины, браузеры, приложения и т. д.) важные сведения о контенте. Например, микроформаты используют семантические имена Рассмотрим вышеприведенный пример компании АБВ. Мы с вами, будучи людьми, мгновенно понимаем смысл этого контента: сведения о названии, адресе, телефоне и электронной почте. Но машины не обладают таким умением. Для машин этот контент ничем не отличается от остального контента страницы. Но применение микроформата hCard сообщает машинам, что этот контент содержит сведения о контактах. И благодаря этому машины могут преобразовать веб-контент, например, в загружаемую визитную карточку. Другим примером использования семантических значений атрибутов, чтобы сделать контент машинно-читаемым, является WAI-ARIA. Как я упоминала в своей статье Руководство по специальным возможностям в Интернете и WAI-ARIA, элементам разметки можно назначить роли, помогающие специальным технологиям, поддерживающим доступность, понимать структуру документа, понимать действия мини-приложений и взаимодействовать с мини-приложениями. Дальнейшее обсуждение машинно-читаемых атрибутов, используемых в микроформатах и ARIA, выходит за рамки этой статьи. Но эти атрибуты являются частью обсуждения семантической разметки, и я призываю вас ближе познакомиться с ними. О микроформатах можно прочитать в серии из 8 записей в моем блоге Реализация семантики с помощью микроформатов. Об ARIA можно прочитать в моем руководстве на сайте Script Junkie. Говоря о пуристах… Теперь, познакомив вас с основами семантической разметки и предоставив сведения и ресурсы, чтобы приступить к работе, я хочу завершить наше путешествие небольшим отступлением и обсудить ход мыслей пуристов, упоминавшихся ранее. Когда я впервые начала работать с веб-стандартами, я гордо именовала себя «сторонницей стандартизации» и в штыки встречала любую разметку, которая казалась мне недостаточно семантической, не следовала стандартам и/или была неправильной. Я приняла точку зрения пуристов, и, если быть честной, для меня было важнее чувствовать важной и праведной, чем разбираться в том, что действительно происходит в Интернете. А действительность состоит в том, что в современном Интернете используется разметка, не являющаяся семантической. Пока поддержка CSS по-разному реализуется в разных браузерах, есть необходимость добавлять теги Даже в том, что касается проверки, есть исключения. Я утверждала в начале этой статьи, что семантическая разметка всегда должна быть правильной. Но если использовать роли WAI-ARIA ( Я считаю, что приверженность пуризму может оказаться ограничением. Приверженность пуризму может ограничить возможность понять, с какими ограничениями сталкиваются современные веб-специалисты. Приверженность пуризму может затруднить диалог о том, что возможно в рамках этих ограничений. Что касается меня, я продолжаю считать себя сторонницей стандартов. Но сегодня я, скорее, ищу компромисс, а не просто стремлюсь «быть правильной». Я ставлю своей целью семантическую разметку. Я ставлю своей целью экономную разметку. Я ставлю своей целью корректность и отсутствие ошибок при проверках. Но я также использую несемантические теги Дополнительные материалы Этот экскурс в семантическую разметку, соответствующую стандартам, является только частью большой дискуссии. Изучение следующих ресурсов может привести к улучшению понимания этого вопроса:
|