Pozadí jenom za písmeny

Jak vytvořit nadpis, který má pozadí jen za písmeny.

4 minuty

Pro ozvláštnění nadpisu nebo nějakého popisku může být zajímavé nastavit pozadí, aby bylo pouze za textem.

Příklad nadpisu s pozadím za písmeny

Zadání možná vypadá jednoduše, ale docílit kýženého efektu není úplně triviální.

Pozadí

Jelikož je nadpis blokový element (display: block), nastavené pozadí se rozlije po celém bloku.

Nadpis

Je tedy nutné přepnout display na inline. Zároveň použít nějaký obal, aby nadpis zabíral celý řádek.

Nadpis

Výška řádků

V případě, že se nadpis rozleze do více řádků, mohou být řádky na sebe nepěkně nalepeny.

Nadpis
na více řádků

Je potřeba tedy zvýšit výšku řádku (line-height). Bohužel stanovit:

  1. velikosti písma (font-size),
  2. odsazení (padding),
  3. výšku řádku (line-height)

Aby to sedělo přesně na 1 pixel napříč prohlížeči vypadá neproveditelně.

Nezbývá než použít nějakou toleranci, aby na sebe řádky navazovaly.

Nadpis
na více řádků

Odsazení na stranách

Ne úplně hezky působí absence odsazení na konci prvního a začátku druhého řádku, pokud se použije padding.

box-decoration

Mimo IE a starou Operu 12 to dokáže vyřešit CSS vlastnost box-decoration-break, která umí rozkopírovat styl na jednotlivé řádky.

Nadpis
na více řádků

Stín

V případě jednobarevného pozadí by také odsazení teoreticky šlo vykouzlit přes box-shadow a posunutí marginem o šířku stínu. Bohužel tento postup nefunguje ve Firefoxu (vytvoří stín pouze prvnímu řádku) a v IE 11 není stín úplně ostrý, takže se mezi stínem a obsahem zobrazují svislé pruhy.

Nadpis
na více řádků

Posicování

Alespoň levé odsazení by šlo zajistit například absolutně posicovaným elementem. Funguje mimo Firefox.

Nadpis
na více řádků

Závěr

Vypadá to, že vytvořit zmíněný efekt s odsazením na stranách a dobrou podporou v prohlížečích nějakým rozumným způsobem úplně nejde.

Nebo jde a víte jak? Napište mi, prosím, do komentářů.

Co si myslíte o tomto článku?

Diskuse

Související články

CSS item-pack: balance – vyvážené rozložení flex položek

Vlastnost item-pack: balance rozděluje flex položky rovnoměrně mezi řádky, podobně jako text-wrap: balance vyvažuje řádky textu.

11 minut

CSS Container Queries – responsivní komponenty

Jak pomocí @container, container-type a container-name vytvářet komponenty, které se přizpůsobí velikosti svého rodiče místo viewportu.

16 minut

CSS Anchor Positioning – posicování elementů relativně k jiným

Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.

6 minut

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

Moderní způsoby vertikálního i horizontálního centrování v CSS. Flexbox, Grid, margin auto a další techniky.

8 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata · Zkratky
2013–2026