CSS zbytečnosti

CSS konstrukce, které nejspíš píšete zbytečně.

Článek původně vyšel na autorově webu Je čas.

Během objevování a učení se kaskádovým stylům (CSS) si člověk snadno přivykne na zbytečně komplikované konstrukce, které začne používat z neznalosti. Potom si na ně navykne a ze setrvačnosti je často používá, i když už CSS docela rozumí…

margin: 0 auto

Hodnotu horního a spodního marginu není při vodorovném centrování třeba explicitně uvádět.

Prosté:

margin: auto

Funguje naprosto identicky.

Nejspíš jediná výjimka, kdy se výsledek „margin: auto“ a „margin: 0 auto“ liší, je centrování absolutním posicováním.

Nula před desetinnou tečkou

Jak tomu tak bývá, v programování jde při zápisu desetinných čísel vypustit nulu na začátku.

.5 +.5 = 1

Jde to praktikovat i v CSS:

margin: .5em;

Jednotky u hodnoty 0px

Je-li nějaká hodnota nastavena na nulu, je zbytečné uvádět jednotky (0px, 0em a podobně). Nula bude pořád nula.

element {
  height: 0px;
}

Uvozovky kolem URL/písem

element {
  background: url("obrazek.png");
  font-family: 'Název písma';
}

Při zadávání URL obrázku do CSS funkce url jsou uvozovky nepovinné.

Při uvádění fontu (font-family) jsou uvozovky nutné jen v případě, že název písma obsahuje čísla a speciální symboly.

Středník

Jednotlivé CSS deklarace bývají oddělovány středníkem (;). Středník není nutné psát za poslední deklarací pro daný selektor.

.uzasnyStyl {
  color: red;
  text-align: center
}

Při používání strukturovaného CSS to ale dost zavání zapomenutím středníku při připsání dalšího předpisu.

U řádkového CSS to problém není.

.uzasnyStyl {color: red; text-align: center}

Obtékaný element se stane blokovým

Je-li element plovoucí (tj. má nastaven float), stane se automaticky blokovým (display: block).

.obtekany {
  float: left;
  display: block;
}

Blokovým se stane i element s výslovně nastaveným display: inline, display: inline-block nebo display: table-cell a podobně.

Výjimka je obtékaný element s display: table – tabulkové zobrazení se zachová. Obdobně se chová hodnota list-item, která je výchozí u odrážek seznamů. Rozplavaná položka seznamu bude stále display: list-item.

Absolutně posicovaný element se stane blokovým

Je-li element posicován absolutně nebo fixně, stane se z něj automaticky display: block bez nutnosti to uvádět.

.posicovany {
  position: absolute;
  display: block;
}

Dopočítávání hodnot

CSS vlastnosti mající varianty pro všechny strany *-top, *-right, *-bottom a *-left jde zadávat do sdružené vlastnosti.

Konstrukce:

margin: 1em .5em .3em;

Odpovídá:

margin-top: 1em;
margin-right: .5em;
margin-bottom: .3em;
margin-left: .5em;

Zkratky CSS vlastností

Řada CSS vlastností má tzv. zkratku.

border-width: 1px;
border-style: solid;
border-color: red;

Předchozí rámeček tak jde zapsat jako:

border: 1px solid red;

I při použití zkratky není třeba uvádět všechny hodnoty. Pro zrušení rámečku tak stačí:

border: 0;

Obdobně pro zrušení odrážek seznamu stačí použít list-style: none, místo list-style-type: none, jak bývá často k vidění.

Příliš konkrétní selektory

Řekněme, že je cílem v následujícím HTML kódu zaměřit odkaz (značku <a>).

<div class="menu">
  <ul>
    <li><a href="">Odkaz</a></li>
  </ul>
</div>
  1. Jedna extrémní varianta je selektor typu:
    div.menu ul li a {}
  2. Na opačné straně stojí:
    .menu a {}

Obecně bývá lepší používat spíš druhý způsob s jednodušším selektorem.

  1. Má kratší zápis.
  2. Nemá zbytečně vysokou prioritu. Kvůli případnému přepisování vlastností je dobré držet sílu selektorů co nejnižší.
  3. Jednodušší selektor je rychlejší na vyhodnocení. To je spíš teoretická výhoda – i komplikovaný selektor bude pořád hodně rychlý.

Dědičnost barvy

Rámečky border, ale i outline, box-shadow nebo text-shadow dokáží dědit barvu, která se nachází ve vlastnosti color.

Rámeček převzal barvu z color

Stín převzal barvu z color

Uvádění šířky

Blokový element dle výchozích stylů automaticky vyplní všechnu dostupnou šířku.

Nastavovat pro vnořený element stejnou šířku, jako má jeho rodič, je tudíž zbytečné.

<div style="width: 400px">
  <div style="width: 400px">
    Vnořený element
  </div>
</div>

Totéž platí pro nastavování šířky na 100 % pro roztažení přes celou plochu – to je výchozí chování blokového elementu.

Zbytečné CSS prefixy

K vidění bývá používání CSS prefixů pro vlastnosti, které daný prohlížeč s prefixem nikdy nepodporoval – například -ms-transition.

Podobný případ je vlastnost -moz-opacity – od Firefoxu 0.9 (rok 2004) funguje prosté opacity.

Poděkování

Na sesbírání jednotlivých zbytečností se podíleli: habendorf, Bubák, Keil a Chamurappi.

Autor se webdesignu intensivněji věnuje od roku 2005. V poslední době se zabývá hlavně tvorbou responsivních webů a frontendem. Od roku 2013 o tom píše na webu jecas.cz.

Komentáře: 25

Přehled komentářů

pavel
patrik Re:
Oldis Re:
anti.cz Re:
mboy Re:
Marek Sirkovský Re:
Velda Ach ta čeština
Dvorapa Re: Ach ta čeština
Velda Re: Ach ta čeština
Oldis Re: Ach ta čeština
Jirka Re: Ach ta čeština
Velda Re: Ach ta čeština
Martin Hassman Re: Ach ta čeština
Velda Re: Ach ta čeština
Martin Hassman
Mino Re: Ach ta čeština
Cestinar Re: Ach ta čeština
Bohumil Jahoda Re: Ach ta čeština
Tomáš Kapler Mně se to nelíbí
Bohumil Jahoda Re: Mně se to nelíbí
Tomáš Bedřich Fonty
anti.cz Re: Fonty
Peter Širka Výborný článok
Jirka Kosek Jednodušší selektor je rychlejší na vyhodnocení
Jaroslav Bereza Barvy
Zdroj: https://www.zdrojak.cz/?p=15422