é autofocus = “autofocus” ou autofocus?

87

Parece que me lembro da maioria (talvez todos) dos atributos em versões anteriores do HTML (antes do HTML5) que exigiam que os atributos tivessem valores, como readonly="readonly".

Isso é verdade para HTML5 e o autofocusatributo?

Darryl Hein
fonte
1
possível duplicata de stackoverflow.com/questions/1033944/… já que ambos são sobre atributos booleanos (não sinalizados)
Ciro Santilli 郝海东 冠状 病 六四 事件 事件 法轮功
Eu concordaria que eles são semelhantes, mas ligeiramente diferentes, já que estão perguntando sobre atributos diferentes.
Darryl Hein de
1
o foco automático só funciona. testei no FF, Opera e Chrome ..
Sohail Arif

Respostas:

94

Em HTML, você usa atributos booleanos com ou sem valores conforme desejar. Um booleano, para W3C, como o foco automático, pode ser escrito assim autofocusou autofocus="autofocus"ou também autofocus="".

Se você não quer o foco automático, não o escreva.

Eu acho que você está confuso porque XHTML requer valores para todos os atributos: attributes="values".

Aqui estão algumas informações sobre o uso de atributos booleanos em HTML: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute

Tim
fonte
19
+1 por mencionar XHTML. A conformidade XML do XHTML é a única razão pela qual já existiu um disabled="disabled". A mesma coisa vale para tags de fechamento. Em HTML, nem todas as tags precisam ser fechadas (por exemplo, br ou input), mas como o XHTML deve ser um XML válido, você também precisa fechar as tags.
Tim Büthe
4
"XHTML é a única razão pela qual já existiu um disabled="disabled"". E SGML é a única razão pela qual XHTML tem a silly="silly"sintaxe bool em vez de apenas whatever="true", e HTML é a única razão pela qual this="false"pode significar this = true. :)
Sz.
52

Citando a especificação HTML5 e expandindo um pouco no Pekka:

http://www.w3.org/TR/html5/forms.html#autofocusing-a-form-control:-the-autofocus-attribute :

O atributo autofocus é um atributo booleano.

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :

A presença de um atributo booleano em um elemento representa o valor verdadeiro e a ausência do atributo representa o valor falso.

Se o atributo estiver presente, seu valor deve ser a string vazia ou um valor que não faz distinção entre maiúsculas e minúsculas ASCII para o nome canônico do atributo, sem nenhum espaço em branco à esquerda ou à direita.

Conclusão :

Os itens a seguir são válidos, equivalentes e verdadeiros :

<input type="text" autofocus />
<input type="text" autofocus="" />
<input type="text" autofocus="autofocus" />
<input type="text" autofocus="AuToFoCuS" />

Os seguintes são inválidos :

<input type="text" autofocus="0" />
<input type="text" autofocus="1" />
<input type="text" autofocus="false" />
<input type="text" autofocus="true" />

A ausência do atributo é a única sintaxe válida para false :

<input type="text"/>

Recomendação

Se você se preocupa em escrever XHTML válido, use autofocus="autofocus", pois <input autofocus>é inválido e outras alternativas são menos legíveis. Caso <input autofocus>contrário , use apenas porque é mais curto.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fonte
1
"Se você se preocupa com ... XHTML". Não. Deixe-o morrer.
Dem Pilafian
22

Não , basta especificar o próprio atributo. Era assim também em HTML 4 .

Vários atributos são atributos booleanos . A presença de um atributo booleano em um elemento representa o valor verdadeiro e a ausência do atributo representa o valor falso.

Se o atributo estiver presente, seu valor deve ser a string vazia ou um valor que não faz distinção entre maiúsculas e minúsculas ASCII para o nome canônico do atributo, sem nenhum espaço em branco à esquerda ou à direita.

Exemplo:

<label><input type=checkbox checked name=cheese disabled> Cheese</label>
Pekka
fonte
10
Deu a Tim a resposta aceita ... ele precisa do representante mais do que você :)
Darryl Hein