Je cherche un moyen d'inclure un effet de diapositive lorsque vous cliquez sur un lien vers une ancre locale en haut ou en bas de la page.
J'aimerais quelque chose où vous avez un lien comme ceci:
<a href="#nameofdivetc">link text, img etc.</a>
peut-être avec une classe ajoutée pour que vous sachiez que vous voulez que ce lien soit un lien coulissant:
<a href="#nameofdivetc" class="sliding-link">link text, img etc.</a>
Ensuite, si ce lien est cliqué, la page glisse vers le haut ou vers le bas jusqu'à l'endroit souhaité (peut être un div, un titre, un haut de page, etc.).
C'est ce que j'avais précédemment:
$(document).ready(function(){
$(".scroll").click(function(event){
//prevent the default action for the click event
event.preventDefault();
//get the full url - like mysitecom/index.htm#home
var full_url = this.href;
//split the url by # and get the anchor target name - home in mysitecom/index.htm#home
var parts = full_url.split("#");
var trgt = parts[1];
//get the top offset of the target anchor
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top;
//goto that anchor by setting the body scroll top to anchor top
$('html, body').animate({scrollTop:target_top}, 1500, 'easeInSine');
});
});
jquery
jquery-plugins
anchor
slide
ade123
la source
la source
$("a[href^=#]").click(function(e) { e.preventDefault(); var dest = $(this).attr('href'); console.log(dest); $('html,body').animate({ scrollTop: $(dest).offset().top }, 'slow'); });
history.pushState(null, null, dest);
car vous empêchez le changement de hachage de l'emplacement par défautEn supposant que votre attribut href est lié à un div avec l' ID de balise du même nom (comme d'habitude), vous pouvez utiliser ce code:
HTML
JAVASCRIPT - (Jquery)
la source
name
. Lorsque vous utilisez<a name="something"></a>
, vous pouvez également le référencer de l'extérieur, mais votre solution ne le fournit pas.Cela m'a rendu la vie tellement plus facile. Vous mettez essentiellement votre balise d'identification d'éléments et ses défilements jusqu'à elle sans beaucoup de code
http://balupton.github.io/jquery-scrollto/
En Javascript
Dans votre html
Me voici tout le long de la page
la source
la source
+
des chaînes ou vars les concatène, comme:"#some_anchor"
. Vraiment, le deuxième concatanchor_id + ""
n'est pas nécessaire, je crois.Vous devez également considérer que la cible a un remplissage et donc utiliser à la
position
place deoffset
. Vous pouvez également tenir compte d'une barre de navigation potentielle que vous ne souhaitez pas chevaucher la cible.la source
history.pushState({}, "", this.href);
pour garder l'url à jourMon approche avec jQuery pour simplement faire glisser tous les liens d'ancrage intégrés au lieu de sauter instantanément
C'est vraiment similaire à la réponse de Santi Nunez mais c'est plus fiable .
Soutien
la source
Je suis resté avec mon code d'origine et j'ai également inclus un lien `` retour en haut '' en fondu en utilisant ce code et un peu d'ici aussi:
http://webdesignerwall.com/tutorials/animated-scroll-to-top
Fonctionne bien :)
la source
Vous pouvez ajouter la valeur offsetTop et scrollTop au cas où vous n'animeriez pas la page entière, mais plutôt un contenu imbriqué.
par exemple :
la source
Défilement lent SS
Cette solution ne nécessite pas de balises d'ancrage mais vous devez bien sûr faire correspondre le bouton de menu (attribut arbitraire, «ss» dans l'exemple) avec l'id de l'élément de destination dans votre html.
ss="about"
vous emmène àid="about"
Violon
https://jsfiddle.net/Hastig/stcstmph/4/
la source
Voici la solution qui a fonctionné pour moi. Il s'agit d'une fonction générique qui fonctionne pour toutes les
a
balises faisant référence à un noma
Remarque 1: assurez-vous que vous utilisez des guillemets doubles
"
dans votre html. Si vous utilisez des guillemets simples, remplacez la partie ci-dessus du code parvar target = $("a[name='" + name.substring(1) + "']");
Remarque 2: dans certains cas, en particulier lorsque vous utilisez la barre collante du bootstrap, le nommé
a
se cachera sous la barre de navigation. Dans ces cas (ou dans tout cas similaire), vous pouvez réduire le nombre de pixels de votre parchemin pour obtenir l'emplacement optimal. Par exemple: vous$('html,body').animate({ scrollTop: $(target).offset().top - 15 }, 'slow');
amènera autarget
avec 15 pixels à gauche en haut.la source
Je suis tombé sur cet exemple sur https://css-tricks.com/snippets/jquery/smooth-scrolling/ expliquant chaque ligne de code. J'ai trouvé que c'était la meilleure option.
https://css-tricks.com/snippets/jquery/smooth-scrolling/
Vous pouvez devenir natif:
ou avec jquery:
la source
La méthode la plus simple est: -
Dans la fonction de clic (Jquery): -
HTML
la source
Testez-le ici:
http://jsbin.com/ucati4
la source
solution suivante a fonctionné pour moi:
la source