Zkosení hrany v CSS

Dlouhou dobu bylo v CSS možné (a známé) pouze vytváření objektů ve tvaru čtverců a obdélníků.

  1. Pomocí vlastnosti border-radius jde vytvářet kulaté rohy nebo kulaté obrázky.

  2. Vhodnou kombinací tloušťky a barvy rámečků jde kreslit šipky/trojúhelníky.

Jak vytvořit něco se zkosenou hranou?

Pomocí border trojúhelníku

Pomocí vytvořeného trojúhelníku z rámečku jde zajistit šikmou hranu.

Trojúhelník je vytvořen pomocí pseudo-elementu :after, který je umístěn za obsah.

Obsah se šikmou hranou

Samostatná ukázka – šikmá hrana

Podpora tohoto řešení je vynikající (rámečky fungují všude). Horší je to s vyhlazováním – šikmá hrana může vypadat kostrbatě.

Taktéž nastavení požadovaného zkosení není úplně intuitivní. Nakonec je podmínkou, aby pozadí bloku bylo jednobarevné kvůli napojení.

Oříznutí clip

Jako dělaná je pro tyto případ oříznutí CSS vlastnost clip-path s funkcí polygon:

.sikmy {
  clip-path: polygon(0 0, 100% 0, 75% 100%, 0 100%);
}

Ta bez problému funguje i s obrázkovým pozadím:

Oříznutí přes clip-path

Výsledek:

Obsah se šikmou hranou

Nevýhoda je slabší podpora v prohlížečích. Nepravidelné oříznutí podporuje Chrome 24+, Opera 15+ a Safari 8+. Pro lepší podporu je dobré použít CSS prefixy.

Zkosení transform: skewX

CSS transformace skew dokáže zkosit celý element. Zkosení zároveň deformuje i obsah – text – což je nežádoucí. Nabízí se tedy použít deformaci pouze pro pseudo-element, který se potom umístí na správné místo absolutním posicováním.

Obsah se šikmou hranou

CSS vlastnost transform a zkosení skewX/skewY je podporováno s prefixy už od IE 9, Firefoxu 3.5, Chrome 4 a Opera 11.5.

Pomocí z-indexu se zkosení umístí za obsah.

Zkosení na obou stranách

Bylo-li by cílem mít zkosené hrany na obou stranách, šlo by element včetně písma zkosit a pouze samotný text vrátit zpět opačnou hodnotou:

Obsah se šikmými hranami

Samostatná ukázka – zkosení na obou stranách

Možná u tohoto postupu bude někde problém s vyhlazováním písma.

Bez použití pseudo-elementu by šlo případně jednu šikmou stranu oříznout:

Živá ukázka – oříznutí jedné zkosené hrany

Rotace

Teoreticky by šlo vytvořit šikmou plochu i rotací, ale těžko říct, jestli to přináší nějaké výhody oproti zkosení. Podpora v prohlížečích je obdobná.

Odkazy jinam

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ářů ↓

CSS mapa s popisky

Body s popisky na mapě

Statická obrázková mapa s vlastními body a :hover popisky.

Zvýraznění aktivní kotvy

Zvýraznění aktivované kotvy (:target)

Pokud se v rámci stránky používají odkazy na jednotlivé #části, může být vhodné zvýrazněním ukázat, kam odkaz mířil.

Baterka v CSS a JavaScriptu

Vytvoření efektu baterky v CSS a JS

Jak jednoduše vytvořit na stránce efekt baterky? Tedy ztmavit web a prohlížet ho jakýmsi průzorem.

Kreslení v CSS

„Kreslení“ pomocí CSS

Jak vytvářet jednoduché tvary místo obrázků prostým CSS?

Načtení obrázku, až když je potřeba

Zpožděné načtení obrázku, až když je potřeba

Kromě potřeby nahrát obrázek dopředu (preload), aby byl v době použití 100% připravený, může být potřeba opačná – načíst jej, až v momentě, kdy je potřeba. Z důvodu nemrhání datovým přenosem.

Komentáře