Кажется, я припоминаю, что большинство (возможно, все) атрибутов в предыдущих версиях HTML (до HTML5) требовали, чтобы атрибуты имели значения, например readonly="readonly"
.
Верно ли это для HTML5 и autofocus
атрибута?
Кажется, я припоминаю, что большинство (возможно, все) атрибутов в предыдущих версиях HTML (до HTML5) требовали, чтобы атрибуты имели значения, например readonly="readonly"
.
Верно ли это для HTML5 и autofocus
атрибута?
Ответы:
В HTML вы можете использовать логические атрибуты со значениями или без них по своему усмотрению. Логическое, для W3C, как автофокусировкой может быть записан так autofocus
или autofocus="autofocus"
или же autofocus=""
.
Если вам не нужен автофокус, просто не пишите об этом.
Я думаю , что вы смущены , потому что XHTML требует значений для всех атрибутов: attributes="values"
.
Вот некоторая информация об использовании логических атрибутов в HTML: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute
disabled="disabled"
. То же самое и с закрывающими тегами. В HTML не нужно закрывать каждый тег (например, br или input), но поскольку XHTML должен быть допустимым XML, вам также нужны закрывающие теги.
disabled="disabled"
». И SGML - единственная причина, по которой XHTML имеет silly="silly"
синтаксис bool, а не просто whatever="true"
, а HTML - единственная причина, почему это this="false"
может означать this = true. :)
Цитируя спецификацию HTML5 и немного расширяя Pekka:
http://www.w3.org/TR/html5/forms.html#autofocusing-a-form-control:-the-autofocus-attribute :
Атрибут автофокуса - это логический атрибут.
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :
Наличие логического атрибута в элементе представляет истинное значение, а отсутствие атрибута представляет ложное значение.
Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое является нечувствительным к регистру ASCII совпадением для канонического имени атрибута, без начальных или конечных пробелов.
Вывод :
Следующее является действительным, эквивалентным и истинным :
<input type="text" autofocus />
<input type="text" autofocus="" />
<input type="text" autofocus="autofocus" />
<input type="text" autofocus="AuToFoCuS" />
Следующие недействительны :
<input type="text" autofocus="0" />
<input type="text" autofocus="1" />
<input type="text" autofocus="false" />
<input type="text" autofocus="true" />
Отсутствие атрибута - единственный допустимый синтаксис для false :
<input type="text"/>
Рекомендация
Если вы заботитесь о написании действительного XHTML, используйте autofocus="autofocus"
, поскольку <input autofocus>
недопустим, а другие альтернативы менее читабельны. В противном случае просто используйте, так <input autofocus>
как он короче.
Нет , достаточно указать сам атрибут. Так было и в HTML 4 .
Ряд атрибутов являются логическими атрибутами . Наличие логического атрибута в элементе представляет истинное значение, а отсутствие атрибута представляет ложное значение.
Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое является нечувствительным к регистру ASCII совпадением для канонического имени атрибута, без начальных или конечных пробелов.
Пример:
<label><input type=checkbox checked name=cheese disabled> Cheese</label>