Autor | Zpráva | ||
---|---|---|---|
mikul Profil |
#1 · Zasláno: 4. 5. 2008, 12:12:02
Jak se řeší když chci dát uživateli na výběr z více stylů? Když budu mít např na výběr: barva pozadí stránky - 13 barev, barva výplně obalového divu - taky 13, a pak ještě 13 různých barev nadpisů, písma a tak. Kdybych měl pro každé dělat zvláštní soubor styly.css tak je jich strašně moc. Dá se nějak obejít abych v head měl style="....." a v tom třebas pouze ty věci které se mění přes proměnné v php a věci které jsou pořás stejné normálně z externího souboru a nebo je to nejlepší varianta? Díky
|
||
Venca V Profil |
#2 · Zasláno: 4. 5. 2008, 13:33:50
Možností, jak to udělat, je mnoho.
Například: <?if (!isset($_COOKIE["styl"])) {$styl=1;} else {$styl=$_COOKIE["styl"];}?> ... <link rel="stylesheet" type="text/css" href="styl.css"> <link rel="stylesheet" type="text/css" href="styl<?echo $styl;?>.css"> Soubor styl.css je defaultní, s deklaracemi, které jsou pro všechny vzhledy stejné; ostatní styly pak obsahují deklarace pro jeden určitý vzhled. |
||
mikul Profil |
#3 · Zasláno: 4. 5. 2008, 13:46:08
No jo, ale mě šlo o to, že když mám na výběr ze 13 barev tak těch dalších stylů musím mít 3x po 13 souborech - aby šlo vše volit nezávisle na ostatním. Což mi přišlo jako strašně moc souborů a v head pak musí být
<link rel="stylesheet" type="text/css" href="styl.css"> <link rel="stylesheet" type="text/css" href="styl-pozadi<?echo $styl;?>.css"> <link rel="stylesheet" type="text/css" href="styl-div<?echo $styl;?>.css"> <link rel="stylesheet" type="text/css" href="styl-pismo<?echo $styl;?>.css"> tak nevím jestli to mít takhle, nebo raději mít v <body> tom divu <div class="obal"> nadefimované něco jako style="background-image:url(images/pozadi<?php $cislo=$_COOKIE["cislo"]; echo "$cislo"; ?>.jpg" a nebo jestli se to dá obejít ještě jinak. Která varianta je nejlepší? |
||
Trejpa Profil |
#4 · Zasláno: 4. 5. 2008, 17:14:47
mikul
A co ti brání mít CSS v PHP (posílané jako "text/css")? Do toho stylu si includem přidáš další soubory. <link rel="stylesheet" type="text/css" href="styl.php"> |
||
mikul Profil |
#5 · Zasláno: 4. 5. 2008, 19:39:17
To by bylo nejlepší, kdybych mohl do souboru styly.css dat proměnné v php. Jenže když tomu dám koncovku .php tak to nezpracuje jako css a nenaformátuje to stránku. Když nedám koncovku .php tak to nezpracuje ty proměnné.
|
||
vertigo4 Profil |
#6 · Zasláno: 4. 5. 2008, 19:41:43 · Upravil/a: vertigo4
mikul
jenže když tomu dám koncovku .php tak to nezpracuje jako css protože to musíš poslat jako text/css jak píše Trejpa... možná ti pomůže tohle: http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=69840&foru m=7&page=-1 |
||
Trejpa Profil |
#7 · Zasláno: 4. 5. 2008, 19:50:49
mikul
Mělo by to fungovat, pokud dáš na začátek "style.php" toto: <?php header('content-type: text/css'); ?> |
||
Dranel Profil |
#8 · Zasláno: 4. 5. 2008, 19:57:57 · Upravil/a: Dranel
Doporučuji dát styl jako interní. Je to rychlejší a můžeš s ním dělat co chceš. Interním myslím vložení do hlavičky.
|
||
mikul Profil |
#9 · Zasláno: 4. 5. 2008, 20:17:27
Jenže když teď mám vrch stránky
<?php $cislo=5; include "nejaky-soubor.php"; ?> v tom nejaky-soubor.php je celé head včetně <link href="styly.php" rel="stylesheet" type="text/css" /> v souboru styly.php je <?php header('content-type: text/css'); ?> body { background-image:url(../images/vnitrek/pozadi<?php echo "$cislo"; ?>.jpg); } tak mi to asi nezpracuje tu proměnnou protože mi to tam žádané pozadí nevloží. Jinak vše ostatní co ve styly.php mám tak funguje správně jako by to bylo .css |
||
Trejpa Profil |
#10 · Zasláno: 4. 5. 2008, 20:26:41
mikul
Tak tam tu proměnnou musíš nějak dostat. Třeba parametrem v adrese. <link rel="stylesheet" type="text/css" href="styl.php?barva=<?echo $cislo; ?>"> Ve výsledku nějak takto: <link rel="stylesheet" type="text/css" href="styl.php?pozadi=12&pismo=5&ohraniceni=3"> |
||
mikul Profil |
#11 · Zasláno: 4. 5. 2008, 20:31:04
No nakonec ta proměnná bude z cookies takže to by problém nebyl. Ale když je teď nadefinovaná předtím include tak by ji to mělo vzít ne?
|
||
Str4wberry Profil |
#12 · Zasláno: 4. 5. 2008, 20:32:19
Moc důkladně jsem Vaše příspěvky nečetl, ale nebylo by jednodušší přidat id barvy např. elementu <body>, a potom do jednoho CSS souboru přidávat: #barva h1 {color: barva}…?
|
||
Trejpa Profil |
#13 · Zasláno: 4. 5. 2008, 20:38:07
mikul
Ne. Soubor "index.php" a "style.php" se zpracovávají zvlášť. Nejdříve jde od prohlížeče k serveru požadavek na "index.php". Server ho vrátí. Prohlížeč čte soubor "index.php" a zjistí, že je v něm odkaz na styly. Pošle serveru nový nezávislý požadavek na "styly.php", které server zpracuje a pošle nezávisle na předchozím, tedy i bez předchozích proměnných. |
||
mikul Profil |
#14 · Zasláno: 4. 5. 2008, 20:44:20
Ale když něco vkládám přes include - např horní menu, do souboru kde mám před fcí include např. že $stranka==uvod tak se mi v tom menu normálně zpracuje
<span class="horni-menu-polozka<?php if ($zone=="uvod") echo "-aktivni"; ?>"><a href="<?php echo $path; ?>">Úvodní stránka</a></span> i když jej vkládám odjinud tak se tam ta proměnná projeví. |
||
mikul Profil |
#15 · Zasláno: 4. 5. 2008, 20:47:32
prosím promiňte nesoulad nazev proměnných
|
||
Trejpa Profil |
#16 · Zasláno: 4. 5. 2008, 20:49:43
mikul
K Str4wberryho řešení: Možnost by to byla, ale přenášený styl by byl obrovský, protože by musel obsahovat všechny možnosti, které mohou být rozdílné. PHP (HTML): <body class="pozadi<?echo $pozadi; ?> pismo<?echo $pismo; ?> okraje<?echo $okraje; ?>"> CSS: .pozadi1 { background: #fff; } .pozadi1 h1 { background: #99f; } .pozadi1 a:hover { background: #ccc; } .pozadi2 { background: #ffe; } .pozadi2 h1 { background: #ff9; } .pozadi2 a:hover { background: #fcf; } [...] .pismo1 { color: black; } .pismo1 a { color: blue; } .pismo2 { color: gray; } .pismo2 a { color: #990; } [...] |
||
mikul Profil |
#17 · Zasláno: 4. 5. 2008, 20:50:49
Tohle by taky šlo. To mě nenapadlo. Mít např v
.body #body |
||
Trejpa Profil |
#18 · Zasláno: 4. 5. 2008, 20:55:51
mikul
Ale když něco vkládám přes include [...] tak se mi v tom menu normálně zpracuje Ano, protože jde o jeden http požadavek od prohlížeče. Nezáleží na tom, kolik je tam vloženo souborů. Jeden požadavek => zpracování => jeden výsledek => konec spojení => zapomenout proměnné. Styly putují do prohlížeče jako druhý dotaz na server, naprosto nezávisle na stránce a takto nezávisle jsou zpracovávány. |
||
mikul Profil |
#19 · Zasláno: 4. 5. 2008, 21:01:01
Aha. Ale když tu proměnnou budu tahat z cookies tak by ji to mělo vzít ne? Takže můžu zůstat u příspěvku číslo 9 a mělo by to fungovat předělané na braní proměnné z cookies.
|
||
Trejpa Profil |
#20 · Zasláno: 4. 5. 2008, 21:03:47
mikul
proměnnou budu tahat z cookies tak by ji to mělo vzít ne? Samozřejmě. |
||
mikul Profil |
#21 · Zasláno: 4. 5. 2008, 21:06:04
Ok tak díky za vaše rady.
|
||
Časová prodleva: 16 let
|
0