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

jQuery Discussion :

Ajout d'une class à un élément


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Ajout d'une class à un élément
    Bonjour,

    Pour un projet que j'ai je souhaiterais ajouter une class aux éléments de ma barre de navigation mais étant plutôt novice en JS j'ai un peu de mal...

    L'objectif au fait c'est d'arrondir les angles de mes liens seulement si à leur survol leur scrollTop = 0 (Si >= 1 l'arrondi ne doit pas être appliqué)

    Je vous joins mon code, je pense qu'il est vraiment pas beau à voir, je suis un peu parti dans tous les sens, mais bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $(document).ready(function()
    {
    	$(window).scroll(function()
    	{	
    		$('nav').mouseenter(function()
    		{
    			if($(this).scrollTop() = 0)
    			{
    				$('.navbar a').addClass('navRadius');
     
    				$('nav').mouseleave(function()
    				{
    					$('.navbar a').removeClass('navRadius');
    				});
    			}
    			else
    			{
    				$('.navbar a').removeClass('navRadius');
    			}
    		});
    	});
    });
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .navRadius
    {
    	border-bottom-left-radius: 5px;
    	border-bottom-right-radius: 5px;
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($(this).scrollTop() = 0)
    l'opérateur de comparaison en javacsript est ==

    et le css pour la bordure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .navRadius {
      border-radius: 0px 0px 5px 5px;
    -moz-border-radius: 0px 0px 5px 5px;
    -webkit-border-radius: 0px 0px 5px 5px;
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Effectivement erreur bête qui m'avait échappé, merci

    Par contre mon code ne marche toujours pas, j'ai essayé de le remanier un peu mais bon, sans succès, je me suis dirigé vers la bonne voie déjà ou c'est pas du tout ça ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    concernant l'approche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $('nav').on('mouseenter' ,function () {
      // test et action
    });
    $('nav').on('mouseleave' ,function () {
      // test et action
    });

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Je ne comprend pas d'où vient mon erreur...

    mon JS ne veut pas appliquer le radius alors qu'en CSS en utilisant la même classe ça fonctionne :/

    Alors ne parlons même pas du fait de le retirer ensuite si scrollTop >= 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* Ce code fonctionne */
    .navbar a:before
    {
    	border-bottom-left-radius: 5px;
    	border-bottom-right-radius: 5px;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /* Celui-ci non */
    $(document).ready(function()
    {
    	$('nav').mouseenter(function()
    	{
    		$('.navbar a:before').addClass('navRadius');
    	});
     
    	$('nav').mouseleave(function()
    	{
    		$('.navbar a:before').removeClass('navRadius');
    	});
    });
    (sans le :before l'effet ne marche pas non plus avec le CSS car j'ai déjà plusieurs choses sur ce menu)

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    $('.navbar a:before').addClass('navRadius');
    • tu l'as défini où/comment en CSS cette class ?

    /* Ce code fonctionne */
    .navbar a:before
    {
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
    }
    • j'ai du mal à voir comment ce code fonctionne !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    C'est que j'ai pas mal de trucs sur le CSS de ma nav (elle est faite en bootstrap au fait si jamais)

    Je met tout le code CSS des fois que ça puisse aider à y voir plus clair ^^'

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    .navbar, .navbar-default, .navbar-collapse { background-color: transparent; border: none; } /* Remove default parameters */
     
    .navbar-default .navbar-brand, .navbar-default .navbar-brand:hover { color: white; font-size: 16px; } /* Modification to .navbar-brand */
     
    .navbar-default .navbar-nav li a, .navbar-default .navbar-nav li a:hover { color: white; text-align: center; text-transform: uppercase; font-size: 14px; } /* Modification to .navbar-nav */
     
    .navbar-default .navbar-nav>li>a:focus {color: white;} /* Conserves the white color after click */
     
    /* ACTIVE BACKGROUND ON SCROLL */
    nav, .navActive
    {
    	font-family: 'Merriweather', serif;
    	-webkit-transition: all 0.5s ease-in; -moz-transition: all 0.5s ease-in; -ms-transition: all 0.5s ease-in; -o-transition: all 0.5s ease-in; transition: all 0.5s ease-in;
    	background-color: rgba(0, 0, 0, 0.6);
    }
     
    .navActive { box-shadow: 0 0 15px black; }
     
    /* SCROLLSPY */
    .navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:focus, .navbar-default .navbar-nav>.active>a:hover
    {
        color: white; /* Color when the scrollspy is active */
        border-bottom: 2px solid #e1e1d0;
    	background: -webkit-radial-gradient(rgba(204, 204, 179, 0.3) 0%, transparent 70%);
    	background: -moz-radial-gradient(rgba(204, 204, 179, 0.3) 0%, transparent 70%);
    	background: -ms-radial-gradient(rgba(204, 204, 179, 0.3) 0%, transparent 70%);
    	background: -o-radial-gradient(rgba(204, 204, 179, 0.3) 0%, transparent 70%);
    	background: radial-gradient(rgba(204, 204, 179, 0.3) 0%, transparent 70%);
    }
     
    /* Animation on hover */
    .navbar a:before
    {
    	content: "";
    	position: absolute;
    	top: 0; right: 0; bottom: 0; left: 0;
    	background-color: rgba(255, 255, 255, 0.3);
    	-webkit-transform: scaleY(0); -moz-transform: scaleY(0); -ms-transform: scaleY(0); -o-transform: scaleY(0); transform: scaleY(0);
    	-webkit-transform-origin: 50% 0; -moz-transform-origin: 50% 0; -ms-transform-origin: 50% 0; -o-transform-origin: 50% 0; transform-origin: 50% 0;
    	-webkit-transition: 0.3s ease-out; -moz-transition: 0.3s ease-out; -ms-transition: 0.3s ease-out; -o-transition: 0.3s ease-out; transition: 0.3s ease-out;
    }
     
    /* Height of the selection block (Hover) */
    .navbar a:hover:before { -webkit-transform: scaleY(1.04); -moz-transform: scaleY(1.04); -ms-transform: scaleY(1.04); -o-transform: scaleY(1.04); transform: scaleY(1.04); }

    Et au passage j'ai retouché un peu le JS mais bon ça fonctionne toujours pas quoi que je fasse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /* Avec ce code le radius s'applique mais seulement si scrollTop >= 1 ce qui n'est pas logique du tout ! */
    $(document).ready(function()
    {
        $(window).scroll(function()
        {  
            if ($('nav').scrollTop() == 0)
            {
                $('nav a').addClass('navRadius');
            }
            else
            {
                $('nav a').removeClass('navRadius');
            }
        });
    });

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je ne vois toujours pas de class navRadius dans ton code CSS.

    il nous manquerais aussi de code pour bien voir sur quoi tu cherches à mettre ton effet.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    .navRadius est bien présente t'en fait pas ^^ Je l'ai juste pas mise dans le code envoyé

    Et sinon de quel code tu parles au juste ?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    .navRadius est bien présente t'en fait pas ^^ Je l'ai juste pas mise dans le code envoyé
    Et tu espères que l'on puisse t'aider ???


    Quand tu vas chez ton garagiste tu lui dis:
    " Bonjour ma voiture est en panne, mais je suis venu avec celle de mon voisin ... "
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Elle est bien présente en CSS, et écrite dans mon 1er message, elle a pas changé depuis

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Tu nous a montré ton code html ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Du bootstrap classique

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <body data-spy="scroll" data-target=".navbar" data-offset="0">
     
    	<nav class="navbar navbar-default navbar-fixed-top">
      		<div class="container">
        			<div class="navbar-header">
            			<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
            				<span class="sr-only">Toggle navigation</span>
    			          	<span class="icon-bar"></span>
    			          	<span class="icon-bar"></span>
    			          	<span class="icon-bar"></span>            
          				</button>
          				<span class="navbar-brand"> CompanyName </span>
        			</div>
        			<div>
          				<div id="myNavbar" class="collapse navbar-collapse">
            				<ul class="nav navbar-nav navbar-right">
    						<li><a href="#section1"> <img src="SVG/Home.svg" alt="" > </a></li>
    						<li><a href="#section2"> Link1 </a></li>
    						<li><a href="#section3"> Link2 </a></li>
    						<li><a href="#section4"> Link3 </a></li>
    						<li><a href="#section5"> Link4 </a></li>
    						<li><a href="#section6"> Link5 </a></li>
    					</ul>
          				</div>
        			</div>
      		</div>
    	</nav>

  14. #14
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    if ($('nav').scrollTop() == 0)
    là tu testes si ton élément <nav> est « scrollé », est ce que tu veux ou est ce que tu veux tester le scroll de ta page ?

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Heu bah en soit que je teste le scroll sur la nav ou sur la page ça change pas tant que ça les choses si ? Dans la mesure ou si c'est >= 1 pour l'un ça l'est aussi pour l'autre, à moins que je me trompe
    Ou peut-être que ça impacte au niveau du rechargement de la page ?

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    ... , à moins que je me trompe
    Oui, ajoute ce code en fin de page et regarde la console (F12)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $(document).ready(function () {
      $(window).on('scroll', function () {
        console.log('body : ', $(this).scrollTop());
        console.log('nav : ', $('nav').scrollTop());
      });
    });

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Effectivement ça change pas mal, la nav reste à 0

    Nom : console.png
Affichages : 125
Taille : 22,9 Ko

  18. #18
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Oui et alors tu en conclues quoi !??!

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    J'en conclus qu'il y a un petit problème sur mon JS au niveau des éléments sélectionnés alors, vu que c'est la page qui est pris en compte et pas la nav ^^

    Je vais essayer de revoir ça quand j'aurais un peu plus de temps, thx

Discussions similaires

  1. [Séquence] ambiguité sur l'ajout d'une classe
    Par rwikus09 dans le forum Autres Diagrammes
    Réponses: 1
    Dernier message: 15/12/2009, 17h01
  2. Réponses: 2
    Dernier message: 22/04/2008, 11h13
  3. Ajout d'une classe basique dans une application formulaire
    Par Seb33300 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/04/2007, 12h34
  4. Réponses: 3
    Dernier message: 26/08/2006, 14h03
  5. Attribuer une classe à un élément lors d'un clic
    Par Perceval dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 18/10/2005, 17h19

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