Autor Zpráva
Kos112567
Profil
Ahoj,

rád bych měl na své stránce možnost přepnutí si vzhledu (nějaké tlačítko, které mi např. změní barvy).

Nevíte někdo o nějakém dobrém návodu, popř. o radu jak to udělat? :)
Lonanek
Profil
Např. Změna designu bez znovunačtení stránky
Kos112567
Profil
Ano, tento návod jsem také našel ale bohužel mi to nefunguje.

Mám tedy tento js

function changeCss(styleUrl) {
    document.getElementById("css").href = styleUrl;
}

Další odkaz na css sobor v indexu a na ten javascript
        <link rel=stylesheet href="style_blue.css" id=css>
                <script src="js/change_color.js"></script>

A ještě tlačítko

        <button onclick='changeCss("style_blue.css")'>Červená</button>

Pokud ale přijdu na stránku, automaticky se mi tvoří vzhled na základě nově přidaného css (tedy aniž bych přepnul ten vzhled tlačítkem)

PS

V tom css souboru mám zatím jenom toto k vyzkoušení

h1 {
    color: red
}
Tomáš123
Profil
Kos112567:
Ak sa jedná iba o jednoduchú zmenu farby, riešil by som to v čistom HTML a CSS pomocou inputov a pseudotriedy :checked.

V prípade potreby rozsiahlejších úprav môže dátová objemnosť súboru narásť.

Z hľadiska optimalizácie by sa oplatilo farby, ktoré sa majú meniť definovať na jednom mieste:
#red:checked ~ .header,
#red:checked ~ .aside,
#red:checked ~ ... {
  background-color: red;
}
#red:checked ~ .header h1,
#red:checked ~ .header a,
#red:checked ~ ... {
  color: red;
}

Podrobnejšia diskusia o princípe funkčnosti.
Kos112567
Profil
Já bych rád, aby ta změna byla pro uživatele trvalá, tj. aby se to nepřepnulo zpět do výchozího nastavení po znovu načtení stránky
rafej
Profil
Kos112567:
Přečti si pořádně to, co ti bylo doporučeno v 2. přízpěvku. Odkazovaný návod na konci zmiňuje, že je potřeba změnu vzhledu také uložit - např. do cookies, profilu uživatele nebo localStorage.
Pokud máš jen jednoduchou HTML stránku (bez PHP, ASP, ...), tak bych asi zvolila uložení do cookies nebo localStorage pomocí javascriptu.
Kos112567
Profil
Už mi to funguje :) Děkuji za rady

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: