це автофокус = “автофокус” чи автофокус?


87

Здається , я пригадую більшість (можливо все) атрибути в раніше версіях HTML (до HTML5) , необхідні атрибути , щоб мати значення, як readonly="readonly".

Це справедливо для HTML5 та autofocusатрибута?


1
можливий дублікат stackoverflow.com/questions/1033944/…, оскільки обидва стосуються логічних атрибутів (не позначені)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Я б погодився, що вони схожі, але дещо відрізняються, оскільки запитують про різні атрибути.
Дарріл Хайн,

1
автофокус працює лише. тестував це у FF, Opera та Chrome ..
Сохайл Аріф,

Відповіді:


94

У 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


19
+1 за згадку XHTML. Відповідність XML XHTML - єдина причина, чому коли-небудь існувало disabled="disabled". Те саме стосується закриття тегів. У HTML не кожен тег повинен бути закритим (наприклад, br або input), але оскільки XHTML повинен бути дійсним XML, вам також потрібно закрити теги.
Тім Бюте

4
"XHTML - єдина причина, чому коли-небудь існував disabled="disabled"". І SGML - це єдина причина, чому XHTML має silly="silly"синтаксис bool, а не просто whatever="true", а HTML - це єдина причина, чому це this="false"може означати this = true. :)
Sz.

52

Процитувавши специфікацію 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>оскільки він коротший.


1
Msgstr "Якщо ви дбаєте про ... XHTML". Ні. Нехай помре.
Дем Пілафіян,

22

Ні , досить вказати сам атрибут. Так було і в HTML 4 .

Ряд атрибутів є логічними атрибутами . Наявність булевого атрибута в елементі представляє справжнє значення, а відсутність атрибута - хибне значення.

Якщо атрибут присутній, його значення має бути або порожнім рядком, або значенням, яке не відповідає регістру ASCII для канонічного імені атрибута, без пробілів, що ведуть або відстають.

Приклад:

<label><input type=checkbox checked name=cheese disabled> Cheese</label>

10
Дав Тіму прийняту відповідь ... він потребує представника більше, ніж ти :)
Дарріл Хайн,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.