Stylesheet durch Klick ändern

das_element

Erfahrenes Mitglied
Guten Abend,

habe hier eine php-seite mit externem stylesheet und wollte nun durch einen mausklick auf einen link/bild/o.ä. bestimme eigenschaften des stylesheets ändern.

Ich könnte zwar auch mehrere Stylesheets anlegen, so wie hier:
PHP:
<link rel=stylesheet type=text/css href=css/<?php echo $_GET[style] ?>>
und
PHP:
<a href="seite.php?style=style1.css">Design1</a>
<a href="seite.php?style=style2.css">Design2</a>

Aber ich will eigentlich ein wenig Ordnung halten und nur mit einen Stylesheet arbeiten, das ein wenig variabler ist.

Ist es möglich, das Stylesheet "on-the-run" durch einen Klick zu ändern?
Zumindest temporär?
 
Ja. Du kannst das Stylesheet selber als php-Datei ablegen.

Dann hasst du nachher ein Aufruf
HTML:
<link rel=stylesheet type=text/css href=css/genericCss.php?id=1>
 
Okay, dass ich das Stylesheet als PHP-Datei ablegen kann, weiß ich.
Inwiefern verändert das "?id=1" diesen Aufruf und wie kann ich dann z.B. auf id=2 übergehen?
 
die id kannst du im css-php-file mittels $_POST['id'] auslesen. Woher die id oder was auch immer kommt musst du wissen.

myCss.php
PHP:
body {
  margin:0;
  background-color:#f0f0f0;
  padding:0 15px 0 10px;
}
<?php if($_POST['style'] = 'spezial') { ?>
a:link, a:visited {
  color:#027AC6;
  text-decoration:none;
}
<?php }>

und auf deiner Seite hast du sowoas

index.php
Code:
<html>
    <head>
        <link rel=stylesheet type=text/css href=css/myCss.php?style=<?php echo $_GET[style] ?>>
 
Okay soweit versteh' ich das ja.
Ich sprech eben über diese einzelnen 'style'-Bereiche, bestimmte Sachen im Stylesheet an.
Aber wie funktioniert es, dass ich einen Link anklicke und dieses 'style' einen anderen Wert annimmt?
 
Achso! Du willst nicht die css-Datei wechseln sondern die css-zurodnung für einen Link?

Styles kenne doch den Unterschied für Links die schon geklickt wurden und. Ergo ists ein normaler Eintrag im CSS-File 'a:visited'. Hat aber nix mit PHP zu tun.

Oder ich versteh nicht was du eigentlich willst.
 
Beides nicht so ganz ;)
Ich wollte EINE css-Datei, in der gleichzeitig in einem Bereich die PRINT ausgabe, sowie in einem anderen Bereich die SCREEN ausgabe gespeichert sind. Ich will nicht nur einen Link ändern, sondern das gesamte Aussehen der Seite (was ich ja über das Stylesheet lösen könnte).
Oder ist es sowieso (und der Übersichtlichkeit halber) sinnvoller zwei Stylesheets anzulegen und diese dann entsprechend zu formatieren?

edit:
Okay, ich hab das jetzt über zwei verschiedene Stylesheets gelöst.
Also eigentlich so wie's im ersten Post von mir steht :/
Wie kann ich denn jetzt noch so ein "Basis-CSS"-File festlegen, meine Datei startet ja ohne Stylesheet, sondern bekommt (wie im Post #1 zu sehen) erst durch einen Klick auf den Link ein CSS-File zugewiesen?
 
Wenn ich das auf die Schnelle jetzt richtig gelesen habe, dann wohl so ganz am Anfang der Seite eintragen:

PHP:
if (!isset($_GET["style"])) {
  $_GET["style"] = "standard.css";
}

Wenn die GET-Variable nicht gesetzt ist, dann mit Standardwert belegen.
 
Alles klappt wunderbar jetzt.
Ich bedanke mich vielmals :)

edit.
ich habe das ganze jetzt so realisiert:

im Header:
PHP:
<?php if (!isset($_GET["style"])) {$_GET["style"] = "style1.css";} ?>
<link rel="stylesheet" type="text/css" href=<?php echo '"'.$_GET[style].'"'; ?>>

im Body:
PHP:
<a href="test.php?style=<?php if ($_GET["style"] == "style1.css") {echo "style2.css";}
 else {echo "style1.css";} ?> ">Design wechseln</a>

Durch Klick auf den Link wird zwischen den zwei Stylesheets hin- und hergewechselt.
Ist das so sinnvoll, oder gibt es eine leichtere Möglichkeit, das zu realisieren?
Und dann noch als letzte Frage: Passt das Syntax-technisch? :)

mfg
 
Zuletzt bearbeitet:
Zurück