2016-01-27 25 views
5

W pliku <button> specification part widzimy, że dozwolona zawartość to tylko Phrasing content. To część poprawny kod HTML (zaznaczone here):Treść frazowa ze zmienioną właściwością wyświetlania w CSS

<button> 
    <span></span> 
</button> 

To nie jest ważna część kodu HTML (zaznaczone here):

<button> 
    <div></div> 
</button> 

Error: Element div not allowed as child of element button in this context. (Suppressing further errors from this subtree.)

Ale możemy zmienić display własność <span>:

<button> 
    <span style="display: block"></span> 
</button> 

Wygląda na to, że używamy <div> zamiast <span>, ale kod HTML jest prawidłowy. Czy jest w porządku (według specyfikacji), aby użyć dozwolonego elementu treści i zmienić jego właściwość display?

+1

Istnieje racjonalny przypadek, w którym model zawartości elementu przycisku powinien być ** treścią przepływu z wyłączeniem elementów interaktywnych ** w HTML5, ale nikt nie przekonał go, więc zachował swój tradycyjny model zawartości. Starsze przeglądarki zmagałyby się z tym, ale nie musiały wpływać na definiowanie właściwej semantyki. – Alohci

+0

@Alohci interesująca sprawa, czy możesz dołączyć link do źródła? –

Odpowiedz

2

Nawet jeśli styl rozpiętość z display: block nadal nie można umieścić elementy blokowe wewnątrz niego:

<div><p>correct</p></div> 
<span style="display: block;"><p>wrong</p></span> 

The (X) HTML nadal musi przestrzegać (X) HTML DTD (w zależności od tego jeden którego używasz), bez względu na to, jak CSS zmienia rzeczy.

Są różne i dlatego nie ma tu nic trudnego.

+0

Rozumiem, dziękuję, to nie jest odpowiedź na moje pytanie. Przepraszam, poprawiłem moje pytanie. –

+0

możesz użyć 'span' z dowolnym zastosowanym stylem' CSS'. – Trix

+0

'' staje się elementem * poziomu bloku, ale elementy 'phrasing content' są domyślnie" inline-level ", jest OK? –