Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczna zmiana stylów css
Forum PHP.pl > Forum > PHP
paweld89
Chciałbym zrobić dynamiczną zmianę stylów css, kolega mi wspominał żebym zrobił to na sesjach, ale nie wiem jak. Pomoże mi ktoś z tym ?
sajegib
fajnie jakbyś opisał dokładnie jak to ma wyglądać
paweld89
Poprostu mam stronę i styl css do niej:

  1.  
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. <meta name="Description" content=" [wstaw tu opis strony] ">
  6. <meta name="Keywords" content=" [wstaw tu slowa kluczowe] ">
  7. <meta name="Author" content=" [dane autora] ">
  8. <meta name="Generator" content="kED2">
  9.  
  10. <title> [tytuł strony] </title>
  11.  
  12. <link rel="stylesheet" href="style.css " type="text/css">
  13.  
  14. </head>
  15.  
  16. <ul>
  17. <li><a id="css-red" href="#red">Red</a></li>
  18. <li><a id="css-blue" href="#blue">Blue</a></li>
  19. <li><a id="css-green" href="#green">Green</a></li>
  20. </ul>
  21. <a href="1.html">wejdź</a>
  22. </body>
  23. </html>
  24.  
  25. body
  26. {
  27. margin-left : auto;
  28. margin-right : auto;
  29. padding : 0;
  30. background-color: black;
  31. height : auto;
  32. font-family : verdana;
  33. font-size : 12px;
  34. color : white;
  35. }
  36.  
  37.  
  38.  

Po kliknięciu na poszczególne przyciski będzie się zmieniać styl css.
sajegib
Ja bym to zrobil w jQuery - zdarzenie click + addclass
paweld89
mam to zrobione inaczej ale mam pewien problem zaraz wyślę co mam zrobione i jak i z czym mam problem

Otóż zrobiłem tak:
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. <meta name="Description" content=" [wstaw tu opis strony] ">
  5. <meta name="Keywords" content=" [wstaw tu slowa kluczowe] ">
  6. <meta name="Author" content=" [dane autora] ">
  7. <meta name="Generator" content="kED2">
  8.  
  9. <title> [tytuł strony] </title>
  10.  
  11. <link rel="stylesheet" href="style.css " type="text/css">
  12. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  13. <script type="text/javascript">
  14. $(document).ready(function() {
  15. // red
  16. $("#css-red").click(function() {
  17. $("link[rel=stylesheet]").attr({href : "red.css"});
  18. });
  19.  
  20. // blue
  21. $("#css-blue").click(function() {
  22. $("link[rel=stylesheet]").attr({href : "blue.css"});
  23. });
  24.  
  25. // green
  26. $("#css-green").click(function() {
  27. $("link[rel=stylesheet]").attr({href : "green.css"});
  28. });
  29. });
  30. </head>
  31.  
  32. <ul>
  33. <li><a id="css-red" href="#red">Red</a></li>
  34. <li><a id="css-blue" href="#blue">Blue</a></li>
  35. <li><a id="css-green" href="#green">Green</a></li>
  36. </ul>
  37. <a href="1.html">wejdź</a>
  38. </body>
  39. </html>
  40.  

i do tego domyślny css:
  1. body
  2. {
  3. margin-left : auto;
  4. margin-right : auto;
  5. padding : 0;
  6. background-color: black;
  7. height : auto;
  8. font-family : verdana;
  9. font-size : 12px;
  10. color : white;
  11. }
  12.  


oraz css'y zastępcze oczywiście każdy w innym pliku:
  1.  
  2. body
  3. {
  4. margin-left : auto;
  5. margin-right : auto;
  6. padding : 0;
  7. background-color: red;
  8. height : auto;
  9. font-family : verdana;
  10. font-size : 12px;
  11. color : white;
  12. }
  13.  
  14. body
  15. {
  16. margin-left : auto;
  17. margin-right : auto;
  18. padding : 0;
  19. background-color: blue;
  20. height : auto;
  21. font-family : verdana;
  22. font-size : 12px;
  23. color : white;
  24. }
  25.  
  26. body
  27. {
  28. margin-left : auto;
  29. margin-right : auto;
  30. padding : 0;
  31. background-color: green;
  32. height : auto;
  33. font-family : verdana;
  34. font-size : 12px;
  35. color : white;
  36. }
  37.  
  38.  
  39.  

oraz plik z linku:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  3. <meta name="Description" content=" [wstaw tu opis strony] ">
  4. <meta name="Keywords" content=" [wstaw tu slowa kluczowe] ">
  5. <meta name="Author" content=" [dane autora] ">
  6. <meta name="Generator" content="kED2">
  7.  
  8. <title> [tytuł strony] </title>
  9.  
  10. <link rel="stylesheet" href="style.css " type="text/css">
  11. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  12. <script type="text/javascript">
  13. $(document).ready(function() {
  14. // red
  15. $("#css-red").click(function() {
  16. $("link[rel=stylesheet]").attr({href : "red.css"});
  17. });
  18.  
  19. // blue
  20. $("#css-blue").click(function() {
  21. $("link[rel=stylesheet]").attr({href : "blue.css"});
  22. });
  23.  
  24. // green
  25. $("#css-green").click(function() {
  26. $("link[rel=stylesheet]").attr({href : "green.css"});
  27. });
  28. });
  29. </head>
  30.  
  31. <ul>
  32. <li><a id="css-red" href="#red">Red</a></li>
  33. <li><a id="css-blue" href="#blue">Blue</a></li>
  34. <li><a id="css-green" href="#green">Green</a></li>
  35. </ul>
  36. <a href="index.html">wróć</a>
  37. </body>
  38. </html>


no i wszystko ładnie pięknie działa tło się przełącza, jadnak problem z tym że po przejściu na podstronę ustawia się tło z domyślnego pliku css czyli czarne. Słyszałem że da się jakoś zrobić żeby ustawienie było zapamiętywane. ale nie mam pojęcia jak to zrobić sad.gif
sajegib
zapisz do bazy/pliku ostatnio wybrany css, a przy wczytaniu strony sprawdzaj jaki byl wybrany i go wyswietlaj
paweld89
a dałbyś radę trochę mnie poinstruować jak to zrobić ? tzn jak zapisać i odczytac to wiem, ale którą cześć kodu mam zapisywać i odczytywać ?
sajegib
Na pewno jest lepsze rozwiazanie ale na szybkości przychodzi mi do glowy cos takiego

-tworzysz sobie tyle plikow .css ile potrzebujesz stylow
-do tabeli w bazie dajesz kolumne z nazwa wybranego pliku *.css
-pobierasz z bazy nazwe tego pliku i przypisujesz ją np. zmiennej $styl
-w <head> gdzie dajesz sciezke do pliku ze stylami dorzucasz coś takiego
  1. <link rel="Stylesheet" type="text/css" href="./<?php echo $styl; ?>.css" />
paweld89
No dobra to rozumiem ale skąd mam mieć pewność że wczyta się dobry css ? mam bazować na ostatnio dodanym rekordzie czy jak ?
sajegib
no to już od ciebie zależy czy chcesz go wyświetlać dla każdego usera z osobna czy jak tam wolisz
paweld89
OK przetestuję ten sposób smile.gif jak bym mial problem to napisze smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.