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 :

background css avec une condition javascript


Sujet :

JavaScript

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut background css avec une condition javascript
    Bonjour,

    Je viens juste de m'inscrire et j'ai déjàbesoin d'aide. J'espère réussir à être claire.

    Dans le site que je suis entrain de faire les onglets de mon menu ne sont pas des mots mais des background dans CSS: ainsi, au survol le mot est en surbrillance.

    En fait, je voudrais que l'onglet correspondant à chaque page reste en surbrillance quand on est sur cette page. Du coup, il faudrait faire ça en javascript mais je ne sais pas quelle est la bonne syntaxe. En gros je veux dire:

    if url(.....html) alors met tel background à tel id

    Si quelqu'un a une idée, il me sauvera la vie!

    Merci.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonjour,

    tu as cette solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (document.location=="ton_url")
         document.getElementById("idElement").style.backgroundColor="#123456";
    mais cela t'oblige à écrire dans le code l'url de la page qui peut être plus ou moins longue.

    Je pense que pour chaque page il faudrait plutôt quelque chose dans ce genre :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="document.getElementById('idElement').style.backgroundColor='#123456'">

    et pour chaque page que tu vas créer tu modifies la valeur de idElement.

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Est-ce que le code HTML de ton menu se trouve dans toutes les pages de ton site ? Si c'est le cas, il te suffit de mettre dans le HTML une classe CSS selected sur l'onglet correspondant à ta page, pas besoin de Javascript.

  4. #4
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Merci à vous deux, vos réponses m'ont bien servi.

    Sylvain: malheureusement je ne pense pas pouvoir faire ce que tu me dis car le background est différent pour chaque ID et du coup mes menus seront tous en surbrillance dans toutes les pages. Mais ça fait juste 2 mois que je fais du web, donc je ne suis sûre de rien.

    Bonne continuation à tous.

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Pour illustrer ce qu'a écrit Sylvain :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .menuSelected{
    	color:#123456;
    }
    .menuNotSelected{
    	color:#0000FF;
    }
    puis par exemple dans la page 1 :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
    <span class="menuSelected"> Menu1</span>
    <span class="menuNotSelected"> Menu2</span>
    <span class="menuNotSelected"> Menu3</span>
    <span class="menuNotSelected"> Menu4</span>
    </div>

    puis par exemple dans la page 2 :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
    <span class="menuNotSelected"> Menu1</span>
    <span class="menuSelected"> Menu2</span>
    <span class="menuNotSelected"> Menu3</span>
    <span class="menuNotSelected"> Menu4</span>
    </div>

    etc.

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Je vois tout à fait le principe en utilisant une classe, mais comme mon menu 1 a un background, le menu 2 un autre background, etc, je ne peux pas faire comme ça.

    J'ai essayé la première solution car c'est celle qui me parle le plus, mais j'ai du louper un truc parce que ça ne marche pas. Je teste sur Wamp avec ce code dans le <head>:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
            
            if (document.location=="http://localhost/blindcat/infos.html")
            document.getElementById("inf").style.backgroundImage="infos_b.jpg";
            
            else document.getElementById("inf").style.backgroundImage="infos.jpg";
            
    </script>

    Je ne sais pas du tout où est l'erreur.

    Sinon j'ai essayé la 2èm solution et ça ne marche pas non plus. Je vais continuer à tester tout ce que je peux.

    En tout cas merci à vous deux.

  7. #7
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par Tigrou 74 Voir le message
    Je vois tout à fait le principe en utilisant une classe, mais comme mon menu 1 a un background, le menu 2 un autre background, etc, je ne peux pas faire comme ça.
    tu sais que tu peux cumuler les classes ?

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .menuSelected{
    	color:#123456;
    }
    .menuNotSelected{
    	color:#0000FF;
    }
    .background1{
    	background-image: url("image1.png");
    }
    .background2{
    	background-image: url("image2.png");
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
    <span class="menuSelected background1"> Menu1</span>
    <span class="menuNotSelected background2"> Menu2</span>
    <span class="menuNotSelected background1"> Menu3</span>
    <span class="menuNotSelected background1"> Menu4</span>
    </div>

    Citation Envoyé par Tigrou 74 Voir le message
    J'ai essayé la première solution car c'est celle qui me parle le plus, mais j'ai du louper un truc parce que ça ne marche pas. Je teste sur Wamp avec ce code dans le <head>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
     
    	if (document.location=="http://localhost/blindcat/infos.html")
            document.getElementById("inf").style.backgroundImage="infos_b.jpg"
            else document.getElementById("inf").style.backgroundImage="infos.jpg";
     
    </script>
    en postant le code je me suis posé la question de savoir s'il fallait utiliser un lien local ou non... Essaye voir avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "http://nomDuDomaine/blindcat/infos.html"

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    contentes toi de vérifier que le nom de la page est dans ton texte avec la méthode indexOf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( textSource.indexOf(window.location.href)  >-1){
      // action à faire
    }
    ou un truc approchant.

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Citation Envoyé par Tigrou 74 Voir le message
    Sylvain: malheureusement je ne pense pas pouvoir faire ce que tu me dis car le background est différent pour chaque ID et du coup mes menus seront tous en surbrillance dans toutes les pages. Mais ça fait juste 2 mois que je fais du web, donc je ne suis sûre de rien.
    Aucun problème, il suffit de faire une règle CSS pour chaque élément du menu.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <nav>
    <ul>
    <li id="lien-accueil">Accueil</li>
    <li id="lien-infos" class="selected">Infos</li>
    <li id="lien-faq">F.A.Q.</li>
    </ul>
    </nav>

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #lien-accueil { background-image: url('img/onglet_accueil.png'); }
    #lien-accueil.selected { background-image: url('img/onglet_accueil_selected.png'); }
    #lien-infos { background-image: url('img/onglet_infos.png'); }
    #lien-infos.selected { background-image: url('img/onglet_infos_selected.png'); }
    #lien-faq { background-image: url('img/onglet_faq.png'); }
    #lien-faq.selected { background-image: url('img/onglet_faq_selected.png'); }

    Vraiment, il n'y a pas besoin de Javascript pour ça. Alors autant s'en passer.

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Vraiment, il n'y a pas besoin de Javascript pour ça. Alors autant s'en passer.
    je n'ai pas pris la peine de lire la discussion depuis le début, je suis parfaitement d'accord avec le fait de ce passer de javascript dans ce cas

  11. #11
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut C'est bon!!!!
    ça y est j'ai réussi!

    Le CSS suffisait bel et bien. Je n'avait pas du tout pensé à faire plusieurs classes. ça m'arrange grave car je ne suis que webdesigner débutante, donc le javacript me semble super complexe. Donc merci "auteur" et merci à tous les autres. ça fait super plaisir de voir des gens qui veulent nous aider.

    c'était tellement simple finalement que jme sens un peu bête. Mais c'est pas fini, je suis sûre qu'il y en aura d'autres malheureusement!

    MERCI MERCI MERCI

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

Discussions similaires

  1. [xml] un label qui répète avec une condition
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/01/2006, 13h08
  2. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18
  3. Réponses: 3
    Dernier message: 24/10/2005, 13h47
  4. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 11h56
  5. envoyer submit avec une condition !
    Par delphinote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/07/2005, 15h52

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