Wydaje mi się, że większość (może wszystkie) atrybuty we wcześniejszych wersjach HTML (przed HTML5) wymagały atrybutów, aby miały wartości, takie jak readonly="readonly"
.
Czy to prawda w przypadku HTML5 i autofocus
atrybutu?
Wydaje mi się, że większość (może wszystkie) atrybuty we wcześniejszych wersjach HTML (przed HTML5) wymagały atrybutów, aby miały wartości, takie jak readonly="readonly"
.
Czy to prawda w przypadku HTML5 i autofocus
atrybutu?
Odpowiedzi:
W HTML używasz atrybutów logicznych z wartościami lub bez, jak chcesz. Wartość logiczna, dla W3C, jak autofocus może być napisany tak autofocus
lub autofocus="autofocus"
czy również autofocus=""
.
Jeśli nie chcesz autofokusa, po prostu go nie pisz.
Myślę, że są zdezorientowani, ponieważ XHTML wymaga wartości dla wszystkich atrybutów: attributes="values"
.
Oto kilka informacji na temat użycia atrybutów logicznych w HTML: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute
disabled="disabled"
. To samo dotyczy zamykania tagów. W HTML nie każdy tag musi być zamknięty (np. Br lub input), ale ponieważ XHTML musi być poprawnym XML-em, potrzebujesz również znaczników zamykających.
disabled="disabled"
”. A SGML jest jedynym powodem, dla którego XHTML ma silly="silly"
składnię bool zamiast just whatever="true"
, a HTML jest jedynym powodem, dla którego this="false"
może to oznaczać = true. :)
Cytując specyfikację HTML5 i rozwijając nieco na Pekce:
http://www.w3.org/TR/html5/forms.html#autofocusing-a-form-control:-the-autofocus-attribute :
Atrybut autofocus jest atrybutem logicznym.
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :
Obecność atrybutu logicznego w elemencie reprezentuje wartość prawdziwą, a brak atrybutu reprezentuje wartość fałszywą.
Jeśli atrybut jest obecny, jego wartością musi być pusty ciąg lub wartość będąca dopasowaniem ASCII bez rozróżniania wielkości liter dla nazwy kanonicznej atrybutu, bez wiodących ani końcowych białych znaków.
Wniosek :
Poniższe są prawidłowe, równoważne i prawdziwe :
<input type="text" autofocus />
<input type="text" autofocus="" />
<input type="text" autofocus="autofocus" />
<input type="text" autofocus="AuToFoCuS" />
Poniższe są nieprawidłowe :
<input type="text" autofocus="0" />
<input type="text" autofocus="1" />
<input type="text" autofocus="false" />
<input type="text" autofocus="true" />
Brak atrybutu jest jedyną prawidłową składnią dla fałszu :
<input type="text"/>
Rekomendacje
Jeśli zależy ci na pisaniu poprawnego XHTML, użyj autofocus="autofocus"
, ponieważ <input autofocus>
jest nieprawidłowy, a inne alternatywy są mniej czytelne. W przeciwnym razie używaj, <input autofocus>
ponieważ jest krótszy.
Nie , wystarczy określić sam atrybut. Tak było również w HTML 4 .
Wiele atrybutów to atrybuty logiczne . Obecność atrybutu logicznego w elemencie reprezentuje wartość prawdziwą, a brak atrybutu reprezentuje wartość fałszywą.
Jeśli atrybut jest obecny, jego wartością musi być pusty ciąg lub wartość będąca dopasowaniem ASCII bez rozróżniania wielkości liter dla nazwy kanonicznej atrybutu, bez wiodących ani końcowych białych znaków.
Przykład:
<label><input type=checkbox checked name=cheese disabled> Cheese</label>