No Future

Weblog přesunut na atd.havrlant.net

Další problém se značkou menu

15 leden 2006, 09:58
rubrika XHTML-semantika

Že je má oblíbená značka zavržená a tudíž všemi striktními webdesignery zároveň opovrhovaná, na to už jsem si zvykl. Ale nedávno jsem narazil na problém, který mě dost zaskočil. Do značky menu totiž nemůžete zanořit další značku menu.

Už dlouho jsem nepotřeboval menu zanořit, takže jsem si toho všiml až teď, což mě docela mrzí. Začínám si opravdu myslet, že si W3C na značku menu opravdu nějakým způsobem zasedlo. Jako by nestačila nálepka deprecated. Takže k věci. Pokud chcete zanořit nějaký seznam, provedete to takovýmto způsobem:

<ul>
<li>film
   <ul>
   <li>Mechanický pomeranč</li>
   <li>Tři oříšky pro popelku</li>
   </ul>
</li>
<li>hudba
   <ul>
   <li>Nirvana</li>
   <li>Visací zámek</li>
   </ul>
</li>
</ul>

Tento příklad je jednak funkční a jednak také validní. Nyní si namísto značky <ul> dosaďte značku <menu> a opět zvalidujte. Možná vás překvapí výsledek – validní to není, protože prostě do značky menu již další seznam nenarvete (ani <ul>). Takže mě napadají celkem tři možnosti řešení:

Nevidím jediný rozumný důvod, proč bych nemohl zanořit menu. A pokud by už někdo nějaký ten důvod proti zanořování menu našel tak zase nevím, v čem si pomůžeme, když namísto značky menu použijeme značku ul, která se tedy zanořovat může.

komentáře
  1. llook - #
    —    15. leden 2006, 12:41   

    Chtěl jsem poradit do li vložit div a do něj potom to menu, ale teď zjišťuju, že to HTML neumožňuje.

    Tak jsem objevil další výhodu XHTML – nemá tak striktní pravidla jako HTML ;-)

  2. Dero - #
    —    15. leden 2006, 15:26   

    http://www.w3­.org/…-spec_5.html#… http://webdesig­n.about.com/…ags-menu.htm

  3. Bolek metalista - #
    —    15. leden 2006, 21:34   

    Tak se se studem přiznávám, že jsem netušil, že je menu zavržené a upřímně to vůbec nechápu. Velmi souhlasím s Vašim názorem na zavrhování značek, už tak jich je skutečně málo. Co se týče vašeho problému s menu, příjde mi ale naopak logické, že to hlásí chybu. Jestli jsem to dobře pochopil, vy tag menu používáte místo tagu ul. Já používám menu dost zmutovaným způsobem a to tak, že všechny ul v navigaci ještě navíc do tagu menu obalím. Takže v případě vnořování úrovní navigace mi příjde sémantičnější tam ty ul nechat a celé to obyčejně do jednoho menu obalit. Myslím si, že menu jako takové je na jednom místě jenom jedno a nemůže tedy obsahovat jakési menu v menu. Když už, tak maximálně nějaká podmenu a pro to lepší tag než ul není.

  4. Timy - #
    —    15. leden 2006, 21:43   

    Bolek metalista: Taky jsem rozmýšlel, zda-li je lepší zanořit do sebe několik menu nebo do menu zanořit obyčejný seznam ul, ale ani jedno není IMHO zcela správně. Tak jako tak ani jeden případ není validní ;-) V menu nemůže být žádný jiný seznam.

    llook: To by byl skutečně nádherný obrat o 180 stupňů :-)

  5. StanleyCZ - #
    —    16. leden 2006, 00:03   

    IMHO se autor tohoto článku mýlí, do žádného seznamu menu ani ul samozřejmě další seznam vnořit nelze. Další seznam však může být obsahem položky seznamu li.

    Toto řešení by validní být mělo…

    [menu]
    [li]… [/li]
    [li][menu][li]… [/li][/menu][/li]
    [/menu]

  6. StanleyCZ - #
    —    16. leden 2006, 00:29   

    Omlouvám se za předchozí komentář, moc dobře jsem si článek nepřečetl. Spíš vůbec…

    A pokud jde o zanorení menu, tak pujde nejspíš o chybu validatoru. Ja umím pouze XHTML, takže nevím.

  7. Timy - #
    —    16. leden 2006, 14:37   

    StanleyCZ: Trochu to objasním. Ano, přímo do menu pochopitelně další značku menu nezanoříte, to nejde, musí se k tomu používat li. Ten příklad, který jste napsal, by byl validní v XHTML, protože je hloupé a nedokáže zakázat zanořování elementů (narozdíl od HTML, kde to lze). Klasický příklad odkaz v odkaze – druhý odkaz se obalí spanem a je to validní (ve spanu odkaz být může, že je span samotný v odkaze už není vůbec důležité). Proto ve specifikace existuje dodatek B, který zakazuje vnořování některých elementů, ale viditelně na vnoření menu zapomněli ;-).

    Jak tak na to koukám, tak ono to HTML má alespoň jasné pravidla, narozdíl od XHTML.

Jméno
Zapamatovat
http://
Zpráva

formátování: *kurzíva* **tučné písmo** `kód` "text odkazu":cíl odkazu

Tady formátuje Texy!

Rubriky

  • No Future
  • Internet
  • Se špetkou ironie
  • XHTML a sémantika
  • Testy
  • Oblíbené weblogy

  • La Trine
  • Derův zápisník
  • Yuhůův weblog
  • acciBlog
  • Martyho weblog
  • Ronnieho weblog
  • zimmiho blog
  • conBLOG
  • Klokynov blog
  • Buchtič blog
  • Dům mlhy
  • Anne’s Weblog
  • Mabfredův básnický blog
  • Další odkazy

  • Sémantika
  • MiSHAK
  • můj starší blog
  • Textpattern česky
  • Textpattern oficiální web
  • Jakpsatweb
  • Kocourek Koudy
  • Webylon