11522 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je rencontre un problème avec des ancres, je suis entrain de faire une onepage avec un menu dont les liens vont vers un id, sauf qu'il s’arrête après l'article et non vers l'id de ma div au titre de l'article.

Voici comment écrit mon code
Menu
<nav id="menu">
			<ul>
            	<li><a href="#haut">Article</a></li>
            </ul>        
        </nav>


Ancre de l'article
<div id="haut" class="separator"></div>
    <article>
        	<h1>Mon titre</h1>
        	<p>Mon article</p>
      </article>


Je ne comprends pas pourquoi il dépasse mon article.

Merci par avance de votre aide.
Modifié par byters (27 Nov 2015 - 19:01)
Bonsoir,

Il n'y a pas un problème de positionnement du .separator par hazard ? Cela expliquerait le dépassement de l'article ciblé.

Mais de toute façon, perso, j'aurais mis l'ID sur l'article, directement :
<div class="separator"></div>
    <article id="haut">
        	<h1>Mon titre</h1>
        	<p>Mon article</p>
      </article>

Modifié par Olivier C (28 Nov 2015 - 15:59)
Bonjour Olivier C,

Merci pour ta réponse c'est l'une des choses que je n'avais pas faite. Mais voilà ça ne fonctionne pas mieux.
Ha ! C'est idiot et je ne l'avais pas vu : il manquait un dièse ! (EDIT : non en fait)
Modifié par Olivier C (28 Nov 2015 - 15:59)
Il me semble qu'il n'en faut pas un # dans l'id, mais uniquement dans le lien. Mais dans le doute j'ai testé ca ne fonctionne pas du tout
Si si il en faut un (EDIT : non effectivement, à force d'utiliser la syntaxe Jade je me mélange les pinceaux...) .Essayez cette page de mon cru par exemple, en cliquant sur des menus du sommaire : StyleGuide

Mettez une page en ligne pour tester, sur CodePen par exemple. On verra mieux...
Modifié par Olivier C (28 Nov 2015 - 15:58)
Bonjour tatianapetit,

Je l'ai mis en ligne pour que vous puissiez voir ce qui ce passe. Car j'ai fait un test d'une simple page avec des liens dessus et des paragraphes Ipsum et ça fonctionne je dois avoir autre chose qui perturbe mes ancres.

Voici l'adresse http://forezgaz.fr/

Merci.
byters a écrit :
Il me semble qu'il n'en faut pas un # dans l'id, mais uniquement dans le lien. Mais dans le doute j'ai testé ca ne fonctionne pas du tout

Exact, j'avais oublié que l'on pouvait s'en passer sur la cible.

Reste donc la piste d'un mauvais positionnement de la cible... Et du coup le problème vient effectivement de là : la cible remonte en haut de la page, comme prévue... mais elle se trouve masqué par le sticky menu, qui de par nature est positionné en fixed.

Il faut donc que l'élément cible arrive sous le menu, en compensant la hauteur de ce menu avec une bidouille du genre :
{
    margin-top: -92px; // environ la hauteur du menu en fixed
    padding-top: 92px; // pour compenser visuellement la règle précédente
}

Chez moi c'est ok.

PS : attention aux h1, il ne devrait y en avoir qu'un seul par page en pratique, même si en théorie il est possible d'en mettre plusieurs en html5 (un par section/article), tout cela pour une question de référencement de la page.
Modifié par Olivier C (29 Nov 2015 - 07:28)
Très bien, j'ai ouvert mon fichier CSS mais c'est un peu du chinois pour moi...
Sauriez vous m'aiguillez?
Savez vous à quoi je dois me référer?

Merci !
kinetos a écrit :
Très bien, j'ai ouvert mon fichier CSS mais c'est un peu du chinois pour moi...
Sauriez vous m'aiguillez?
Savez vous à quoi je dois me référer?

Merci !


Bonjour Kinetos,

Je pense que tu devrais ouvrir ton propre post car celui-ci est marqué résolu et je suis pas sur que quelqu'un vienne te relire.

Explique ton problème mets le lien de ton site ou mets ton code car comme on ne sais pas de quoi tu parle mise à par que c'est de ton fichier CSS. Smiley cligne
Bonjour Byters,
Pour ton ancre, comment as-tu fait cette effet de "glissement" vers l'info?
j'ai fait la même chose que toi mais quand je clique, ça amène d'un coup, je voudrais que ça glisse vers le id correspondant comme sur ton site: http://forezgaz.fr/

exemple:
cette lien:
<ul id="menu_horizontal" style= "list-style-type:none">
<li><a href="#slide3">PRESENTATION</a></li>
</ul>

mène vers cette id:
<div id="slide3">
</div>

et c'est tout ce qui me permet de faire l'ancre, est-ce qu'il faut ajouter un truc?
est-ce qu'il faut que j'ajoute plus d'informations? Mon site n'est pas en ligne encore malheureusement

upload/60811-CODE.jpg

Merci d'avance
Bonjour,

Tu dois créer un fichier js et le lier à ta page index.
Insert ce qui suit dedans :

$(document).ready(function(){

   $('#nav li a').click(function(){
        $('#nav li a').removeClass('active');
        $(this).addClass('active');
         var id = $(this).attr('href');
       
        scrollTo(id);
        return false;
   });
});


Attention #nav correspond à mon id de mon ul. A toi de le changer par ton id="menu_horizontal"

J'espère que ça va t'aider. Smiley biggrin