Margin, border a absolutní posicování

Fakt, že něco absolutně naposicujeme – tj. umístíme přesně na určité místo vlastnostmi top/bottom, left/right – nemusí znamenat, že to na daném místě skutečně bude.

Změnit posici elementu s position: absolute dokáže vlastnost margin.

Obsah je v obalu s position: relative.

Obsah.

Abs. posicovaný element (bottom: 0; right: 0)

Jak je vidět, přidání marginu element posune.

To na jednu stranu může být výhodné chování, na stranu druhou to může nepříjemně překvapit u elementů, které mají různý margin napříč prohlížeči. To je třeba element <button>, který má v Chrome 2px margin a jinde má nulu.

Živá ukázka rozdílu v Chrome.

Výchozí margin tlačítka v Chrome

Hranice obalu

Další zajímavá věc je, kde se nacházejí hranice obalu s position: relative, kam se potom prvek absolutně umisťuje.

Vezmeme-li si obecné znázornění boxu, pomyslný bod „top: 0; left: 0“ se nachází na hranici mezi paddingem a borderem.

Části boxu

Někdy je cílem, aby například rámeček boxu splýval s rámečkem absolutně posicovaného tlačítka.

Splývání okrajů

Řešení je buď záporný margin o rozměrech rámečku, nebo záporné souřadnice top/bottom, left/right – rovněž o tloušťku rámečku.

Ukázka obou postupů

Problém nastane, když budeme potřebovat obalu nastavit overflow: hidden, protože rámeček se v podstatě nachází mimo obsah + padding (jak znázorňuje předchozí obrázek), takže bude oříznut.

Splývání okrajů

Živá ukázka

Řešení je umístit oba prvky s rámečkem na stejnou úroveň v HTML kódu. Ukázka.

Nebo rámeček vytvořit vlastností box-shadow (IE 9+). Ukázka.

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Skloňování v CSS

„Programování“ v HTML a CSS

I bez úprav logiky serverového skriptu lze lecčeho dosáhnout samotným CSS.

Centrování v CSS

Centrování na webových stránkách

Ucelený popis různých způsobů vertikálního i horizontálního centrování. Se známou i neznámou šířkou nebo výškou.

CSS vyhledávání a filtrování

CSS vyhledávání a filtrování obsahu

Jak pomocí CSS se špetkou JS filtrovat obsah stránky nebo na ní vyhledávat.

Zobrazení popisku při najetí myší

Popisek po najetí myší

Kterak zobrazovat obsah v tooltipu po najetí myši.

Vícenásobné CSS pozadí

Více obrázků na pozadí

Jak v CSS jednomu elementu přiřadit více obrázků na pozadí.

Komentáře