Autor Zpráva
Miloš
Profil
Už jsem tu párkrát psal, jak si pomáháme až přespříliš nesémantickými divy (kromě poslední doby viz má milená sémantická nirvána).
Rozčiluje mě, když čtu úchvatné rady typu „udělej to v divech“, jako by se stránky dělaly ne v HTML, ale v divech.
Naprosto k nepříčetnosti mě dohnal před necelým týdnem Skratch: nadivuj to neměj to v html.
Nadívané stránky! Properuna proč? Co jsem komu udělal?

Někteří „díky“ divům natolik zpohodlněli, že ani nevědí, jak je redukovat, jako včera Měsíček: moc divů víš jak to udělat lépe? Já jsem na to nepřišel ... – a to jich tam bylo devět; mně stačily na totéž tři (a to jsem byl ještě moc pohodlný).

Vytvořil jsem proto dvousloupcový layout zcela bez divů, funguje v Opeře, FF a v IE 6 a výš; viděl jsem screenshot z konqueroru a taky OK.

Samozřejmě že takové řešení vyžaduje trochu víc ladění v CSS; rozumnému použití divů se nebráním, ale tohle jsem prostě vytvořit musel. Jako ukázku těm, kteří sémanticky tápou. Ostatně jsem došel k názoru, že za většinu problémů může špatná sémantika; když člověk ani neví, co píše, pak má hokej i v CSS.
Myslím, že jakmile zase nějaký dobrák bude někoho nabádat k „tvorbě z divů“, měli bychom oba nešťastníky včas zabrzdit, než si ublíží špatnými návyky; a můžeme je odkázat například na tenhle můj výše uvedený výtvor.
Railbot
Profil
Jo, hezký. Ale v praxi nepoužitelný. Stavba layoutu pomocí divů je samozřejmě ok. Špatné je jen to, že se toho někdo chytne natolik, že do divů cpe i text místo toho, aby to fláknul od odstavce apod. Asi to jsi měl na mysli.
Joker
Profil
Miloš
Souhlas, že postup "smaž všechny <table> a <tr> a všechny <td> změň na <div>" není zrovna ten správný způsob změny webu na beztabulkový.
Pak jsou ještě "beztabulkoví extrémisti", kteří někomu vynadají za používání tabulek i když tam ty tabulky má naprosto oprávněně (tzn. používá <table> skutečně pro tabulku).
Beru tohle jako příklad dovedený do extrému, přesto udělat z <div> jakýsi zakázaný prvek mi přijde podobně přehnané jako dělat zakázaný prvek z <table>.

Já bych to řekl takhle: Pokud nějaké prvky na stránce tvoří logický celek a přitom se pro ně nehodí žádný jiný prvek, je správné použít <div> (případně <span>, pokud je to řádkové).
Například když budu mít:
(nadpis příspěvku), napsal Joker 22.12.2007

...podle mého je obhajitelné tvrzení, že "napsal Joker 22.12.2007" tvoří jeden logický celek řekněme "Informace o příspěvku". Přitom to není zvýrazněná informace (zvýrazněné je jen jméno autora), není to odstavec, je to prostě jen logicky související řádkový text. Pak je podle mého názoru sémanticky správné to nakódovat:
<h?>(nadpis příspěvku)</h?>, <span>napsal <strong>Joker</strong> 22.12.2007</span>

Přidám k tomu ještě text příspěvku, což může být několik odstavců. A opět je obhajitelné, že to celé dohromady tvoří logický celek pojmenovaný "příspěvek". A pro ten je správné použít <div> Tj.:
<div><h?>(nadpis příspěvku)</h?>, <span>napsal <strong>Joker</strong> 22.12.2007</span>
<p>text příspěvku</p>
</div>
...a podle mého názoru je to sémanticky správně.

Jak jsem říkal, se základem toho tvrzení (dělat beztabulkový web přeměnou <td> na <div> je špatně) souhlasím, ale nezakazoval bych <div> úplně. Moje kritérium je: Pokud mám logicky související obsah, pro který se nehodí jiný prvek, použiju <div> (popř. <span>).
Uznávám, že důvodem použití toho prvku je často potřeba ten blok nějak formátovat, ale nesouvisí často potřeba nějaký blok formátovat jako celek s tím, že to skutečně logický celek je?
Joker
Profil
Njn, já mám holt sklon věci víc okecávat, Railbot napsal zhruba totéž jedním řádkem :-)
Skratch
Profil
Naprosto k nepříčetnosti mě dohnal před necelým týdnem Skratch: nadivuj to neměj to v html
jo pěkný ale asi sis nepřečet co sem napsal po tvé připomínce, znělo to takto:
pardon mel sem namysli samozrejme misto tabulek ať to udělá v css, špatně sem to napsal...
Měsíček
Profil
to vyjde skoro nastejno :-))
habendorf
Profil
Naprosto k nepříčetnosti mě dohnal před necelým týdnem Skratch: nadivuj to neměj to v html.

Proč? Jasně že je to blbost, ale proč tě nějaký výkřik do tmy přivádí k nepříčetnosti? To bych byl nepříčetnej při každejch zprávách :o)
Měsíček
Profil
Miloš :

Někteří „díky“ divům natolik zpohodlněli, že ani nevědí, jak je redukovat, jako včera Měsíček: moc divů víš jak to udělat lépe? Já jsem na to nepřišel ... – a to jich tam bylo devět; mně stačily na totéž tři (a to jsem byl ještě moc pohodlný).

Trošku si zase zpohodlněl bez divů, nevidím žádnou nevýhodu v tom když má někdo na stránce 9 divů, já to vidím jako průměr a to, že ty máš 3 divy a ostatní děláš jiným způsobem je čistě tvoje věc, ale stává se z tebe pomalu a jistě sémantický fanatik tak pozor na to.
Skratch
Profil
to vyjde skoro nastejno :-))
jaktože... vždyť já to myslel tak že jako layout udělá v css a ne v tabulkách, a to je přeci správně ne :D takže vlastně já to myslel dobře ale Miloš to pochopil tak že sem myslel celé to udělat v divech a to já nemyslel... takže to nevyjde moc nastejno :P
Manq
Profil
Miloš to pochopil tak že sem myslel celé to udělat v divech a to já nemyslel
Ale napsal jsi to tak.
Měsíček
Profil
to klidně může udělat i v tabulkách pomocí CSS ;)
Miloš
Profil
Skratch
jo pěkný ale asi sis nepřečet co sem napsal po tvé připomínce
Ale to víš že přečetl, ale tos tam přeci napsal až poté, co jsem byl rozpálený doběla ;-)

fšicy:
A nebyl jsem zase tak nepříčetný; to nikdo nepochopíte nadsázku?

Stejně tak je nadsázkou můj bezdivový layout.
Nikde jsem nepsal, že by divy byly zlo.
Naopak jsem napsal, že je ke stavbě layoutu běžně používám (stejně jako si – nemám-li pro řádkový prvek sémantickou značku, vypomůžu spanem; jak píše výše Joker, nebo když dělám klikací hlavičku se zakrytým textem), ale s rozmyslem. Schválně posuďte sami:
peterko92ův web potřebuje 9 divů: http://dnvbikers.tym.sk/
Já mám na totéž řešení divy tři: http://kesolim.sweb.cz/TMP/kobylamamalybok/
Jestli mi něco vadí, tak je to právě to nesmyslné flákání jednoho divu na druhý.
Manq
Profil
Miloš
Beru to tak, že oba případy (tvůj i Skratch (jeho původní návrh)) jsou extrémní
Měsíček
Profil
Tak miloši mě se podařilo teď udělat stránku jen s jedním divem :o)
Miloš
Profil
Měsíček
Sem s ní.
Railbot
Profil
Měsíčku, znovu jsi vynalezl kolo?
Měsíček
Profil
Railbot : no, tak byl jsem nucen přidat ještě jeden takže teď tam mám divy 2, ale dělám vše pro to, abych ten jeden dal zase pryč, jestli se mi to podaří tak sem do tohoto vlákna hodím link ;) jinak Railbote šlo o to, že se lepším ;) z 15 divů na 2 to je výkon ne?
Joker
Profil
z 15 divů na 2 to je výkon ne
No, to záleží. Třeba na mém webu hlavní stránka Zápisníku má divů 38, jestli jsem dobře počítal, a nějak mi nevadí, že jich je zrovna tolik :-) I když je pravda, že to číslo je z velké části způsobené tím, že každý příspěvek obsahuje 3x <div> a na té stránce jich je deset :-)
A ještě navíc tam mám párkrát <span>, který tam ze sémantického pohledu nemá co dělat... akorát obaluje zavináč v e-mailech, aby to roboti neměli tak jednoduché...

Jak jsem psal, spíš než samotný počet prvků je důležitější otázka, jestli daný prvek má na daném místě smysl. Když vezmu třeba "fekální styl":
<div class="nadpis">Nadpis příspěvku</div>
<div class="odstavec><span class="odsazeni"></span><span class="velky-tucny">T</span>ext uvnitř odstavce</div>
a nahradím to:
<p class="nadpis">Nadpis příspěvku</p>
<p class="odstavec"><strong class="odsazeni"></strong><strong class="velky">T</strong>ext uvnitř odstavce</p>

...není tam žádný <div> ani <span>, ale o kolik je to lepší než to předtím?
djlj
Profil
<p class="nadpis">Nadpis příspěvku</p>
Spíš třeba <h*>.
Railbot
Profil
Měsíček
Na tvém místě bych si tolik nefandil, udělat web jen jedním divem není nic za co by se dával táborový diplom. V praxi je to stejně nepoužitelné, jde jen o efekt, že se to nemá s DIVy přehánět. S trochou snahy web jen jedním divem udělá každý, kdo si k tomu na chvilku sedne.
Měsíček
Profil
Já si moc nefandím, ale zjišťuji, že se mi dělá hned lépe :-) když je těch divů méně a více se vyznám v kódu .. jinak je jasné, že když se někdo zapře a trochu se do toho zahloubá tak to udělá skoro každý viz. můj případ ;)
Joker
Profil
djlj
Spíš třeba <h*>.
Právěže ne :) Ten kód měl demonstrovat, že to, že tam nejsou <div> nebo <span> ještě neznamená, že to je správně ;-)
djlj
Profil
Joker
Aha, promiň, že jsem ti to pokazil :).
Miloš
Profil
Měsíček
Já si moc nefandím, ale zjišťuji, že se mi dělá hned lépe :-) když je těch divů méně a více se vyznám v kódu
Jsem rád, že s tebou taky jednou (aspoň o Vánocích) mohu bez výhrady souhlasit ;-)
Chamurappi
Profil
Reaguji na Miloše:
Když se ti daří <div>y tak hezky vyhladit, mohl bys je zase oživit v jejich původním významu. <div> je division, tedy oddíl. Měl by objímat místo, k němuž se vztahuje nadpis.

Zajímavost z říše specifikací:
Ve standardu ISO HTML existují v tzv. přípravném procesu elementy <div1> až <div6>, které dokreslují hierarchii nadpisů. V <body> jsou dovolené blokové elementy, pak <h1> a hned za ním <div1>, v <div1> jsou dovolené blokové elementy, pak <h2> a hned za ním <div2> atd. — ty očíslované <div>y mají počáteční i ukončovací značky volitelné, takže je parser dosazuje automaticky podle nadpisů. Díky tomu umí validátor zařvat, pokud posloupnost nadpisů nesedí (ukázka). Přípravný proces však je určen právě jen pro to důkladnější validování, nikoliv pro běžné používání, takže očíslované <div>y jsou jen teoretický aparát. V „ostrých“ ISO HTML dokumentech se objevit nesmí.
Miloš
Profil
Chamurappi
mohl bys je zase oživit v jejich původním významu. <div> je division, tedy oddíl.

Tak, jak jsou míněny v ISO, je (jak ostatně uvádíš) nelze používat.
Sám (pokud, tak) je používám jako obalení oddílů, které patří logicky k sobě, což sice není to, o čem mluví ISO, ale nakonec to není tak daleko od věci.

Například u básniček – ještě nedávno vzhledem k nepodpoře sourozeneckých selektorů – jsem jedním divem obaloval celou básničku všetně nadpisu (<div><h2>nadpis blázničky</h2><p>verše<br>v<br>jedné<br>sloce</p> <p>verše<br>v<br>jiné<br>sloce</p></div>). Šlo to buď tak, nebo přebujením classů.
No a potom jako obal hlavního oddílu (oddělení, division), hlavního obsahového a vedlejšího obsahového oddílu stránky.

Současná situace (potřeba minima divů, nepotřeba takové přemíry tříd) mi vcelku vyhovuje.
Takže mi divy ve významu sémantického vyznačení oddílu nechybí. Spíš bych uvítal značky jako <anti-em> nebo <anti-strong> nebo validitu vnořených <menu>.

Konečně pokud jde o ono oživení <divu> v původním významu, asi spíš počkám, jestli do toho vnese nějaké světlo HTML5.
filosof
Profil
Muhehe.. pánové, řešíte kraviny :-) DIV není nesemantický už jenom proto, že jednoduše nemá význam.. takže není semantický, ani nesemantický.. a diskuse o tom, kolik divů může/nemusí někdo použít? Prd.

Tak schválně.. který web toho více prodá - ten s devíti divy nebo s pěti? :-)
Railbot
Profil
filosof
Nás to ale baví :o) Tohle není o tom jestli je lepší web s 5ti nebo s 9ti divy, ale o tom, že to jde. Dá se na nich ušetřit a je fajn mít kód, který v sobě nese jen to nejnutnější. Samozřejmě je to tak trochu teoretická rovina, protože v praxi, zvláště u velkých projektů, nehraje jejich počet roli. To víme všichni.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0