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 :

Stopper le scroll sur une ancre avec javascript


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut Stopper le scroll sur une ancre avec javascript
    Bonjour,

    tout est dans le titre ; comment stopper le scroll qui se produit lorsque l'on clique sur une ancre ?

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Comment ça le scroll ? Tu n'es pas directement ramené à la cible de ton lien ancre ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    si je vais directement à la cible de mon ancre, mais pour y aller le navigateur scroll ; pour un menu qui renvoie vers des ancres, ce n'est pas très pratique, car on est toujours obligé de remonter la fenêtre pour ré-accéder au menu

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Du coup je comprends pas tout... Si tu cliques sur un élément de ton menu, tu veux qu'il se passe quoi s'il ne vas pas vers l'élément qui est ancré ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    le menu avec l'ancre et l'article vers lequel l'ancre pointe sont visibles dans le viewport sans que l'on soit obligé de scroller ; le menu est au-dessus de l'article.
    Le comportement naturel d'une ancre fait qu'il y a un scroll jusqu'à l'article, et du coup ça dissimule le menu au dessus

  6. #6
    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,
    ... et du coup ça dissimule le menu au dessus
    tu as visiblement plutôt un problème de conception de ta page.

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Non pas de problème de conception, vu que le contenu de ma page est plus grand que la hauteur de mon écran, ça scroll ; je veux juste savoir s'il est possible d’empêcher ce comportement de scrolling en JS ? Certains sites avec des navigations en slide utilise des ancres et des target mais chez eux ça ne scroll pas ...

  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
    Certains sites avec des navigations en slide utilise des ancres et des target mais chez eux ça ne scroll pas ...
    on veut des noms , cela aidera surement à comprendre ce que tu veux faire.

    Je tente une hypothèse :
    Il me semble que tu cherches à faire apparaître une partie du document directement dans la fenêtre d'affichage.
    Cela se gère au chargement en plaçant les éléments en position:absolute et en jouant sur leur position.

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Arf pas de site exemple sous la main, par contre j'ai fait des schémas si ça peut aider :

    Nom : situation1.JPG
Affichages : 1659
Taille : 27,2 KoNom : situation2.JPG
Affichages : 1670
Taille : 18,5 Ko

    Donc en rouge la vue viewport qui contient aisément, l'article du lien 1 et celui du lien 2 et les menus contenant les liens ; par contre en cliquant sur lien 1, la vue viewport se positionne sur l'article 1 et du coup pour ré avoir accès au menu, on doit scroller.
    C'est le comportement naturel des ancres mais quand les articles et leurs liens sont visibles en même temps, c'est dommage de devoir faire ce scroll à chaque fois, est ce que c'est un peu plus clair ?

    Et sur mon site (encore en local) tous les articles sont en absolus, mais certains sont plus longs que d'autres et dépassent la taille de mon viewport, donc en cliquant sur un lien il n'y a qu'un article à chaque fois qui apparait, mais ça scroll à chaque fois ...

  10. #10
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Donc en fait, une bonne solution ce serait de fixer ton menu (qu'il soit toujours visible) c'est ça ?

  11. #11
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    oui voilà mais pas de position: fixed si c'est à ça que tu penses lol, car ça fait moche

  12. #12
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Ben c'est pourtant ce qu'il faut faire, mettre un fixed et mettre du css pour rendre ton menu sympa et qu'il s'intègre bien dans la page.

    Sinon... je vois pas.

  13. #13
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    comme dit plus haut c'est un pb de conception de la page

    soit un page avec un menu et en dessous un div content
    et x div articles tous hidden positionnés tous au même endroit que le div content (sous le menu)

    lorsque l'utilisateur clique sur un lien du menu le div article courant est caché display:hidden et le div article cile est rendu visible display:block
    comme tous les div on la même position il s'affiche sous le menu sans scroll


    A+

  14. #14
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    oui c'est ce que j'ai fait, j'ai un div conteneur de tous mes articles sous mon menu. Tous mes articles sont en absolus et en hidden ; avec un target j'attribue aux articles la propriété visibility: visible mais les liens restent des ancres et pour le coup j'ai toujours l'effet de scroll ... Y a pas moyen en javascript de contourner cet effet de scroll ?

  15. #15
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Ok j'ai pigé
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#monAncre" onclick="showArticle(this); return false;">link</a>
    du coup le onclick ne fait que l'appel de la fonction et l'active pas le lien d'où pas de scroll

    A+JYT

  16. #16
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Si ta fonction "showArticle()" retourne false, ça marche aussi.

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut


    Ce n'est pas la même chose.
    Un attribut d'événement HTML, par exemple
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="fn2()">Cliquer</a>
    sera interprété par JavaScript comme (si a correspond à la balise <a>) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a.onclick = function fn1(){
        fn2();
    };
    ainsi, si fn2 renvoie false (ou tout autre résultat), c'est à fn1 que ce résultat est renvoyé, mais fn1 ne renvoie rien et le comportement par défaut (aller à l'élément ou la page ciblé) n'est pas inhibé, donc le lien est suivi.
    Alors que
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="return fn2()">Cliquer</a>
    correspondra à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a.onclick = function fn1(){
        return fn2();
    };
    là, si fn2 renvoie false, alors l'événement et le comportement par défaut seront bien inhibés, tout comme dans le cas suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="fn2(); return false">Cliquer</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a.onclick = function fn1(){
        fn2();
        return false;
    };
    Pour aller plus loin, en réalité, la traduction JavaScript d'un attribut d'événement serait plutôt, si l'on reprend le premier code HTML
    qui lui peut se traduire ensuite en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.onclick = eval("fn2()");
    ce qui explique pourquoi les attributs d'événements sont loin d'être recommandés.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  18. #18
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Si ta fonction "showArticle()" retourne false, ça marche aussi.
    dans ce cas il faut écrire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#monAncre" onclick="return showArticle(this);">link</a>

    mais je suis d'accord avec bovino mieux
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#monAncre" id"monId">link</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    document.getElementById('monId').onclick = function () {
      //code qui affiche le div
      ...
      return false;
    }
    ou utiliser les méthodes addEventListener attachEvent (qui malheureusement ne sont pas cross browser)

    A+JYT

  19. #19
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Bonjour messieurs,

    merci déjà de vos interventions sur ma problématique, j'ai donc essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById('lien_cliqué').addEventListener("click",function(){
    document.getElementById('article_du_lien_cliqué').className = "visibilite"; return false;});
    et ma classe visibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #conteneur .visibilite
    {
    z-index: 1;
    visibility: visible;
    }
    mais cela ne fonctionne pas

    y a-t-il qqch que je fais mal ?

  20. #20
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Avec onclick, il y a le return false pour bloquer l'action par défaut de l'évènement ; mais comment faire de même avec un addEventListener ou un attachEvent ?

Discussions similaires

  1. Zoom et Scroll sur une PictureBox avec BackgroundImage
    Par Khoral dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/10/2009, 15h18
  2. navigation dans une jsp avec javascript
    Par petitelulu dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/11/2004, 18h55
  3. Problème sur une cmd avec AWK
    Par OrangeBud dans le forum Linux
    Réponses: 3
    Dernier message: 02/06/2004, 10h51
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Réponses: 4
    Dernier message: 27/04/2004, 14h45

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