Частые вопросы о html5: какие изменения предлагается внести в html5

все элементы html5 должны поддерживать атрибут href

Спецификация разрешает содержать блоки внутри тега <a>, однако она не разрешает ставить атрибут href на всех элементах.

Поддержка href всеми элементами связана с несколькими проблемами, которые будет сложно решить в HTML5. Главной проблемой является то, что производители браузеров считают что внедрение этой функции чрезвычайно сложно и заниматься этим нет смысла. Мы не можем приказать им реализовывать ту или иную функцию — они сами выбирают что им делать, а что нет. Вот причины, по которым они не планируют реализовывать поддержку href каждым элементом:

  • Нет обратной совместимости с уже существующими браузерами.
  • Эта возможность не добавляет какой-либо новой функциональности. То же самое можно реализовать с помощью тега <a> и небольшого скрипта.
  • Для некоторых элементов вообще нет смысла вводить поддержку атрибута href. Например в тегах <input> и <button> атрибут href будет противоречить с уже существующей функциональностью.

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

Помещение блочных элементов внутрь тега <a> решает множество проблем. Это, конечно, не дает возможности делать строки таблицы гиперссылками, но всегда можно найти компромисс:

<tr onclick=»location = this.getElementsByTagName(‘a’)[0]»> … </tr>

html5 должен поддерживать заголовки списков

Заголовок списка можно задать с помощью тегов <figure> и <legent>:

<figure>
 <legend>Города</legend>
 <ul>
  <li>Тамбов</li>
  <li>Москва</li>
  <li>Санкт-Петербург</li>
 </ul>
</figure>

Вы также можете дать заголовок списка:

<dl>
 <dt>Dry:</dt>
 <dd>
  <ul> 
  <li>1c flour</li> 
  <li>1/4c sugar</li>
  <li>1tsp baking soda</li>
  </ul>
 </dd>
 <dt>Wet:</dt>
 <dd>
  <ul> 
  <li>1 egg </li>
  <li>1/2c milk</li>
  <li>1tsp vanilla extract</li>
  </ul>
 </dd>
</dl>

Эти методы предпочтительнее добавления элемента <lh>, как было предложено в HTML3.

html5 должен поддерживать инструмент, с помощью которого каждый сможет разрабатывать свои элементы

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

  • Разработчики могут использовать атрибут class для наследования элементов, фактически создавая собственные элементы на основе уже существующих HTML элементов. Такой принцип используется, например, в микроформатах.
  • Разработчики могут использовать новый атрибут data-*=»». Этот атрибут гарантировано не обрабатывается браузерами, поэтому его можно использовать для передачи данных в JavaScript.
  • Разработчики могут использовать конструкцию <meta name=»» content=»»> для задания данных для всего документа.
  • Разработчики могут использовать атрибут rel=»» для описания принадлежности гиперссылки к содержанию страницы.
  • Разработчики могут прикреплять  данные с помощью <script type=»»>.
  • Разработчики могут создавать расширения (plugins) и подключать их с помощью тега <embed>. Так, например, работает Flash.
  • Разработчики могут создавать свои API на JavaScript.
  • Разработчики могут использовать функцию микродаты (microdata) — атрибуты item=»» и itemprop=»» чтобы создавать конструкции типа има-значение. Это удобно для интеграции с другими приложениями и сайтами.
  • Разработчики могут предлагать создать новые элементы для внесения их в спецификацию. Если такие предложения будут действительно ценными, они будут внесены в спецификацию.

Пока нет инструмента, с помощью которого можно добавлять новые возможности в HTML (т.е. разработка новых элементов и атрибутов) без развернутого обсуждения его возможностей с разработчиками браузеров. Мы не хотим, чтобы разработчики браузеров создавали свои элементы. Для каждого браузера должен быть один стандарт.

Мы просим, чтобы разработчики не создавали новых элементов и атрибутов в HTML без участия рабочей группы WHATWG.

html5 должен группировать <dt> и <dd> в элементе <di>

Это проблема таблиц стилей и должна решаться с помощью css. Нет причин чтобы добавлять новый семантический тег в HTML.

Есть несколько причин, почему не следует добавлять такие элементы как <di>:

  • Придется менять механизм обработки кода, а это довольно дорого.
  • Будет слабая обратная совместимость до тех пор, пока все парсеры не обновятся.
  • Будет слабая обратная совместимость в валидации кода.

Цена не оправдает ожидания, тем более с помощью css можно решить не только эту проблему, но и многие другие.

почему такие элементы как <b>, <i> и <small> до сих пор включены в спецификацию?

На включение этих элементов в спецификацию HTML 5 в значительной степени повлияло их широкое использование и применение их в специфических случаях, в которых другие теги не уместны.

Например, тег <i> помимо простого выделения курсивом (заменяемо с помощью тегов em, cite, dfn или var), используется для обозначение таксономических определений, технических терминов и идиоматических фраз из других языков.

Точно так же с тегом <b>. Помимо стандартных функций, заменяемых элементами <strong>, <h1> — <h6> или <th>, есть и другие, например выделение ключевых слов в документе, или обозначение названия продукта в обзоре.

Некоторые люди говорят, что в таком случае нужно было оставить и элемент <span>. Тем не менее у элементов <b> и <i> есть неоспоримое преимущество: устройства которые не поддерживают таблиц стилей, или вовсе не визуализируют документ (например устройство для проговаривания текста) могут каким-то образом выделить текст внутри тегов <b> и <i>. В случае со <span> — такой возможности нет.

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

Что касается элемента <small>, то он работает точно так же. С помощью него выделяют например копирайт, отказ от ответственности и т.д.

элемент <cite> должен позволять выделять им имена людей

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

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

Возникает вопрос: «какой способ использования этого элемента будет самым лучшим, если мы все таки решим оставить его?». Последним нашим решением было использовать этот элемент  для того, чтобы добавлять типографические функции в заголовки. Однако решение не окончательное.

Что касается имен людей, то они уже сейчас могут выделяться с помощью, например, микроформатов или имен классов.

элемент <time> должен позволять выделять с помощью него неопределенные времена («март») и времена до н.э.

Этот вопрос обсуждался уже много раз.

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

<input type=»text» > должен поддерживать атрибут minlength=»»

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