Kreslení v CSS

Kreslit (pomocí CSS), nebo nekreslit?

Vždy je potřeba zvážit, zda má smysl vytvářet komplikované konstrukce místo použití prostého obrázku.

Výhody CSS

Výhody kreslení pomocí CSS mohou být:

Jednoduchost vytvoření
Je jednodušší napsat background: red než si v grafickém editoru kreslit červený obrázek, ukládat jej a potom psát background: url(cerveny-obrazek.png).
Datová náročnost
Barevné pozadí místo obrázku bude nepochybně datově úspornější než obrázkové pozadí stejné barvy.
Snadná modifikace
Bude snazší původní CSS vlastnost přepsat na background: blue než v editoru překreslit červený obrázek na modrý.
Změna velikosti

Nakreslené prvky se mohou přizpůsobovat různým velikostem okna a typům displejů bez ztráty kvality. U obrázků to umí řešit vektorová grafika (např. SVG od Internet Exploreru 9).

Výhody obrázků

Jednoduchost vytvoření
Je jednodušší nakreslit v editoru komplikovaný obrázek než v CSS kombinovat několik vlastností a ladit je napříč prohlížeči.
Datová náročnost
U obrázků lezoucí z různých CSS generátorů asi o datové úspornosti raději nemluvit.
Snadná modifikace
Bude snazší mnoho původních CSS vlastností přepsat nebo jinak vygenerovat než v editoru překreslit obrázek? Asi ne.

Universální řešení tedy nejspíš neexistuje a je potřeba individuálně zohlednit ten který prvek, pravděpodobnost jeho modifikace atd. (K tématu: DJPW: Patří procedurální grafika do CSS?).

Samotné kreslení

Když pomineme bizarní možnosti jako totální CSS pixel art nebo triviality jako čára nebo čtverec, nabízí se.

Trojúhelníky

Jeden z fíglů je využít toho, že nastavení silné tloušťky rámečku svým napojováním může vytvořit šikmý tvar.

A teď stačí samotný obsah odstranit nastavením nulové výšky…

.flag {
  width: 200px;
  height: 0;
  border-bottom: 100px solid red; 
  border-top: 100px solid #fff; 
  border-left: 200px solid blue;
  overflow: hidden;
}

A máme třeba vlajku.

A když necháme jen rámeček na jedné straně (ostatní rámečky budou mít průhlednou barvu – border-color: transparent), dosáhneme kýženého trojúhelníku, který lze upravováním tlouštěk rámečků všelijak modifikovat.

Zaoblení a kruhy

Zaoblené části lze od IE 9 vytvářet vlastností border-radius.

CSS generátory

Umí vytvářet různé přechody, stíny, kulaté rohy a další. Např. css3generator.com.

Kreslení písmeny

První možnost je použít obyčejné znaky jako třeba <, >, × a při vhodném fontu, velikosti a stylu máme šipku doleva, doprava a křížek.

Druhá potom připojení zvláštního fontu, který místo běžných písmen obsahuje grafické symboly a ikony. Příklad.

Ikony v čistém CSS

Ikony je teoreticky možné kreslit i přímo v CSS.

Zajímavé kresby

Kde jsou hranice?

V zásadě je možné nakreslit cokoliv, i když u složitějších konstrukcí to kromě jakési exhibice nedává moc smysl.

Další obrázky

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.

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.

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.

Komentáře