Autor | Zpráva | ||
---|---|---|---|
kuxa Profil |
Zdravím,
chtěl bych se zeptat, existuje v CSS něco jako GET parametry? Například (blbý příklad), když bych chtěl, aby uživatel poslal formem kód barvy, a já mu tu barvu vykreslil, teď bych to udělal PHP souborem a interním CSS skriptem: index.php <? //PHP KÓD ?> <style> .barva { background-color: #<? echo $_POST["barva"] ?>; } </style> <? //DALŠÍ PHP ?> Což mi ale přijde celkem neestetické. Neexistuje pro CSS něco jako toto? index.php <? //PHP KÓD ?> <link rel="StyleSheet" href="styly.css" type="text/css" media="screen" get="barvicka: <? echo $_POST["barva"] ?>;"> <? //DALŠÍ PHP ?> styly.css /*CSS*/ .barva { background-color: # get(barvicka); } /*DALŠÍ CSS*/ Vím, že je to kravina :D Ale chci se zeptat, jestli neexistuje něco podobného. Děkuji předem |
||
Keeehi Profil |
kuxa:
Krátká odpověď: Neexistuje. Dlouhá odpověď: Jedinou možností by byla simulace php scriptem, který by generoval css. <link rel="StyleSheet" href="styly.php?barva=FF0055" type="text/css" media="screen"> styly.php .barva { background-color: #<? echo $_GET"barva"] ?>; } </style> |
||
Taps Profil |
#3 · Zasláno: 15. 3. 2015, 11:17:47
kuxa:
existují obarvovače kódu, viz např. jush - http://jush.sourceforge.net/ |
||
mimochodec Profil |
#4 · Zasláno: 15. 3. 2015, 11:19:26
Pomocí htaccessu by nejspíš šlo zařídit, aby se dejme tomu požadavek na "barvy.css?b=ee0000" přesměroval na php, které by ti
.barva { background-color: #ee0000; } vygenerovalo, ale myslím, že je to špatný nápad. Jestli máš info o barvě v php, přiřaď to prostě inline zápisem.
|
||
juriad Profil |
#5 · Zasláno: 15. 3. 2015, 11:19:43
Taps:
Tady spíš jde o to, že si uživatel může vybrat svojí barvu schématu webové stránky. |
||
Trejpa Profil |
#6 · Zasláno: 15. 3. 2015, 11:23:15
kuxa:
1) Přejmenuješ soubor stylů na styly.php ,
2) uvnitř změníš MIME <?php header('Content-type: text/css'); ?>
3) a můžeš si třeba celé CSS vygenerovat na základě GET. Ovšem pak narazíš na to, že se CSS soubory kešují, takže budeš obcházet kešováním třeba náhodným číslem nebo jménem uživatele v parametru: <link rel="stylesheet" href="styly.php?user_1234"> .
|
||
Keeehi Profil |
#7 · Zasláno: 15. 3. 2015, 11:47:06
Trejpa:
Pokud to má pro stejné parametry generovat pořád stejný stylopis (což podle jeho ukázky ano) tak je naopak kešování správné. |
||
Trejpa Profil |
#8 · Zasláno: 15. 3. 2015, 12:12:49
Keeehi:
Pokud se proměnné mají brát výhradně z GET, tak ano, protikešovací balast potřeba nebude. Hodil by se v případě, že by se uživatelské proměnné dostávaly do CSS z jiného zdroje na serveru (PHP soubor, databáze). |
||
kuxa Profil |
#9 · Zasláno: 17. 3. 2015, 19:38:30
Jak vás tady tak čtu, tak bude asi nejlepší to vyřešit interně, než zbytečně kvůli jednomu divu překopávat celej CSS soubor
|
||
Amunak Profil |
#10 · Zasláno: 17. 3. 2015, 20:08:45
kuxa:
Nevím jak moc ty barvy mají být unikátní, ale jestli máš několik barevných schémat, rozliž je prostě pomocí CSS třídy a jen pomocí PHP doplňuj v HTML správnou třídu. A jestli se to mění hodně, ale hodnot třeba není nějak extrémní množství, můžeš mít přímo <style></style> v tom HTML a jeho obsah generovat pomocí PHP.
Generovat přímo CSS soubory pomocí PHP není sice typické, ale nemá to žádné zásadní problémy. |
||
juriad Profil |
#11 · Zasláno: 17. 3. 2015, 20:11:10
Amunak:
S přichodem CSS preprocesorů to naopak typické může být. Styly se udržují v nějakém SASSu a request zjistí, zda se SASSový zdroják nezměnil, a pokud ano, cachovaný CSS přegeneruje, a následně cachovaný CSS odešle. |
||
Juraj Hajdúch Profil |
Len pre inšpiráciu:
Spracujete si premennu $_GET["barva"] (napr. #ffcc00) do sttylopisu ako CSS premennu a vygenerovany string inkludujete do predmetneho suboru (do tagu <head>): <?php // NEZABUDNITE OSETRIT $_GET["barva"] -> htmlspecialchars() a pod. // NEZABUDNITE NA TO, CO SA STANE AK NEEXISTUJE $_GET["barva"] -> if(isset($_GET["barva"])) $string = "<style>".PHP_EOL; $string .= "\t:root {".PHP_EOL; $string .= "\t\t--own-bg-color: ".$_GET["barva"].";".PHP_EOL; $string .= "\t}".PHP_EOL; $string .= "</style>".PHP_EOL; echo $string; ?> <style> :root { --own-bg-color: #ffcc00; } </style> <style> .span{ color: #ff0000; background-color: var(--own-bg-color); } </style> <span class="span">lorem ipsum</span> POZOR: Nie som si istý s podporou CSS premenných v jednotlivých prehliadačoch (môj FF v36.0.1 to berie). |
||
mimochodec Profil |
#13 · Zasláno: 17. 3. 2015, 20:20:38
Já vám do toho nechci mluvit, ale nemůžu se zbavit pocitu, že je to trochu překombinované. Ze všeho nejjednodušší mi připadá, kdyby se do html hlavičky přidala sekce css, tam by se phpkem nastavily barvy a je vyřešeno. Ostatní řešení mi připadají spíš jako teoretická cvičení o tom, jak ještě by to šlo provést, ale přínos v tom nevidím žádný.
|
||
Juraj Hajdúch Profil |
#14 · Zasláno: 17. 3. 2015, 20:27:38
mimochodec:
Ja som sem chodieval roky a takéto teoretické veci ma v mnohom inšpirovali a veľa naučili, ale súhlasím, že priamym vložením ošetrenej premennej $_GET to príslušného elementu (atribut style prebije ostatné stylopisy) je tá najschodnejšia cesta. |
||
juriad Profil |
#15 · Zasláno: 17. 3. 2015, 20:32:18
Juraj Hajdúch:
Prosím ověř si ty informace, než budeš navrhovat podobně problematické řešení; caniuse.com/#feat=css-variables Nějaké starší povídání k tématu: www.zdrojak.cz/clanky/nebylo-aneb-promenne-css-prichazeji |
||
Juraj Hajdúch Profil |
#16 · Zasláno: 18. 3. 2015, 07:17:47
juriad:
„Prosím ověř si ty informace, než budeš navrhovat podobně problematické řešení; caniuse.com/#feat=css-variables“ Prave preto som na to vyslovene upozornil a napisal 'len pre inspiraciu' a som prekvapeny, ze to podporuje len FF. To je naozaj malo na to, aby sa to mohlo nasadit na ostru prevadzku. :( Diky za link. |
||
Časová prodleva: 9 let
|
0