HTML5 ma nowy atrybut globalny hidden
, którego można użyć do ukrycia treści.
<article hidden>
<h2>Article #1</h2>
<p>Lorem ipsum ...</p>
</article>
CSS ma display:none
regułę, której można również użyć do ukrycia treści.
article { display:none; }
Wizualnie są identyczne. Jaka jest różnica semantyczna? Obliczeniowo?
Jakie wytyczne należy wziąć pod uwagę, kiedy używać jednej lub drugiej?
TIA.
EDYCJA : Na podstawie odpowiedzi @ newtron (poniżej) przeprowadziłem więcej wyszukiwania. hidden
Atrybut został gorąco sporna w ubiegłym roku i (podobno) ledwo go do specyfikacji HTML5. Niektórzy twierdzili, że jest to zbędne i bezcelowe. Z tego, co mogę stwierdzić, ostateczna ocena jest następująca: jeśli kieruję reklamy tylko do przeglądarek internetowych, nie ma różnicy. (Jedna strona twierdziła nawet, że przeglądarki internetowe używały display:none
do implementacji atrybutu ukrytego). Ale jeśli rozważam dostępność (np. Być może oczekuję, że moje treści będą czytane przez czytniki ekranu), to jest różnica. Reguła CSS display:none
może ukrywać moje treści przed przeglądarkami internetowymi, ale odpowiadająca jej reguła arii (np.aria-hidden="false"
) może spróbować go przeczytać. Dlatego zgadzam się teraz, że odpowiedź @ newtron jest poprawna, chociaż być może (prawdopodobnie) nie jest tak jasna, jak bym chciał. Dzięki @newtron za pomoc.
źródło
hidden
atrybut istnieje, ale z pewnością dobre pytanie, ponieważ wydaje się, że narusza podział struktury / prezentacji.Odpowiedzi:
Kluczową różnicą wydaje się być to, że
hidden
elementy są zawsze ukryte niezależnie od prezentacji:http://dev.w3.org/html5/spec/Overview.html#the-hidden-attribute
Ponieważ CSS może kierować reklamy na różne typy mediów / prezentacji,
display: none
będzie zależne od danej prezentacji. Na przykład niektóre elementy mogą siędisplay: none
wyświetlać w przeglądarce na komputerze, ale nie w przeglądarce mobilnej. Lub ukryj się wizualnie, ale nadal dostępny dla czytnika ekranu.źródło