S grid jsem se zatím nesetkal. Neznám podrobnosti. Ale také si myslím, že rozdělení stránky pomocí table, za určitých situací, není špatný nápad. Přestože bývá šmahem zatracováno. Nicméně grid řešení mi přijde celkem elegantní, byť je to skoro totéž jako tabulka.
Tabulka může zůstat opravdu pro tabulkové hodnoty, tak jak (asi) byla původně zamýšlena. Vč. renderingu (dokáži si představit rozdíly, volnější pro grid /třeba při nedostatku šířky/, svázanější pro tabulku /i za cenu přetečení tiskové stránky, .../) a podobně.
Grid by tak mohl opravdu sloužit čistě pro vzhled. I kdyby v browseru 95% funkcí interně zpracovávaly stejné rutiny jak pro tabulku tak i grid.
Nápad se mi celkem zamlouvá.
Na <table>
není nic špatného, naopak je správně – pokud to používáte pro tabulková data. Zneužití pro layout je špatně, protože <table>
v sobě nese význam. Když se podíváte na stránku novin, není to přece žádná tabulka. Navíc HTML je značkovací jazyk, kterým se vyznačuje struktura obsahu – a prezentovaný pak může být různě. Může se zobrazit na obrazovce počítače, na mobilu, může být přečten. Tabulka je pořád tabulka, s pevně daným počtem sloupců a řádků, musí se tak zobrazit kdekoli, musí se tak přečíst. Grid řeší vizuální formátování, a to může být na různých zařízeních různé.
Pane Jirsáku, s Vaším názoremby se dalo hodně polemizovat. HTML vzniklo jako implemetace principů SGML pro hypertextové dokumenty. HTML si nikdy historicky nekladlo za cíl ani jednotné zobrazní, ani stránkovou orientaci. Naopak, hlavním akcentem byla provázanost (textových) informací a možnost vložit obrazové zdroje do textu a odkazy na přílohy. (V tomto ohledu není bez zajímavosti nastudovat si, co byl Gopher - to byl velmi využívaný protokol, dlouho stojící mezi FTP a HTTP).
Prvek TABLE byl opravdu zneužitý k tomu, aby do HTML a do prohlížečů přinesl stránkovou orientaci a (aspoň částečně) kontrolovaný zlom. Zneužitých prvků ale najedeme spoustu, H1-H5, UL/LI, ... To vše se používá dodnes jako kompromis mezi tím, co měly reprezentovat, a mezi tím, co "žádá trh".
Současné vyuřívání DIVŮ, které nenesou žádnou informační hodnotu, ale jsou jen grafickým balastem, nelze řadit, aspoň z pohledu HTML na o nic lepší úroveň.
U TABLE byl ve skutečnosti, opravdu, problémem jen ten dvouprůchodový rendering, kterému se ale dalo předejít. Naopak vhodná je tabulka do layoutu tam, kde potřebujete zachovat mřížku více sloupců a mnoha řádků - ostatní metody jsou více vhodné.
Bohužel, v literatuře i mezi (pseudo)odborníky se tato znalost zredukovala jen na to, že TABLE se používat nemá. Připomíná mi to Orwellovské: "každý, kdo chodí po dvou nohách, je nepřítel; každý, kdo chodí po čtyřech nohách nebo má křídla, je přítel".
Takže ano, zneužívání TABLE je prasárna, ale byl bych opravdu, opravdu opatrný toto téma zjednodušovat.
HTML vzniklo jako značkovací jazyk pro text (všimněte si, že v tom nikde není nic o zobrazení textu). Původně se skutečně bralo v úvahu jenom zobrazení, ale pak si lidé postupně uvědomili, že je HTML dobrý základ pro vyznačování textu bez ohledu na způsob jeho prezentace, protože HTML už mělo spoustu sémantických značek – h1
– h6
, ul
, ol
a dl
nebo právě table
. Pro prezentaci se pak začalo používat CSS. Proto se HTML už hodně dlouho posouvá k významovým značkám, přestala se používat značka font
, místo značky b
pro tučné písmo se používá značka strong
označující zdůraznění, a teprve ve stylech se určí, jak se má to zdůraznění prezentovat, atd. Proto byly do HTML5 přidány značky jako main
, article
apod.
Na používání div
a span
není nic špatného, tyto značky nemají žádný sémantický význam a je tedy jasné, že jsou použité jako pomůcka pro prezentaci. Není to úplně ideální a používají se často kvůli omezeným vyjadřovacím možnostem CSS, ale to naštěstí právě Grid a Flexbox výrazně omezí. Nicméně ty značky se budou používat dál, protože HTML má sémantické značky pro pár nejdůležitějších prvků, ale zbytek se holt musí poskládat z univerzálních značek. Naproti tomu zneužívání table
je špatné, protože v textu vyznačíte něco jako tabulku, ale ona to žádná tabulka není.
table
do layoutu vhodná není, protože layout je jenom způsob prezentace (a ani není jediný), přitom v HTML má být jenom význam, způsob jeho prezentace se dodává externě pomocí CSS – což umožňuje tytéž informace prezentovat různými způsoby.
Nezaznamenal jsem žádné vyjádření odborníka, že se table
používat nemá – od odborníků jsem slyšel vždy jen tvrzení, že table
se má používat pouze pro prezentaci tabulkových dat. A tak je to správně.
Uz zase... Clovece, naozaj, prosim vas, prestante. Tvrdit, ze u TABLE bol problem LEN dvojprechodovy rendering, ale inac to je uplne v poriadku ako nastroj pre layout stranky, je naozaj znakom, ze neviete o com hovorite. A ze DIV su graficky balast... ale no tak.
Mozno vo vasom svete teorie to tak naozaj vyzera, ale v praxi je cokolvek lepsie pre layout nez TABLE. Aj ten DIV, ktory je udajne graficky balast. Ale pripustam moznost, ze neviete o com je rec.
Patrně jste v té době nic nědělal. V době IE4 a NN3/4 byly zcela odlišné interpretace DIV a SPAN, TABLE bylo prostě jedno z východisek jak se dobrat cíle.
HTML bylo v té době znásilněno k layoutu a používání TABLE zatraceno. Ale pokud bychom měli být spravedliví, tak ve vývoji HTML bylo daleko víc iracionalit, než jen zneužívání TABLE.
Používat TABLE pro layout je samozřejmě nesmysl, ale nesmí se to brát dogmaticky. Stejně nesmyslné může být používání i DIV/SPAN, pokud není s rozmyslem. Další značky, které jsou zneužívány, jsem také uvedl.
Jako příklad, kde může být TABLE použitý i pro layout, a je to i sémanticky správně, je např. sloupcové zobrazení ve stylu novin, pokud není žádaná a žádoucí responsivita. Podle situace může být, ale nemusí, tabulkou řešený např. kalendář - ať už týdenní nebo měsíční - opět, lze to řešit i přes SPANY, ale proč, když sémantika tabulky tomu odpovídá?
Nevím proč ze mě děláte heretika jen kvůli tomu, že se na věci nedívám nekriticky, ale i o nich uvažuji..?
V době IE4 a NN3/4 byly zcela odlišné interpretace DIV a SPAN
Ne, nebyly. div
byl odjakživa blokový prvek bez sémantického významu, span
odjakživa inline prvek bez sémantického významu.
TABLE bylo prostě jedno z východisek jak se dobrat cíle
No, v době IE4 a NN3/4 bylo table
prakticky jediná možnost, jak se dobrat vícesloupcového layoutu.
HTML bylo v té době znásilněno k layoutu a používání TABLE zatraceno.
Nikoli. Nejprve bylo HTML znásilněno k layoutu a table
se pro tyto účely začalo používat. Teprve o mnoho let později bylo CSS alespoň na takové úrovni, že bylo možné začít dělat layout pomocí plovoucích div
ů a jiných divů.
Používat TABLE pro layout je samozřejmě nesmysl, ale nesmí se to brát dogmaticky.
Proč by se to nemělo brát dogmaticky? K používání table
pro layout dnes není žádný důvod, vždy to bude horší než jiné řešení, rozbijete tím responzivnost, hlasové čtečky a přístupnost obecně.
je to i sémanticky správně
Ne, není. Layout je způsob prezentace, sémantika je význam, jsou to dvě věci, které nemůžete vyjádřit najednou.
např. sloupcové zobrazení ve stylu novin
Viděl jste někdy noviny? Tam je nějaká tabulka? Když někomu chcete říct, kde to v novinách píšou, řeknete mu, že to bylo ve třetím sloupci ve čtvrtém řádku? Sloupcové zobrazení ve stylu novin je zrovna ten případ, kdy použití tabulky je jednoznačně špatně, bez výjimky. Ostatně sám jste to napsal, je to sloupcové zobrazení, takže žádná sémantika, ale prezentace.
Podle situace může být, ale nemusí, tabulkou řešený např. kalendář - ať už týdenní nebo měsíční - opět, lze to řešit i přes SPANY, ale proč, když sémantika tabulky tomu odpovídá?
Všimněte si, že většina programů umožňuje týdenní, měsíční nebo denní pohledy na kalendář přepínat. Kalendář je totiž ve skutečnosti strukturovaný seznam událostí, a „týdenní kalendář“ nebo „měsíční kalendář“ jsou jen způsoby jejich prezentace. Takže sémantika tabulky kalendáři obecně neodpovídá. Ale trefil jste se alespoň v tom, že někdy může dávat smysl vykašlat se na obecný kalendář, říct si, že prostě chcete prezentovat jenom měsíční kalendář formou tabulky a ostatní způsoby prezentace a význam dat vás nezajímají. Pak může dávat smysl použít tabulku – ovšem při vědomí toho, že je to zjednodušení a že se význam podřizuje vzhledu.
Nevím proč ze mě děláte heretika jen kvůli tomu, že se na věci nedívám nekriticky, ale i o nich uvažuji..?
Neuvažujete o nich, díváte se na ně nekriticky. Snažíte se tu nekriticky obhajovat používání table
pro definování vzhledu stránky, místo abyste se nad tím kriticky zamyslel a uvědomil si, že HTML má označovat význam, a způsob prezentace se dodává styly – přičemž jedno HTML může být pomocí různých stylů prezentováno různě.
Vaše postoje bych bral, kdyby se HTML používalo (a vůbec dalo používat) tak ideálně, jak píšete. Rozumím Vašemu postoji, i tomu, co říkáte, ale nesouhlasím s tím, že je to reálné a praktické.
Stejnou úvahou bychom pak nutně došli k tomu, že publikovat nemá smysl v ničem jiném, než TeXu, zalamovat stránky v ničem jiném, než InDesignu, a do layoutu pro tisk nezahrnovat nic jiného, než vektorovou grafiku, když to jde. Jezdit bychom mohli uniformními automobily, které by měly "ideální" výbavu, ale za zlomek ceny (úspory z rozsahu, úspory na marketingu), protože individualita stačí ve výběru barvy. ... ... ... Ano, takový svět by byl opravdu "ideální", ale taky děsně sterilní a bez šance na vývoj. (BTW to mi připomíná, jak se ke strnulosti vývoje hlásí Donald Knuth, tím, jak čísluje verze přidáváním desetinného rozvoje pi).
Jen na okraj, Vaše interpretace pojmu "tabulka" je pouze ve smyslu "(dvourozměrná) matice hodnot". Historicky byla tabulka jakýkoliv vizuální útvar, který se vyznačoval zarovnáním ve vertikálních a horizontálních liniích - obecně pravoúhlá plocha. Takže samozřejmě, noviny nebo kalendář jsou tabulkami. Čokoláda, obvykle navíc rozdělená na kostičky, je taktéž tabulkou - ale tu do HTML nenacpeme, aniž by ztratila na chuti a vůni.
Máte konkrétní příklad layoutu, který se dá vyřešit jedině tabulkou v HTML? Bez toho to vaše teoretizování nedává smysl. A než takový příklad začnete vymýšlet – CSS display: table
znáte?
Pouhé zarovnání ve vertikálních a horizontálních liniích tabulku nedělá, to by pak tabulkou bylo kde co. Pletete si tabulku (anglicky table) s mřížkou nebo roštem (anglicky grid). Noviny v žádném případě nejsou tabulka, je to vícesloupcová sazba, případně zarovnaná i vertikálně do mřížky.
Tlačíte mě někam, kam nechci. Skoro vše se dá řešit jinak,než tabulkou, ale je to slepé dogma.
V devadesátých letech se tabulkou "řezaly" obrázky, skládaly záhlaví, dělaly úplné zhůvěřilosti, a o nich samozřejmě němluvím.
Váš výklad pojmu "tabulka" / "table" je mylný, zbytečně úzký. I v angličtině má tabulka více významů.
Naopak to, co Vy zužujete na pojem "tabulka" je blíže významu "grid".
Sloupcová sazba má k tabulce nejblíž, protože od sloupců očekáváte svázané chování v obou rovinách, obdobně jako u kalendáře. Toto chování je základní vlastností, nikoliv vedlejším efektem z nouze.
Ale to je jedno, tato diskuse je z principu nevyhratelná a můžeme se shodnout na tom, že se neshodneme.
Skoro vše se dá řešit jinak,než tabulkou, ale je to slepé dogma.
Slepé dogma je to vaše přesvědčení, že je dobré někdy tabulky zneužívat pro layout, protože to jde. Kdybyste se nad tím zamyslel, dojde vám, že k tomu neexistuje žádný důvod, ale pouze si tím způsobíte problémy, protože ten sémantický význam z table
prostě neodstraníte. A sémantický význam table
prostě dogma je, protože je to tak nadefinováno v HTML standardu.
Váš výklad pojmu "tabulka" / "table" je mylný, zbytečně úzký. I v angličtině má tabulka více významů.
V češtině má tabulka také více významů, např. malá tabule – třeba tabulka skla nebo tabulka čokolády. My se tady ale bavíme o významu, dvourozměrné matice dat uspořádané do řádků a sloupců, kde řádky a sloupce mají nějaký význam – např. v řádcích máte produkty, ve sloupcích měsíce a v tabulce jsou počty prodaných kusů za daný měsíc. Zkuste si takhle popsat novinovou stránku…
Naopak to, co Vy zužujete na pojem "tabulka" je blíže významu "grid".
Nikoli, grid je organizovaná síť, nemusí tam být žádné řádky nebo sloupce ani data.
Sloupcová sazba má k tabulce nejblíž, protože od sloupců očekáváte svázané chování v obou rovinách
Ne, sloupcová sazba nemá k tabulce nejblíž, sloupcová sazba má nejblíž ke sloupcům. Kdyby pro sloupcovou sazbu byly stejně důležité sloupce i řádky, asi se to nebude jmenovat jenom sloupcová sazba, nemyslíte?
Toto chování je základní vlastností, nikoliv vedlejším efektem z nouze.
Jaká vazba je v řádkové rovině např. ve slovníku, který se typicky sází vícesloupcově? A nemyslím teď řádkový rejstřík, ale tu vaší řádkovou vazbu.
Přátelé, proč mám vždy dojem, že jakékoliv zamyšlení se nad účelem, historií i budoucím vývojem vyústí v reakce osob, které jsou většinou přesvědčeny o jediné správné cestě, ale zároveň neumí napsat ani argument, ani neznají historii vývoje?
Částečně to možná bude tím, že tu historii vývoje neznáte. A to, že neumíte napsat argumenty, bude zřejmě dané tím, že trváte na nějakém dogmatu, ale nepřemýšlíte nad tím.
jednoznačně tvrdím, že element TABLE není určený jen k prezentaci dvourozměrné matice hodnot.
To je právě ten příklad dogmatického tvrzení. Místo toho, abyste „jednoznačně tvrdil“, zkuste to vaše tvrzení něčím podpořit. Třeba příkladem, kdy je podle vás vhodné element table
použít k něčemu jinému, než označení dvourozměrné matice hodnot. To tvrzení jste zde totiž už uvedl mnohokrát, ale nikdy jste neuvedl konkrétní příklad – jenom na něm dogmaticky trváte.
Znovu opakuji, že celé HTML bylo "zneužito" k něčemu jinému, než bylo určeno.
Celé HTML bylo navrženo jako značkovací jazyk pro text, ale z počátku se toho moc nedrželo a přidávaly se tam i prezentační elementy. S příchodem CSS se to pročistilo a HTML5 je směrované jako sémantický jazyk, ve kterém se prezentace vůbec neřeší. Sice je HTML zneužité tím, že se používá pro tvorbu aplikací, ale to HTML pod tím je stále sémantické.
Vyjímat vy-/zneužití jen jediného prvku, v tomto případě TABLE, je prostě nespravedlivé, musel by se zde vypsat výčet HTML prohřešků, který by byl na jeden poměrně dlouhý článek.
Není potřeba psát dlouhý článek, mne by zajímal aspoň jeden dva příklady.
"ale to HTML pod tím je stále sémantické"
No, a to já mám pocit, že HTML spíše konečně začíná být sémantické. Protože dlouhé roky nebylo. Značky byly implementovány až na výjimky jen pro prezentační elementy. Takže jste měl nadpisy, odrážky, změnu fontu, zarovnání atd. Sémantické značky začaly přibývat až časem. Proto byly svého času tak populární mikroformáty, které semantiku do HTML doplňovaly. A upřímně, ani dnes to není žádná sláva, jediné co masově sémanticky zpracovává webové stránky jsou crawlery, co v nich hledají emailové adresy pro spam.
Zkrátka: HTML se zpočátku drželo toho, že je to značkovací jazyk pro prezentaci. Koukněte se na první prohlížeč a zkuste se zamyslet nad tím, proč jeho součástí byl WYSIWYG editor HTML.
Takže jste měl nadpisy, odrážky, změnu fontu, zarovnání atd.
Nadpisy nejsou prezentace ale sémantika. Žádný element pro odrážky neexistuje, existují sémantické elementy pro seřazený a neseřazený seznam. HTML na začátku byla směs sémantických a prezentačních značek (resp. ty značky měly většinou obojí význam), což bylo dost podstatné a nebylo to tak samozřejmé – a naštěstí si důležitost toho sémantického značení později lidé uvědomili a nasměrovali HTML k tomu, aby to byl jazyk čistě pro sémantiku. Porovnejte to třeba s TeXem, což je skvělý jazyk pro sazbu, ale je zaměřený čistě jen na vzhled, a sémantika se případně roubuje nad to pomocí různých maker.
Aha, no tak jestli informaci "jsem nadpis třetí úrovně" považujete za sémantickou, tak to se na definici sémantického webu asi neshodneme. V mém světě je to čistě vodítko pro prohlížeč, jak to má vypadat. Není mi úplně jasné, k čemu by byly dotazy typu "vrať mi seznam nadpisů třetí úrovně na těchto stránkách". V mém světě je sémantika informace typu "toto je název kapitoly", "toto je název zprávy" atd. To z toho, že je to H3, nepoznám.
Karel, 18:36: HTML je univerzální jazyk, nemá ani kapitoly ani zprávy, takže nedává smysl, aby měl jejich nadpisy. Proto má jen obecné nadpisy – a protože se často používají různé úrovně nadpisů, má HTML šest úrovní nadpisů. Jistě, dnes by to šlo udělat lépe, úroveň nadpisů řešit nějakým atributem, svazovat nadpis s obsahem, ke kterému patří. Na druhou stranu, ty nadpisy byly už v HTML2 před více než dvaceti lety – já myslím, že zavést tenkrát sémantickou značku, i když nedokonalou, bylo docela prozíravé.
h1 až h6 rozhodně nejsou vodítko pro prohlížeč, jak to má vypadat – o tom, jak má daný text vypadat, neříkají dokonce vůbec nic. Kdyby nadpisy byly určené tím, jak mají vypadat, nebyly by to žádné nadpisy, ale prostě jen odstavec textu s nastaveným velkým písmem, případně jiným fontem.
Dotaz „vrať mi seznam nadpisů třetí úrovně na těchto stránkách“ by byl vhodný třeba pro sestavení obsahu. Ale i kdyby nebyl – to, že nemáte využití pro jednu z miliardy možností sémantického značkování, neznamená, že sémantické značkování je k ničemu. Umožňuje to třeba už jen tak základní věc, jako jeden text prezentovat více způsoby – zobrazit jej na monitoru, na mobilním telefonu, přečíst jej hlasovou čtečkou, zaindexovat jej vyhledávačem.
Sémantický web je trochu něco jiného, a já jsem o sémantickém webu nic nepsal – psal jsem o tom, že HTML je jazyk pro vyznačování významu (sémantiky) v textu.
"Kdyby nadpisy byly určené tím, jak mají vypadat, nebyly by to žádné nadpisy, ale prostě jen odstavec textu s nastaveným velkým písmem, případně jiným fontem."
To je právě to jediné, co H1/H2/H3 atd. řadu let dělalo. Máte snad jinou zkušenost?
"neznamená, že sémantické značkování je k ničemu"
Tady někdo pochybuje o tom, že je sémantické značkování důležité? Já tedy ne, pro mne je to zásadní věc. Co zpochybňuji je vaše tvrzení, že H3 přidává nějakou sémantickou informaci. Nepřidává, protože v každém dokumentu to může být něco úplně jiného. Sémantický web je o tom, že dokážete strojově zpracovat webovou stránku a extrahovat z ní sémantická data. Přesně jak popisujete - když prohlížeč ví, že tohle je telefonní číslo, tak to může zobrazit jinak. Koukněte se na mikroformáty.
Jádro sporu je v tom, že dle mého názoru mi <H3> nic neřekne, protože to si každý web dělá jinak. Prohlížeče se k tomu celé roky staví stále stejně - zobrazí to jako odstavet textu s nastaveným velkým písmem, případně jiným fontem. Proto když se kouknete do většiny .css na většině webů, tak se stylováním H3 vůbec nezalamují. Stylují se místo toho classy. H3 se nadpisu dá jen pro prohlížeče co neumí .css.
No a vaši poslední větu mám chápat, tak, že sémantický web a sémantické značkování považujete za dvě nesouvisející věci? Navíc já od začátku tvrdil jen to, že HTML nezačínal jako jazyk pro vyznačování sémantiky, tím se stal až v průběhu let. V počátku nebylo ani jak značkovat, byl to textový formát generovaný WYSIWYG editorem. Označil jste kus textu a stiskl tlačítko pro tučné. A ejhle, bylo to zobrazené tučně. Stiskl jste tlačítko pro vložení odrážek a ejhle, mohl jste vkládat odrážky. Autor nepředpokládal, že by to někdo editoval ručně v textu, proto kupříkladu ani neřešil validnost HTML. Editor měl totiž vždy generovat validní HTML, neměl jak zapomenout třěbas na </b> a měl hlídat, že se nestane třebas <b><i></b></i>. Že je markup vlastně docela dobrá věc, jak smíchat text a sémenatiku, se začalo prosazovat až s HTML2.
To je právě to jediné, co H1/H2/H3 atd. řadu let dělalo. Máte snad jinou zkušenost?
Ne, h1
… h6
nic takového nedělaly. Dělaly to prohlížeče pomocí vestavěných stylů. Sémantický značkovací jazyk nedělá nic, jenom označuje význam textu, udělat s tím pak něco musí někdo jiný – ten, kdo ten text nějakým způsobem prezentuje.
Tady někdo pochybuje o tom, že je sémantické značkování důležité?
Uváděl jste jako nesmyslný příklad získání všech nadpisů na stránce. Nevím, co jste tím příkladem chtěl dokázat.
Co zpochybňuji je vaše tvrzení, že H3 přidává nějakou sémantickou informaci. Nepřidává, protože v každém dokumentu to může být něco úplně jiného.
Samozřejmě, že to může být v každém dokumentu něco jiného, neexistuje žádný nástroj, jak autory dokumentů přinutit, aby to používali správně. Ale pokud to autor používá správně, h3
označuje ve všech dokumentech to samé – nadpis třetí úrovně.
Sémantický web je o tom, že dokážete strojově zpracovat webovou stránku a extrahovat z ní sémantická data. Přesně jak popisujete - když prohlížeč ví, že tohle je telefonní číslo, tak to může zobrazit jinak.
A přesně takhle fungují nadpisy. Když prohlížeč ví, že je to nadpis, může ho zobrazit jinak. Hlasová čtečka ho může přečíst jinak, může nabídnout navigaci po nadpisech (což může udělat i ten prohlížeč). Je možné vytvořit obsah dokumentu. Nic z toho by nebylo možné, pokud by se pro nadpisy používalo prezentační značkování a nadpis byl označen třeba pomocí big
a b
.
Jádro sporu je v tom, že dle mého názoru mi <H3> nic neřekne, protože to si každý web dělá jinak.
Vy ale požadujete sématický jazyk pro konkrétní typ dokumentu. Jenže HTML je univerzální jazyk, kterým můžete popsat prakticky jakýkoli dokument. Když je jazyk obecný, samozřejmě nemůže být význam jednotlivých prvků určen moc detailně. Proto je v HTML šest obecných úrovní nadpisů, i když by se vám pro noviny hodily titulky, podtitulky a mezititulky, pro beletrii názvy dílů a kapitol, pro legislativu názvy částí, hlav, dílů a paragrafů atd.
Prohlížeče se k tomu celé roky staví stále stejně - zobrazí to jako odstavet textu s nastaveným velkým písmem, případně jiným fontem.
Což je správně, protože v naší kulturní tradici je zobrazování nadpisů právě takovýmhle způsobem. Respektive ty tradice se mírně liší podle různých kulturních oblastí, prohlížeče to zobrazují podle kulturní tradice USA a pokud někdo chtěl dělat web pořádně, pomocí stylu si zobrazení přizpůsobil české kulturní tradici. Bohužel už se to moc neděje a zrovna na webu se i u nás stále více prosazuje americká tradice (např. zarovnání odstavců vlevo na praporek a mezera mezi odstavci; česká tradice je zarovnání do bloku, bez mezer mezi odstavci a odstavce oddělené pomocí odstavcové zarážky).
No a vaši poslední větu mám chápat, tak, že sémantický web a sémantické značkování považujete za dvě nesouvisející věci?
Nejsou to dvě nesouvisející věci, ale není to jedno a totéž – jsou to dvě související věci. HTML jako značkovací jazyk je univerzální, sémantický web byla snaha ten obecný sémantický jazyk doplnit o sémantiku pro konkrétní typy dokumentů.
Navíc já od začátku tvrdil jen to, že HTML nezačínal jako jazyk pro vyznačování sémantiky, tím se stal až v průběhu let.
HTML začínalo jako jazyk pro značkování textů, který v sobě kombinoval jak sémantické tak prezentační elementy. Klíčové bylo to, že tam byly i ty sémantické elementy, protože to v té době vůbec nebylo běžné, ale později se ukázalo, že to bylo to podstatné.
V počátku nebylo ani jak značkovat, byl to textový formát generovaný WYSIWYG editorem. Označil jste kus textu a stiskl tlačítko pro tučné. A ejhle, bylo to zobrazené tučně. Stiskl jste tlačítko pro vložení odrážek a ejhle, mohl jste vkládat odrážky. Autor nepředpokládal, že by to někdo editoval ručně v textu, proto kupříkladu ani neřešil validnost HTML. Editor měl totiž vždy generovat validní HTML, neměl jak zapomenout třěbas na </b> a měl hlídat, že se nestane třebas <b><i></b></i>. Že je markup vlastně docela dobrá věc, jak smíchat text a sémenatiku, se začalo prosazovat až s HTML2.
Mýlíte se, HTML na začátku nemělo žádné tagy pro tučné písmo nebo kurzívu, mělo pouze sémantické tagy. To,co popisujete, bylo až rozšíření prohlížeče NCSA Mosaic. Že by se HTML editovalo jenom pomocí WYSIWYG editorů si v začátcích nikdo nemyslel, od začátku bylo HTML postavené na SGML, takže validita byla daná od začátku.
Frameset je super v prípade ak chceme základnými prostriedkami HTML zaktualizovať len časť obsahu stránky. Je to perfektné riešenie ak sa časť obsahu stránky nemení – odpadá nutnosť ju prenášať. Toto dnes vieme spraviť len aktívnym skripovaním.
Predstavte si, že navigácia je značne obsiahla a komplikovaná, má napr. 10 MB dát, pritom samotný obsah mimo navigácia vracia len dáta o veľkosti jedného paketu. Frameset vám umožní postaviť takú aplikáciu, ktorá bude na požiadavky odpovedať úsporne – jedným paketom a nemusíte to robiť pomocou JavaScriptu.
Pane Jirsáku, samozřejmě že framesety mají svá negativa, právě jak píšete. Ale mají i svá pozitiva, a záleží na situaci, co převáží. Nikdo zde nerozporuje, že framesety lze funkčne nahradit jiným řešením, ale frameset je v mnoha situacích rychlé a levné řešení. Rychlost (implementace) a cena jsou taktéž faktory, které někteří berou v potaz.
Největší negativum framesetů je to, že je nelze používat s děrnými štítky. Ty také mají svá negativa, jak píšete, ale mají i svá pozitiva, a záleží na situaci, co převáží. Nikdo zde nerozporuje, že děrné štítky lze funkčne nahradit jiným řešením, ale děrné štítky jsou v mnoha situacích rychlé a levné řešení. Rychlost (implementace) a cena jsou taktéž faktory, které někteří berou v potaz.
V dnesnej dobe s aktualnym jadrom bezi javascript dost rychlo na to, aby sme v tomto smere vobec nemuseli rozmyslat ci je lepsie pouzit javascript alebo frameset/iframe.
Dokonca ma jedno negativum frameset/iframe napada - Cross Origin a ochrana proti takemu obsahu v prehliadacoch. Nie je tak tazke na to narazit.
Když mám HTML kód, který chci někde použít, je mnohem jednodušší dát odkaz na ten kód a nechat to zpracovat prohlížeč, než si sám programovat v JavaScriptu načtení souboru a jeho vložení na patřičné místo. Navíc prohlížeč může začít stahovat příslušný soubor hned, jakmile narazí na příslušnou značku. Při řešení JavaScriptem musí nejprve zpracovat ten JavaScript, spustit příslušný kód a teprve pak začne stahování příslušného HTML. Nejde jen o rychlost zpracování na straně klienta, ale také o vývoj a přehlednost kódu, o chybovost, o síťové přenosy.
Pozor flexbox by se nemel zneuzivat na grid layout. Zjednodusene receno flex je na skladani v jedne dimenzi, treba radek nebo sloupec. Grid je na skladani v dvou (a vice) dimenzich. V podstate flex je doplnkem pro grid. V praxi to vypada tak, ze pouzijete mobie first a tedy flex v sloupci. Od tablet/desktop sirky zapnete grid a rozhazite si pak boxy dle libosti. A ty boxy v sobe klidne muzou mit flex.
Typicky mate nejaky hero hlavni boxik ktery ma v sobe este par <div> s popiskama, nadipsy a nejakym poziadim co pokryva jenom cast toho boxu a na ne pouzijete flex. To kde uz ten hero na strance bude resi prave grid.
Zkrotit se dalo prakticky cokoliv. Tabulka v HTML, která se používala na totéž, měla tu nevýhodu, že se musela procesovat na dvakrát. Prohlížeč ji musel načíst, pak načíst obsah a nakonec přepočítat tabulku podle obsahu - např. buňky, do kterých se obsah nevešel a nešel zalomit. Šlo to s omezeními obejít nějakým nastavením, kdy se daly tabulce určité atributy (už si nevzpomenu jaké), a průchod pak byl jen jeden.
Divy netrpí touto nevýhodou, ale zase měly horší pozicování v horizontálách, takže se musely vnořovat dva do sebe.
Jinak komentovat "vynález" typografické mřížky, to snad ani moc nebudu. Typografická pravidla jsou platná staletí, vyvíjejí se jen opravdové detaily. Knihy, noviny i magazíny to vědí. Možná se to postupně naučí i IT / autoři webů.
I desktopové ovládací prvky vycházejí z pouček daných typografií. Už jen levo-pravé, seshora-dolů orientování, odstupy, ... Dnes nejčistší aplikace na ovládání využívají právě zásadu "sloupců a mezer", akcenutjí text a upozaďují rámečky (např. tlačítek). Vývoj daný stovkami let nejde přeskočit "jedním nápadem".
Obodbně fungují přístrojové panely v moderních autech. Low end automobilky (á la Renault a pod.) zavedli dávno digitální budíky, aby se stejně nakonec ukázalo, že kruhový ukazatel a ručka jsou pro lidi daleko rychleji (podvědomě) čitelnější, než číslo (řidič vidí v periferii náklon ručky, hodnotu už si nemusí ani uvědomovat, jen ví, jestli je to v pořádku, či ne). Teprve asi 15 let po prvních automobilkách do toho skočily ty prémiové, ale jejich chyby už nezopakovaly. Displeje vykreslují budíky, počet ovládacích prvků je redukovaný, poloha prvku a piktogram vládnou nad textem.
Je to velmi zajímavý obor, ve kterém je neustálá evoluce, ale revoluci bych nečekal.
Vůbec nechápu, proč grid není v css už dávno, tohle mi opravdu moc chybělo. Místo toho se tu prosadil bootstrap, který se částečně snaží toto zalepit. Co se tyká těch co tady říkají jaký je rozdíl s mezi table, tak ať si zkusí s table udělat responsivní web, ten jde s gridem pěkně. Co se týče flex, tak grid mi příjde mnohem čitelnější a mnohem srozumitelnější. Za mě je grid něco co opravdu má smysl a doufám, že to co v poslední době vidím ve stránkách za hrůzy kvůli některým efektům zmizí.
*** Za mě je grid něco co opravdu má smysl a doufám, že to co v poslední době vidím ve stránkách za hrůzy kvůli některým efektům zmizí. ***
Jak to ta Pýthie (pozn. starověké věštírny záměrně dávaly věštby, které se daly pochopit dvěma odlišnými způsoby) myslela?
Takto:
"... a doufám, že to, co v poslední době vidím ve stránkách za hrůzy, kvůli některým efektům zmizí."
nebo takto:
"... a doufám, že to, co v poslední době vidím ve stránkách za hrůzy kvůli některým efektům, zmizí."
?
Nejsem web designer a z toho hlediska to nejsem schopen posoudit, ale jako uživatel z toho mám husí kůži. Vypadá to, že kůl "kreativci" všeho druhu dostanou zelenou a výsledkem budou weby, kde bude ještě mnohem obtížnější oddělit obsah od šumu. Už teď skřípu zuby, když na nějakém webu nejde použít Firefoxův "reading mode" (i na desktopu).
Nevidím souvislost mezi článkem a tím, zda budou mít weby vytvořené pomocí css gridu informačně hodnotný a odpovídající formu nebo nikoli. Pokud tam nějaká souvislost je, tak by css grid mohl mít dopad spíše pozitivní (lepší nástroj dovolí lepší výsledek). Reading modu by neměl css grid vadit, opět spíše naopak (ale nezkoušel jsem).
Souvislost je v tom, že místo aby webové stránky byly především stránky s nějakými elementárními a velmi střídmě používanými možnostmi formátování, tohle jenom uvolní hráz dalšímu řádění designerů posedlých nezvládnutou touhou tvořit. Výsledkem budou nepřehledné weby postrádající jakoukoli logiku (https://edition.cnn.com/, https://www.rottentomatoes.com/). Momentálně si u mnohých webů podobné výlevy odfiltruju pomocí reader modu, ale pokud díky CSS mřížkám budou do budoucna weby namísto stránek primárně arbitrárně poskládané tabulky, tak se teda máme na co těšit.
Ano, design dělá dnes každý, kdo má díru do prdele, stejně jako IT a programování. S tím musíme pracovat. Ale to mě nepřesvědčí, že je to správně.
Jenže původní komentář vůbec neřešil, co je správně a co špatně, řešil to, že designeři budou vymýšlet ještě větší šílenosti, než dosud, když jim to CSS Grid dovolí. Jenže když šílenosti v designu vymýšlí někdo, kdo o CSS nic neví, CSS Grid ho samozřejmě nijak neovlivní.
...to se může stát, ale podle toho taky pak vypadá výsledek - zbytečná pracnost a náklady navíc, potenciální poruchovost, špatná přizpůsobitelnost atd. Naopak - pokud grafik zná možnosti technologie, dochází s synergii a je tam přidaná hodnota, která spočívá právě v tom optimálním sladění možností technologie a výsledného produktu.
To je jako když architekt jen kreslí vizuální podobu budovy a nezajímá se o materiály, statiku, užití budovy, životnost, místní specifika atd. Určitě jich je dost ale je otázka, zda se má ještě nazývat architekt...
Právě prasení bych se nebál. Naopak. Připadá mi, že grid má buď stejné nebo menší možnosti, než šlo doteď udělat pomocí table. Když chtěl "kreativec" prasit, tak už teď tu možnost stejně měl.
Pokud dobře chápu, tak grid kontra tabulka právě pomůže oddělit sémantický a prezentační význam, takže lepší sub-strojová čitelnost (pro různé reading mode, nevidomé, ...)
Zamyšlení se.
Přátelé, proč mám vždy dojem, že jakékoliv zamyšlení se nad účelem, historií i budoucím vývojem vyústí v reakce osob, které jsou většinou přesvědčeny o jediné správné cestě, ale zároveň neumí napsat ani argument, ani neznají historii vývoje?
Z reakcí mám dojem, jako kdybych zde razil tabulky jako základní prvek layoutu, nebo jako kdybych nevnímal sémantiku dokumentů.
Nic z toho pravda není. Jen upozorňuji, že ne každá webová stránka je ideální, ne každý nese vůbec nějakou informaci, a ne každá ji nese navždy. Existují weby čistě designové, existují weby jen dočasné (např. k marketingovým akcím). Existují případy, kdy informace a jejich struktura je na pomezí designu a zároveň samotné informační hodnoty. Nikdy jsem také ani neuvažoval, že by se design měl dělat tabulkami, jako v devadesátých letech, ale jednoznačně tvrdím, že element TABLE není určený jen k prezentaci dvourozměrné matice hodnot.
Tím bych chtěl ze svojí strany příspěvky na toto téma ukončit, každý si už může vybrat, jak mým slovům rozumí. Všem hezký den.
Omlouvám se, ale příklady jsem některé uvedl, víc se tématem zabývat nehodlám. Nezlobím se na nikoho, že má odlišný názor. V celé diskusi jedině pan Jirsák uvedl relevantní argument, tedy, že TABLE je součástí sémantiky dokumentu, proti čemuž jsem dal na zváženou, jestli je potřeba se takového pravidla držet dogmaticky v marasmu, který HTML představuje.
Zbytek je opravdu na každém, necítím potřebu ani vyhrát, ani mít nejvíc palců nahoru.
He he. Jestli se grid uchytí, budeme se za pár let zase smát, jak budou lidé nadávat na "neslušné" použití div/span pro určitý (možná veškerý) stránkový align.
P.S.:Dotaz do pléna. Pokud by byl GRID 100% totéž jako TABLE, ale jen v jeho definici bylo, že NEjde o sémantickou značku. Také potom budete absolutně zatracovat všechny, co si dříve dovolili užít table (za určitých okolností, kde div/span jen zhoršil čitelnost /a to i strojovou/ a zvětšil náročnost pro rendering, namísto jednoduché table)? Přičemž užití grid byste považovali za ok? Pokud ano (a to není útok), zamyslete se, zda nemáte až příliš fanatický přístup, který jako extrém spíše škodí.
No ale, přesně tak jsem to myslel. Že spousta věcí si o to říká.
Také nemyslím že všechny a podobně. Ale podívejte se třeba na hlavní stranu root, lupy, idnes, seznamu a jiné. Typický X-sloupcový design, s jistým způsobem prvotním a závěrečným oddílem sahajícím pře část /či všechny/ sloupcové oddíly.
V rámci sloupců pak vnořené "tabulkové" (==stylem stále shodné) rozdělení po řádcích, kde se opakuje motiv - ikonka, nadpis, krátký popis, a podobně. A v tom celkovém zápatí/záhlaví či jednom ze sloupců dále "tabulkový" (X*Y) přehled dalších logických prvků odkazů (obrázek, velmi stručný popis) coby reklama ať už na vlastní články, spřátelené, či úplně cizí projekty.
Ať chceme či ne, ten "tabulkový" pohled se třeba na hlavní strany (novinového typu) obvykle hodí. Reálně se užívá (i když nyní obvykle za použití jiných metod než table). Něco jiného jsou pak věcné články a podobně. Pochopitelně. Tam grid logicky moc smyslu nedává.
xxxxx, 17:55: Pletete si tabulku (table) a mřížku (grid). To, co popisujete na Rootu a označujete strany novinového typu, není tabulka, ale právě mřížka. Tabulka se vyznačuje tím, že řádky a sloupce mají význam, a buňky tabulky obsahují něco, co má vztah k příslušnému řádku i sloupci.
Vaše teorie, co kdyby CSS Grid byl udělaný jako HTML tabulka bez sémantického významu, má tu drobnou trhlinu, že zaměňujete HTML a CSS. HTML je sémantické, určuje význam, CSS definuje způsob prezentace (nejen vizuální). Jeden a ten samý obsah můžete prezentovat mnoha různými způsoby, proto je HTML a CSS oddělené.
Zkuste si představit, jak je titulní stránka Rootu prezentována hlasovou čtečkou. „Hlavní sloupec a ??? řádek: Odpověď na názor“. Pořád si myslíte, že je to tabulka?
Silhavy: Tym padom sa dostavame opat k tomu, ze vlastne neviete o com hovorite, pretoze rec bola o layoute robenom tabulkami. To, ze table sa moze pouzit na prezentaciu tabulkovych dat je predsa uplne v poriadku a to tu ani nikto nepopieral. Ale to, ze do layoutu date table aby ste napr ukazali mesacny kalendar alebo poradie timov v NHL este z layoutu nerobi tabulkovy layout. To sa opat dostavame k tomu, ze operujete s vyrazmi, ktorym nerozumiete.
Prosím přečtěte si diskusi od začátku. Pozorně. Protože tam najedete, že zneužívání tabulky pro layout jsem kritizoval, ale stejně tak jsem kritizoval nesmyslné vyhýbání se tabulkám za každou cenu, i tam, kde jsou z některých důvodů vhodné. U některých webů je důležitá sémantika (např. kvůli UX, responsivitě, přístupnosti, ...), u některých nikoliv - i toto musí vstupovat do rozhodování.
Samotný základní layout dělat výhradně / převážně tabulkou je nesmysl a nemá opodstatnění. Naopak data, která je potřeba zarovnávat (tabelovat) do tabulky patřit mohou. Jako jeden z příkladů jsem dával layout, který by měl vizuálně připomínat novinovou sazbu. Novinová sazba se na webu běžně nepoužívá, ale pokud už by někdo chtěl evokovat tento styl (= retro, designová záležitost, nikoliv informační web), pak bych použití tabulky nevylučoval. V takovém případě je totiž i responsivita nežádoucí (= mimo přání zadavatele). Podobným případem může být např. samotná dlaždice produktu v dlaždicovém zobrazení e-shopu - veškeré informace v dlaždici spolu souvisí, takže i sémanticky k sobě sedí.
Takže znovu: jediné, co říkám je, aby lidé mysleli nad tím, kdy je jaká technologie (způsob zpracování) vhodná. Jinak se dělá web á la root.cz, který musí být přístupný, má data denně měněná, potřebují ho číst všichni (i hendikepovaní), a něco jiného je výroční produktový web pivovaru, který poběží tři měsíce a jeho účelem je mazat virtuální pivní pěnu kolem tlam úzké cílové skupiny.
Ale prdlajz otáčení. V layoutu jsou prvky, které si o tabulku vysloveně říkají, a přesto se jim kodéři vyhýbají.
Příklady jsem dal, někdo se mnou třeba souhlasí, někdo nesouhlasí, ale každopádně jde vidět, že je to kontroverzní téma.
Dále jsem tvrdil, že existují projekty a situace, kde přístupnost, responsivita a UX nehrají první roli, a kde je pragmatický přístup na místě.
Jestli jste moje příspěvky pochopil tak, že hlavní layout stránky má být tabulka, pak jste si domyslel něco, co jsem netvrdil.
V layoutu jsou prvky, které si o tabulku vysloveně říkají, a přesto se jim kodéři vyhýbají.
A je to správně, že se jim kodéři vyhýbají – buď nad tím přemýšlejí, a nebo alespoň používají best practices oboru. Layout se totiž z velice dobrých důvodů řeší v CSS, HTML z velice dobrých důvodů popisuje jenom obsah.
Příklady jsem dal
Jaké? Novinovou sazbu? Možná je chyba, že to zatím nikdo explicitně nenapsal, ale – nikdo po vás nechce příklady toho, kde by se table
dalo pro layout nějak zneužít – chceme po vás příklady, kde by to použití bylo podle vás vhodné.
každopádně jde vidět, že je to kontroverzní téma
To, že něco opakujete pořád dokola, nepředkládáte argumenty a ignorujete argumenty ostatních, z toho nedělá kontroverzní téma.
Dále jsem tvrdil, že existují projekty a situace, kde přístupnost, responsivita a UX nehrají první roli, a kde je pragmatický přístup na místě.
Takové projekty sice existují, ale i v takových projektech je nevhodné používat pro layout element table
. To je totiž to, že jste za celou dobu neuvedl jediný příklad, kdy by použití table
pro layout bylo vhodné, tj. převažovaly by tam výhody nad nevýhodami. Vy jste dokonce neuvedl ani jedinou výhodu použití table
pro layout. Zatím jediný důvod pro takové použití, který plyne z vašich komentářů, je ten, že je to podle vás kontroverzní, a vy pravděpodobně preferujete kontroverzní věci.
Ale to se pořád točíme dokola kolem Vašeho upjatého výkladu, že TABLE určený jen k prezentaci dvourozměrné matice hodnot, a že k ničemu jinému ten element neslouží. Kdybychom na HTML, a vůbec na celý svět nazírali takto černobíle, nikam bychom se nehnuli.
Stejnou redukcí ad absurdum byste ve Vašich úvahách mohl dojít k tomu, že jakýkoliv grafický prvek je zbytečný, protože už od dob Guttenberga je přeci dané, jak se mají informace reprodukovat.
Prostě hon proti TABLE byl zveličený.
To, že HTML je určené pro popis obsahu a CSS pro definování způsobu prezentace není můj výklad – nad účelem těchto formátů panuje všeobecná shoda mezi lidmi, kteří se webem zabývají, ty formáty se i rozvíjejí s ohledem na tento účel.
Pokud by jeden element sloužil k několika různým věcem, bylo by to dost nepraktické, protože byste nikdy nepoznal, ke kterému účelu je zrovna použit.
Kdybychom na HTML, a vůbec na celý svět nazírali takto černobíle, nikam bychom se nehnuli.
To není žádné nazírání, table
je takhle definováno. Neexistuje žádný důvod, proč definici nějak rozmazávat – pokud bychom potřebovali definovat něco jiného, není problém pro to zavést nový element.
Navíc vy pořád básníte o dalších způsobech použití table, ale zatím jste neuvedl ani jeden další způsob použití, který by měl nějaké výhody.
Prostě hon proti TABLE byl zveličený.
To není žádný hon proti table
. Je to pouze snaha vysvětlit vám, že není nic špatného na tom, že se table
používá tak, jak je definována. Neuvedl jste žádný důvod, proč to používat jinak. Jestli pouze za každou cenu chcete být kreativní, klidně si table
používejte pro vkládání obrázků, img
jako patičku stránky a odkazy si dělejte pomocí bflmpsvz
, ale nedivte se, že ostatní nesdílí to vaše nadšení pro to dělat věci za každou cenu jinak.