• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Zeitabhängiges CSS

B

bigfraggle

Gast
Zeitabhängiges CSS

Hi!

Ich habe für eine Page vier Designs mittels externer CSS-Dateien erstellt: fruehling.css, sommer.css, herbst.css und winter.css.

Dazu habe ich jetzt zwei Fragen:

1) Wie schaffe ich es, dass je nach Datum die korrekte CSS-Datei geladen wird? Sprich: Für fruehling die Monate 3-5, für sommer die Monate 6-8, für herbst die Monate 9-11 und für winter die Monate 12-2?

2) Zudem würde ich gerne im Menü die Möglichkeit bieten, dass CSS unabhängig auszuwählen. Kann man das so realisieren, dass die hier gewählte Option nur für diesen Besuch gilt? Beim Neuaufruf sollte sich das ganze dann wieder nach den Monaten richten.

Gruß
bigfraggle
 
AW: Zeitabhängiges CSS

Mit PHP wäre das durchaus (relativ) leicht zu realisieren.

Schau dir mal die Funtion time() und die Funktion date() an.

Ich muss leider jetzt abwaschen..kann dir also jetzt nur mit dieser Kurzinfo helfen.
 
AW: Zeitabhängiges CSS

bigfraggle am 06.01.2009 16:16 schrieb:
1) Wie schaffe ich es, dass je nach Datum die korrekte CSS-Datei geladen wird? Sprich: Für fruehling die Monate 3-5, für sommer die Monate 6-8, für herbst die Monate 9-11 und für winter die Monate 12-2?
Ok der Abwasch ist erledigt. :-D
<head>
<?
$aktueller_monat = date("n",time());

switch ($aktueller_monat){

case "3": case "4": case "5":
?> <link rel="stylesheet" type="text/css" href="fruehling.css"> <?
break;
case "6": case "7": case "8":
?> <link rel="stylesheet" type="text/css" href="sommer.css"> <?
break;
case "9": case "10": case "11":
?> <link rel="stylesheet" type="text/css" href="herbst.css"> <?
break;
case "1": case "2": case "12":
?> <link rel="stylesheet" type="text/css" href="winter.css"> <?
break;
default:
?> <link rel="stylesheet" type="text/css" href="standard.css"> <?
break;

}
?>
</head>

Damit sollte deine erste Frage beantwortet werden. Natürlich nur, wenn du PHP verfügbar hast.
 
AW: Zeitabhängiges CSS

Ah, danke! :)

Was bewirkt die default-Anweisung?
 
AW: Zeitabhängiges CSS

bigfraggle am 06.01.2009 18:33 schrieb:
Was bewirkt die default-Anweisung?
default wird immer dann ausgelöst, wenn KEINE der anderen Bedingungen erfüllt ist.
Bei der gegebenen Abfrage sollte/wird das allerdings nicht passieren.
die switch-Abfrage verlangt aber nach der default-Bedinung, sonst wird ein Fehler ausgegeben.
Du kannst also auch einfach schreiben:

Also das Ereignis (die Einbindung) weglassen. Der default-case wird eh nicht ausgelöst, da ja der Wert von $aktueller_monat IMMER einen der abgefragten Werte (1,2,3,4,5,6,7,8,9,10,11 oder 12) besitzt.
 
AW: Zeitabhängiges CSS

Gäbs da eigentlich eine Möglichkeit, die Zeitabfrage noch zu konkretisieren?
Wenn man in diesem Fall die Tage für Frühlings-, Sommer-, Herbst- und Winteranfang hat?
 
AW: Zeitabhängiges CSS

bigfraggle am 06.01.2009 19:47 schrieb:
Gäbs da eigentlich eine Möglichkeit, die Zeitabfrage noch zu konkretisieren?
Wenn man in diesem Fall die Tage für Frühlings-, Sommer-, Herbst- und Winteranfang hat?
Mmja. Also ich habe ehrlich gesagt keinen Plan, wie das mit dem Frühlingsanfang etc. so ist...also wenn das immer an einem bestimmten Datum so ist, dann musst du einfach nur den Monat UND DEN TAG ermitteln. Im Moment ermitteln wir ja nur den Monat, ausgegeben als Zahl zwischen 1-12.
Mit der PHP-Funktion date() kann man aber alle möglichen Daten formatieren.

Also:
time() ermittelt den aktuellen Timestamp (die vergangenen Sekunden seit dem 1.1.1970)
mit date() kann man diesen Timestamp dann in ein Datum formatieren.

date("n",time()); tut also nichts weiter, als den aktuellen Monat zu ermitteln.

Wenn du mir sagst, wie das mit den Anfängen ist, dann mach ich dir ein Code-Beispiel. Oder du guckst dir alternativ den date()-Befehl an.
 
AW: Zeitabhängiges CSS

bigfraggle am 06.01.2009 19:47 schrieb:
Gäbs da eigentlich eine Möglichkeit, die Zeitabfrage noch zu konkretisieren?
Wenn man in diesem Fall die Tage für Frühlings-, Sommer-, Herbst- und Winteranfang hat?

Sicher gehts.
Frühlingsanfang ist immer am 21. März (glaub i halt). Auf jeden Fall sind fixe Daten.

Wie schon oben beim "switch" holst du dir per date() das aktuelle datum und vergleichst...
zB (fiktiver Code):
if (date() > 21.03.08) && (date() < 21.06.08)
echo "frühjahr";


lg
 
AW: Zeitabhängiges CSS

rappit am 07.01.2009 13:50 schrieb:
zB (fiktiver Code):
$timestamp = time();
if (date("d.m",$timestamp) > "21.03") && (date("d.m",$timestamp) < "21.06")
echo "frühjahr";
So wäre er nicht mehr ganz so fiktiv ... =)
Das Jahr würde ich nicht mit in die Bedingung nehmen, wenn es eh jedes Jahr gleich ist. Sonst kann man den Code ja jedes Jahr ändern.^^
 
AW: Zeitabhängiges CSS

[Exkurs]

Also, nur mal zur Info: Die Jahreszeiten beginnen aufgrund der Tatsache, das ein Jahr nicht genau 365 Tage hat, natürlich nicht 100%ig an ein und demselben Tag. Das ganze verschiebt sich also nach und nach.

Da eine Website aber nicht für die Ewigkeit ist, wäre das egal. Näherungsweise fallen die Jahreszeiten zumindest auf den gleichen Tag.

[/Exkurs]

Zurück zur Frage.

Wo gehört die if-Abfrage denn genau hin? Kann ich da das Konstrukt von oben verwenden oder muss da was neues gemacht werden?
 
AW: Zeitabhängiges CSS

bigfraggle am 07.01.2009 16:29 schrieb:
Wo gehört die if-Abfrage denn genau hin? Kann ich da das Konstrukt von oben verwenden oder muss da was neues gemacht werden?
Ob du das in einer IF-Abfrage oder einer Switch-Abfrage machst bleibt eigentlich dir überlassen. Switch ist nur meistens weniger Schreibarbeit.
 
AW: Zeitabhängiges CSS

Mothman am 07.01.2009 14:44 schrieb:
rappit am 07.01.2009 13:50 schrieb:
zB (fiktiver Code):
$timestamp = time();
if (date("d.m",$timestamp) > "21.03") && (date("d.m",$timestamp) < "21.06")
echo "frühjahr";
So wäre er nicht mehr ganz so fiktiv ... =)
Das Jahr würde ich nicht mit in die Bedingung nehmen, wenn es eh jedes Jahr gleich ist. Sonst kann man den Code ja jedes Jahr ändern.^^

War mir schon klar dass man das Datum nicht mitreinnimmt - war ja nur fiktiv.
Bin nur zu faul gewesen... ;)

Wenns jetzt funktioniert dann passts eh.


lg
 
AW: Zeitabhängiges CSS

Mothman am 07.01.2009 16:34 schrieb:
bigfraggle am 07.01.2009 16:29 schrieb:
Wo gehört die if-Abfrage denn genau hin? Kann ich da das Konstrukt von oben verwenden oder muss da was neues gemacht werden?
Ob du das in einer IF-Abfrage oder einer Switch-Abfrage machst bleibt eigentlich dir überlassen. Switch ist nur meistens weniger Schreibarbeit.

Aber wie drücke ich dann das mit dem "case" aus?
Gibt ja kein "= x" sondern ein "datum < x > datum"...
 
AW: Zeitabhängiges CSS

bigfraggle am 08.01.2009 16:07 schrieb:
Aber wie drücke ich dann das mit dem "case" aus?
Gibt ja kein "= x" sondern ein "datum < x > datum"...
Switch-Case versteht auch Wertebereiche:
switch (true){

case ($aktueller_monat >= "3" && $aktueller_monat <= "5"):
?> <link rel="stylesheet" type="text/css" href="fruehling.css"> <?
break;

...usw.

Aber in dem Fall kannst du auch eine IF-Schleife bauen. Ist eigentlich wirklich egal.^^
 
Zurück