IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Basculer entre deux feuilles de style


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Par défaut Basculer entre deux feuilles de style
    Salut à tous,

    Le débutant que je suis viens faire appel à vos lumières.

    J'ai créé sur l'intranet de mon travail un second thème en css.
    J'ai récupéré un bouton switch dont le design me convient bien.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <link rel="stylesheet" type="text/css" href="styledev.css" id="clair" />
    <link rel="alternate stylesheet" type="text/css" href="darkstyledev.css" id="sombre" />
     
     
    <label class="switch">
      <input type="checkbox" name="theme" id="theme"> 
      <span class="slider round" onclick="changetheme('darkstyledev.css')"></span>
    </label>

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script>
    function changetheme(style){
     
    var bouton = (theme.checked);
     
    if (bouton === true){
    document.getElementById("sombre").setAttribute("href", style);
    } else 
    document.getElementById("clair").setAttribute("href", style);
    }
    </script>

    Mon script actuel fonctionne partiellement, c'est-à-dire que lorsque je clique sur le switch, le changement de style s'opère bien.
    Mais j'aimerais pouvoir revenir au précédent style en "déswitchant" !

    Je pense que mon problème vient du fait que j'appelle dans le onclick le paramètre de la fonction qui définit l'un des deux styles.
    Et là je suis bloqué, je ne trouve pas de solution. Pourriez-vous me mettre sur la voie ?

    Merci par avance !

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Par défaut
    J'ai tenté un truc comme ça, mais ça ne fonctionne pas. Je m'y perds...

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script>
    bouton = (theme.checked);
     
    function style1(style){
    if (bouton === false){
    document.getElementById("clair").setAttribute("href", style);
    }
    }
     
    function style2(style){
    if (bouton === true){
    document.getElementById("sombre").setAttribute("href", style);
    }
    }
    </script>

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <label class="switch">
      <input type="checkbox" name="theme" id="theme"> 
      <span class="slider round" onclick="style1('styledev.css'),style2('darkstyledev.css')"></span>
     </label>

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    il y aurait bien des choses à dire mais restons sur l'essentiel.

    Il te faut mettre la gestion de l'événement sur l'<input> et pas ailleurs.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <label class="switch">
      <input type="checkbox" name="theme" id="theme" onclick="changeTheme(this)"> 
      <span class="slider round"></span>
    </label>
    dans la fonction changeTheme, le paramètre passé, this, est en fait l'<input> lui même, il te suffit donc de surveiller son état et d'agir en conséquence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function changeTheme(obj) {
      const etatBouton = obj.checked;
      alert("état : " + etatBouton)
    }

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 45
    Par défaut
    Bonjour et merci pour ton aide,

    J'avais mis le onclick dans le span

    Bon j'ai revu mon script et aussi j'ai supprimé ma balise link alternative qui m'induisait en erreur !

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script>
    function changeTheme(obj) {
      const etatBouton = obj.checked;
    if (etatBouton === true){
    document.getElementById("style").setAttribute("href", "darkstyledev.css");
    } else {
    document.getElementById("style").setAttribute("href", "styledev.css");
    }
    }
    </script>

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="stylesheet" type="text/css" href="styledev.css" id="style" />

    Ca fonctionne impec ! Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Priorité de styles entre deux feuilles
    Par droubaud dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 15/03/2015, 10h31
  2. Update entre deux feuilles excel
    Par foxer98 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 12h25
  3. basculer entre deux form?
    Par UnSofteuxAmateur dans le forum Windows Forms
    Réponses: 9
    Dernier message: 04/07/2007, 12h35
  4. [CSS] deux feuilles de style quasi identiques.
    Par titoumimi dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 02/03/2006, 17h23
  5. MSXML2, enchainer deux feuilles de Style
    Par burno dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 10/09/2003, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo