Bonjour,
j'ai trouver un petit scripte intéressant sur pour fait un échange de style selon la jour et la nuit. Il y a un petit problème c'est qu'il ne fait pas automatique dès qu'il fait jour je veux qu'il applique le css day.css et quand la nuit arrive il faut q'il applique le css night.css

Voici le code souce de ma vue html :

<link rel="stylesheet" type="text/css" href="/css/day.css" id="switchStyle">

J'ai mon code qu'il vérifie l'heure de l'utilisateur et il va appliquer le css selon son temps

(function($) {
        var d = new Date();
        var hour = d.getHours();
        if (hour < 8 || hour > 20) {
            //between 8pm and 8am
            $('#switchStyle').attr('href', '/css/night.css');
        } else {
            $('#switchStyle').attr('href', '/css/day.css');
        }
})(jQuery);

Voici le lien du script en question : http://stackoverflow.com/questions/9202125/how-do-i-switch-stylesheets-automatically-using-jquery
Merci de votre aide.

6 réponses


Nairolf
Réponse acceptée

Pour ça autant le faire en PHP, ça sera plus simple. Car à part si tu fais un script qui s'actualise toute les minutes, le jQuery n'est pas obligé.

Bonsoir,

Nairolf =>

dès qu'il fait jour je veux qu'il applique le css day.css et quand la nuit arrive il faut q'il applique le css night.css

En php ça changera rien, d'autant plus que l'on peut très bien vouloir faire ça sur un site statique.

Il faut en effet lancer une fonction à intervalle régulier. Toutes les minutes comme le suggère Nairolf me semble pas mal .

En reprenant ton code:

(function($) {

    //On définie la fonction qui associera la bonne feuille de style
     var adapteStyle = function(){
      var d = new Date();
        var hour = d.getHours();
        if (hour < 8 || hour > 20) {
            //between 8pm and 8am
            $('#switchStyle').attr('href', '/css/night.css');
        } else {
            $('#switchStyle').attr('href', '/css/day.css');
        }
    };
// On définie l'intervalle (qui lancera la fonction toutes les minutes)
var timer = setInterval(adapteStyle,60000); //le temps est en ms
//On lance la fonction au chargement de la page (sinon elle ne se lancerait qu'au bout d'1 min)
adapteStyle();

})(jQuery);

cordialement.

Ps: pour éviter un changement de feuille de style inutile (remettre la même), on pourrait stocker le nom de la feuille de style en cours et tester si la nouvelle feuille de style à appliquer est identique ou non . Faire seulement le changement si cela est nécessaire.

lakamark
Auteur

Merci de votre aide mais je me suis fait un petit script php qui est meilleur que utiliser le JavaScript.

Bonjour, sauf si tu veux le changement de style quand la nuit arrive sans recharger la page..

cordialement

lakamark
Auteur

Si je veux changer de style quand la nuit arrive sans recharger la page, il faudrait que je utilise le script javascript et le php en même temps?

Non juste ce que t'as donnée antho. En pur js c'est beaucoup moins lourd qu'en php