Autor Zpráva
Chamurappi
Profil
Obecně doporučené použití relativní polohy neexistuje, používá se většinou jako taková legrácka.
Tak se praví na stránce CSS pozicování. Je to pravda, ale moc nenápadná pravda. Myslím, že by si zasloužila samostatnou podkapitolku, možná i vlastní stránku (podobně jako mají problémy rámů).

Sestavit layout absolutním pozicováním nějak jde. Mnoho lidí si kupodivu myslí, že to jde i relativním. Začátečník nejspíš prochází následujícím myšlenkovým procesem:
1) Potřebuji mít na stránce obsah vedle menu. Jak to udělat?
   — Před pár lety by se mrknul na nějaký známý web a řekl by si „aha, tabulkou!“ — teď už těžko.
2) Musím to udělat přes <div>y a přes CSS. No jo, ale <div>y mám pořád pod sebou, i když jim nastavím šířku. Potřebuji nějak nastavit polohu… určit pozici…
   — Jen jasnovidce v této fázi napadne hledat pojem „plavání“.
3) Jé, absolutní pozicování vypadá slibně, stačí nastrkat obdélníčky na správná místa. Ale proč to vypadá na jiném počítači jinak?
   — Protože layout centruje a jeho obal nemá position: relative, pozicuje tedy od rohu prohlížeče.
4) Potřebuji pozicovat relativně k centrování => použiju relative. Jen musím trochu poštelovat left a top.
   — Pokud nemá levý sloupec pevnou výšku, vznikne samozřejmě docela křehká konstrukce.
5) Proč mám najednou pod stránkou takový průvan? Zeptám se na diskusi, nebo se utrápím k smrti.
   … a jestli se nezeptal a neumřel, trápí se dodnes.

Pokročilejší začátečníci už vědí, jak si ukuchtit layout, nebo jak si ho vykuchat z existující stažené šablony, nicméně při pokusu o nějaké drobné rozšíření/doplnění své stránky také mnohdy nasednou do špatného vlaku (konkrétně v bodě 3) a vyrobí si průvan někde jinde. Zkoumat pak, který ze stovek elementů způsobuje u stránky nadbytečný vodorovný posuvník, je docela výzva.

Třetím pozicovaným zázrakem, který se občas zjeví na diskusi, je naprosto zbytečné použití relativního pozicování tam, kde by mnohem lepší práci odvedl margin nebo padding. Ono to sice ve výsledku často vypadá stejně a třeba to i funguje bez problémů, nicméně margin je přirozenější — a kdo ho zná, ten ho užívá. Několikrát jsem tu již viděl pokus o vyrovnání výchozího marginu/paddingu u seznamů záporným relativním leftem.

Myslím, že by na JPW mělo být (ideálně i u popisu vlastnosti position) důrazné varování, že postrkávání pomocí relativního pozicování obvykle způsobí víc problémů než vyřeší. Jediné, k čemu se position: relative v praxi hodí, je reset souřadnicového systému pro absolutní pozicování a přerovnávání z-indexů. Někdy se ještě hodí k opravám (nebo vytvoření) chyb v Exploreru.
Trejpa
Profil
Chamurappi:
Zcestným myšlenkovým krokem vedoucí začátečníky k relativnímu pozicování je podle mě i opakovaná (neúplná) poučka, že „design se nedělá absolutním pozicováním“. Když ne absolutním, tak jakým? Zbývá jim relativní (a pak to tak vypadá).

Na stránku s pozicováním by to možná chtělo i nějaký odkaz na příklad nebo návod jak vytvořit (normální) rozvržení stránky pomocí float a clear (případně pomocí absolutní pozice) a důrazné varování, že relativní pozicování je pro toto naprosto nevhodné.
Bubák
Profil
Yuhů je příznivce pozicovaných layoutů, krásně to přiznává v www.30minut.cz/dusan-janovsky-staticke-stranky-jsou-dobrym-zakladem-webovych-vyvojaru/
Já mám moc rád pozicování a nesnáším obtékání.
Problém je v tom, že začátečník si myslí, že stačí, když absolutním nebo relativním pozicováním vlepí obdélníky (DIVy) na stránku a je hotovo, kdežto Yuhů ví, jak na to.
Začátečník chce mít web "ihned", zběžně si přečte JPW a už píše:
div#leve_menu  {position: ...; top: ...; left: ...; width: ...; height: ...; background-color: ...;}

Obecně doporučené použití relativní polohy neexistuje, používá se většinou jako taková legrácka.
Myslím si, že většinou se používá jako určení počátku souřadného systému pro vnořenou pozici, klasické využití třebas image replacement.
* Dodatečně jsem si všimnul, že Chamurappi o tom píše, příště musím pozorněji číst.

Chamurappi:
Třetím pozicovaným zázrakem, který se občas zjeví na diskusi, je naprosto zbytečné použití relativního pozicování tam, kde by mnohem lepší práci odvedl margin nebo padding.
Třena já jsem dost dlouho nechápal, proč použít margin místo relativní pozice. Relativní pozice je jen obyčejný posun, ale margin také může být záporný a je flexibilnější, můžu lze ho deklarovat podle potřeby na každé straně elementu.

Trejpa:
Na stránku s pozicováním by to možná chtělo i nějaký odkaz na příklad nebo návod jak vytvořit (normální) rozvržení stránky pomocí float a clear...
Dobrý nápad, a na stránku o float taky.
Když jsi tu nedal odkaz na svůj příklad, udělám to já. Tvá stránka má dobře komentovaný kód, takže je i návodem pro začátečníky.
Yuhů
Profil
To já vím, že to musím přepsat a že mi chybí stránka na rozvržení stránky pomocí obtékání. Někdy se k ní dokopu. Zatím prosím pokračujte v úvahách, dobře se to čte a bude se mi to hodit, až se do toho fakt pustím. Zároveň ale budu muset i přepsat hodně starších věcí, tak proto se na to tak "odhodlávám".
Miloš
Profil
Když už budeš překopávat stránku o pozicování, právě jsem tam narazil na toto:

Position: absolute (…) Souřadnice se počítají od začátku tzv. omezujícího bloku.
Omezující blok je (…) Dají se ale vytvořit nové omezující bloky -- tak, že se jim nastaví position: absolute nebo position: relative (vizte příklad zanořené pozice).
Position: fixed se chová jako position: absolute


Chybí tam informace o tom, že pro fixed se nedají vytvořit nové omezující bloky, fixed se vztahuje vždy k celému oknu prohlížeče.
Chamurappi
Profil
Reaguji na Yuhůa:
Zároveň ale budu muset i přepsat hodně starších věcí, tak proto se na to tak "odhodlávám".
Na stránce o pozicování je teď také psáno, že „ani ty nejnovější prohlížeče nepodporují CSS-P bezchybně; špatně je na tom zejména Navigator 4“, a o kousek níž je zmiňován Chrome i Explorer 7, což dohromady dává docela roztříštěnou představu o historii. Nicméně je dobré, že alespoň část té stránky byla v posledním desetiletí aktualizovaná.

Budeš-li se k úpravám odhodlávat příliš dlouho, stane se tradičním doskočištěm tápajících relativně pozicujících začátečníků toto vlákno. Během dvaceti dní existence už na DJPW získalo šest zpětných odkazů => za devět tisíc let jich bude mít skoro milion. Škoda každého milionu, který padne vedle.


Reaguji na Trejpu:
Když ne absolutním, tak jakým? Zbývá jim relativní (a pak to tak vypadá).
Možná jednou vznikne ještě jedno naprosto nesouvisející, aby to klíčové slovo position bylo pořádně využité.
František Hliva
Profil
Relatívne pozícovanie v nadradenom elemente nastaví relatívnu pozíciu ako východziu pozíciu, pre vnorené absolútne pozíciované elementy. Vačšinou je lepšie používať kombináciu relatívneho a absolútneho pozíciovania namiesto floatov, floaty používať čo najmenej, vačšinou prinášajú len problémy a hlavne v komplikovaných layoutoch je lepšie sa im vyhnúť kôli bugom (hlavne v IE6). Floaty majú opodstatnenie iba v prípade keď chceme obtekať element alebo nahádzať viac stĺpcov vedľa seba. Veľa kóderov floaty zneužíva, aj na účely na ktoré nie sú určené, pritom pomocou pozíciovania sa dá Layout krásne zjednodušiť a odpadajú problémy s kompatibilitou, len to treba vedieť.
Miloš
Profil
František Hliva:
Veľa kóderov floaty zneužíva, aj na účely na ktoré nie sú určené
Tomu nerozumím. K čemu jsou podle tebe floaty určené? A k čemu je kodéři podle tebe zneužívají? Chápu zneužití sémantického prvku k něčemu, k čemu neslouží (tabulky na layout, blockquote na odsazení, big/font/bold na nadpisy…), ale (dokonce masové) zneužití floatu? Na to se mi nedostává představivost.

pomocou pozíciovania sa dá Layout krásne zjednodušiť a odpadajú problémy s kompatibilitou
Záleží na tom, co ti víc vyhovuje, co se naučíš používat. Jsou lidi, kteří budou hájit do roztrhání těla floatované layouty, jiní zase se stejnou vehemencí budou prosazovat pozicované. Já jsem v tomhle pragmatik – jestliže se mi to píše dobře a funguje to, je úplně fuk, co z toho použiju.
panther
Profil
František Hliva:
Vačšinou je lepšie používať kombináciu relatívneho a absolútneho pozíciovania namiesto floatov
důvod?

vačšinou prinášajú len problémy a hlavne v komplikovaných layoutoch je lepšie sa im vyhnúť kôli bugom (hlavne v IE6).
jaké problémy? Jaké bugy, které by nešly fixnout jednou deklarací v CSS - a kterou kodér píše hned automaticky, jak píše zbylé deklarace danému elementu?

keď chceme obtekať element alebo nahádzať viac stĺpcov vedľa seba.
však to v layoutu chci - většinou 2 nebo 3 sloupce vedle sebe.

pomocou pozíciovania sa dá Layout krásne zjednodušiť a odpadajú problémy s kompatibilitou
pozicovaný layout určitě není jednodušší a nepřináší méně problémů než floatovaný layout - alespoň pro začátečníka ne.
Chamurappi
Profil
Reaguji na Františka Hlivu:
Relatívne pozícovanie v nadradenom elemente nastaví relatívnu pozíciu ako východziu pozíciu
To již zmiňuji jako oprávněné použití. Upozorňoval jsem na problematické kombinace s left, top, right, bottom, které začátečníkům zdánlivě pomáhají.

pritom pomocou pozíciovania sa dá Layout krásne zjednodušiť
Absolutně pozicované layouty mají docela zásadní problém s výškami — pokud neznáš výšku bloků (a tu u víceslovných textových bloků prakticky nikdy neznáš), nemůžeš napozicované elementy dávat s jistotou pod sebe.

Nicméně otázka využití absolutního pozicování a/nebo plavání je zde mimo téma. Chceš-li rozebírat postupy konstrukce layoutu nesouvisející s relativním pošoupáváním elementů, založ si prosím vlastní vlákno.
Bubák
Profil
František Hliva:
Veľa kóderov floaty zneužíva, aj na účely na ktoré nie sú určené
Na tvorbu layoutú se zneužívá floatování i pozicování, ale nic lepšího zatím není.

Pokud s tvorbou layoutu pomocí pozicování nemáš problém, nepatříš mezi začátečníky, pro které je tohle povídání určeno.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0