je veux mettre en surbrillance le point de menu si la div est défilé // ou cliqué.
http://jsfiddle.net/WeboGraph/vu6hN/2/ (c'est un exemple de ce que je veux)
mon code: (JS)
$(document).ready(function(){
$('nav a').on('click', function(event) {
$(this).parent().find('a').removeClass('active_underlined');
$(this).addClass('active_underlined');
});
$(window).on('scroll', function() {
$('.target').each(function() {
if($(window).scrollTop() >= $(this).position().top) {
var id = $(this).attr('id');
$('nav a').removeClass('active_underlined');
$('nav a[href=#'+ id +']').addClass('active_underlined');
}
});
});
});
mon (nav html)
<nav>
<div id="cssmenu">
<ul id="horizontalmenu" class="underlinemenu">
<li><a data-scroll href="#fdesigns" class="active_underlined">FDesigns</a> </li>
<li><a data-scroll href="#skills">skills</a> </li>
<li><a data-scroll href="#workflow">WORKFLOW</a> </li>
<li><a data-scroll href="#portfolio">Portfolio</a> </li>
<li><a data-scroll href="#about">About</a> </li>
<li><a data-scroll href="#kontakt">Kontakt</a> </li>
</ul>
</div>
</nav>
mon (css)
.active_underlined a {
color: #fff;
border-bottom: 2px solid #ebebeb;
}
a.active_underlined {
color: #fff;
border-bottom: 2px solid #ebebeb;
}
voici un lien vers le projet: http://www.f-designs.de/test_onesite
Utilisez $(this).offset().top
au lieu de $(this).position().top
En tant que .position()
, obtenez les coordonnées actuelles du premier élément de l'ensemble des éléments correspondants, par rapport au parent décalé, alors que .offset()
récupère les coordonnées actuelles du premier élément de l'ensemble des éléments correspondants, relatives au document.
Dans votre site Web, tous les éléments DIV dont la classe est à l'intérieur de .target
sont à l'intérieur; par conséquent, tous les éléments de la classe .target
renvoient la valeur .position().top
égale à 0.
Diminuez la valeur de décalage afin que l'élément class
change lorsque l'élément atteint le menu en créant la condition if
comme ceci:
if($(window).scrollTop() >= $(this).offset().top - $("#cssmenu").height())
Trouvé ceci en 2018 et rencontré une erreur de syntaxe lors de la réplication avec une version plus récente de jquery (+1.0). Dans la dernière ligne $('nav a[href=#'+ id +']')
l'attribut n'est pas correctement échappé et doit ressembler à so $('nav a[href="#'+ id +'"]')
(note ajoutée "").
Voici où j'ai trouvé ceci https://api.jquery.com/attribute-contains-selector/