Ondřej Šteigl - Logo ONDŘEJ ŠTEIGL
Praktické návody

Cookie lišta na web krok za krokem

Hotová, funkční lišta se souhlasem s cookies – včetně toho nejdůležitějšího, aby měření běželo až po souhlasu. Postavíme ji z HTML, CSS a JavaScriptu.

Čtení 7 min mírně pokročilý Naposledy upraveno 24. 9. 2026

Všechny návody
Krátká odpověď: Cookie lišta je malé okno, kde návštěvník povolí nebo odmítne nenutné cookies (typicky měření návštěvnosti). Zákon říká, že takové cookies smíte spustit až po souhlasu. Poskládáme ji z HTML (lišta), CSS (vzhled) a JavaScriptu (logika).

Proč cookie lišta vůbec je (a proč ji řešit)

Než začneme kódit, ať víme proč. Cookies umí návštěvníka sledovat – zapamatovat si ho a měřit jeho pohyb, někdy i napříč různými weby. Proto zákon vychází z jednoduché myšlenky: o svých datech má rozhodovat sám návštěvník, ne web za něj. Z toho plyne pár principů, které lišta v praxi naplňuje:

A proč to řešit i na malém webu? Jednak je to zákon (za porušení hrozí pokuta), jednak je to slušnost vůči návštěvníkům, která buduje důvěru. Cookie lišta je prostě způsob, jak tyhle principy splnit technicky správně.

Potřebuju cookie lištu vůbec?

Ne vždycky. Záleží, jaké cookies web ukládá:

Pokud tedy máte na webu jen statické stránky bez měření, lištu nepotřebujete. Jakmile ale přidáte třeba počítadlo návštěv, platí podle novely zákona o elektronických komunikacích (ZEK, od 1. 1. 2022) režim opt-in:

⚖️ Nejsem právník – tohle je praktický návod, jak lištu postavit technicky správně. Přesné znění textů si u citlivějších webů ověřte u odborníka.

Z čeho se lišta skládá

Spojíme tři věci, které znáte z předchozích návodů (plus novinku – JavaScript):

1. HTML – kostra lišty

Do stránky (nejlépe těsně před </body>) vložíme lištu. Všimněte si id u prvků – přes ně na ně sáhne JavaScript:

<div id="cookie-bar" class="cookie-bar">
  <p>
    <strong>Cookies pro měření návštěvnosti.</strong>
    Statistické cookies uložíme jen s vaším souhlasem.
    <a href="informace.html">Více informací</a>
  </p>
  <div class="cookie-buttons">
    <button id="cc-reject">Odmítnout</button>
    <button id="cc-accept">Souhlasím</button>
  </div>
</div>

2. CSS – vzhled

Lištu „přilepíme" dolů na obrazovku a učešeme tlačítka. Důležitý řádek je display:none – lišta je defaultně skrytá a ukáže ji až JavaScript, když bude potřeba:

.cookie-bar {
  display: none;                 /* JS ji ukáže, až bude třeba */
  position: fixed;
  left: 16px; right: 16px; bottom: 16px;
  max-width: 640px; margin: 0 auto;
  background: #fff;
  border: 1px solid #e0eaf6;
  border-radius: 16px;
  box-shadow: 0 12px 40px rgba(0,0,0,.15);
  padding: 1.2rem 1.4rem;
  gap: 1rem; align-items: center; flex-wrap: wrap;
}
.cookie-bar p { flex: 1 1 240px; margin: 0; font-size: .9rem; }
.cookie-buttons { display: flex; gap: .6rem; }
.cookie-buttons button {
  border: 0; cursor: pointer; font-weight: 600;
  padding: 10px 22px; border-radius: 50px;
}
#cc-accept { background: #005bb5; color: #fff; }
#cc-reject { background: #fff; color: #005bb5; border: 1px solid #cddcf0; }

Takhle pak lišta vypadá:

náhled v prohlížeči

Cookies pro měření návštěvnosti. Statistické cookies uložíme jen s vaším souhlasem. Více informací

3. JavaScript – logika (to nejdůležitější)

Teď lištu „oživíme". JavaScript zajistí čtyři věci: ukázat lištu jen když ještě není rozhodnuto, uložit volbu, schovat lištu a spustit měření až po souhlasu. Volbu si zapamatujeme do localStorage (malá „paměť" prohlížeče), aby lišta příště neotravovala:

<script>
  var KEY = "cookie_souhlas";
  var bar = document.getElementById("cookie-bar");

  // Lištu ukážeme jen když ještě není rozhodnuto
  if (!localStorage.getItem(KEY)) {
    bar.style.display = "flex";
  }

  // Tlačítko „Souhlasím"
  document.getElementById("cc-accept").addEventListener("click", function () {
    localStorage.setItem(KEY, "ano");
    bar.style.display = "none";
    spustitMereni();               // měření se spustí AŽ teď
  });

  // Tlačítko „Odmítnout"
  document.getElementById("cc-reject").addEventListener("click", function () {
    localStorage.setItem(KEY, "ne");
    bar.style.display = "none";
  });

  // Když návštěvník souhlasil už dřív, spustíme měření i po návratu
  if (localStorage.getItem(KEY) === "ano") {
    spustitMereni();
  }

  function spustitMereni() {
    // sem přijde kód počítadla / analytiky (např. TOPlist)
  }
</script>

Klíč: měření spustit až po souhlasu

Všimněte si, že spustitMereni() se volá jen po kliknutí na „Souhlasím" (a při návratu, když souhlas už dřív padl). Nikdy ne hned při načtení stránky. To je celé jádro souladu se zákonem: bez souhlasu žádné měření. Kód počítadla proto nikdy nedávejte natvrdo do stránky – vložte ho dovnitř funkce spustitMereni().

💡 localStorage je malé úložiště přímo v prohlížeči návštěvníka. Uložená volba tam zůstane i po zavření webu, takže se lišta příště neukáže. Odmítnutí ukládáme taky – aby lišta neotravovala ani toho, kdo řekl „ne".

Časté chyby

Co dál?

Tohle je funkční základ. Dá se vylepšit – například lištu ukázat jen jednou za návštěvu, přidat odkaz „Nastavení cookies" pro změnu volby, nebo styly vkládat rovnou z JavaScriptu. Přesně takhle vylepšenou lištu používám i na tomhle webu.

Nechcete web řešit sami a chcete ho mít hotový a profesionální?

Podívejte se na tvorbu webů →

© Ondřej Šteigl. Autorem návodů jsem já. Obsah je autorským dílem chráněným podle zákona č. 121/2000 Sb. (autorský zákon). Kopírování, přebírání nebo šíření bez mého předchozího písemného souhlasu je zakázáno. Výukové použití je vítáno – stačí uvést zdroj (osteigl.cz).

← Zpět na všechny návody