{"id":470,"date":"2010-08-31T23:35:22","date_gmt":"2010-08-31T21:35:22","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=470"},"modified":"2015-01-18T17:33:20","modified_gmt":"2015-01-18T16:33:20","slug":"realiser-un-lien-top-qui-apparait-au-scroll-de-la-page-avec-jquery","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/realiser-un-lien-top-qui-apparait-au-scroll-de-la-page-avec-jquery","title":{"rendered":"R\u00e9aliser un lien \u00ab\u00a0top\u00a0\u00bb qui appara\u00eet au scroll de la page avec jQuery"},"content":{"rendered":"<p>C&rsquo;est d\u00e9cid\u00e9, je vous proposerai de temps \u00e0 autres quelques tutoriels relativement simples lorsque mes disponibilit\u00e9s me le permettront (ou plus simplement pour faire une petite pause dans mon travail).<br \/>\nAujourd&rsquo;hui nous allons voir comment r\u00e9aliser assez simplement<!--more--> un lien \u00ab\u00a0Retour en haut de page\u00a0\u00bb qui apparait et disparait en fonction de la position du document dans la fen\u00eatre.<br \/>\nNous allons, bien entendu, utiliser la biblioth\u00e8que jQuery dans cette r\u00e9alisation.<\/p>\n<h2>Avant-propos<\/h2>\n<p>L&rsquo;utilisation de la <a href=\"http:\/\/jquery.com\/\" hreflang=\"en\" title=\"D\u00e9couvrez et t\u00e9l\u00e9chargez la biblioth\u00e8que jQuery (nouvelle fen\u00eatre)\" target=\"_blank\">biblioth\u00e8que jQuery<\/a> implique pour le visiteur un t\u00e9l\u00e9chargement de celle-ci, qui, non-zipp\u00e9e peut-\u00eatre assez lourde si vous ne l&rsquo;utilisez que pour ajouter un petit lien \u00ab\u00a0top\u00a0\u00bb. Il vous faudra peser le pour et le contre. Si vous utiliser WordPress, il est g\u00e9n\u00e9ralement automatiquement int\u00e9gr\u00e9 \u00e0 la plupart des templates, autant en profiter !<\/p>\n<h2>L&rsquo;id\u00e9e<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2010\/08\/top-link.png\" alt=\"\" title=\"Top Link\" width=\"140\" height=\"138\" class=\"alignright size-full wp-image-514\" \/>Ce que nous souhaitons c&rsquo;est faire appara\u00eetre un lien qui m\u00e8ne en haut de page. Comme ce lien va appara\u00eetre et dispara\u00eetre gr\u00e2ce \u00e0 un script JavaScript, le mieux reste de construire compl\u00e8tement cet \u00e9l\u00e9ment gr\u00e2ce \u00e0 JavaScript.<br \/>\nPourquoi ?<br \/>\nSi jamais le visiteur navigue sans JS activ\u00e9, celui-ci ne sera pas g\u00ean\u00e9 par un lien tout le temps pr\u00e9sent.<br \/>\nUne autre solution consiste \u00e0 le placer quelque part dans le code HTML, et \u00e0 le r\u00e9cup\u00e9rer et le positionner gr\u00e2ce \u00e0 JS, mais ce n&rsquo;est pas la solution que je vous pr\u00e9senterai aujourd&rsquo;hui.<\/p>\n<h2>Le code par \u00e9tapes<\/h2>\n<p>Petit rappel : nous utilisons jQuery.<\/p>\n<ol>\n<li>Premi\u00e8re \u00e9tape donc, pour ceux qui n&rsquo;auraient pas d\u00e9j\u00e0 charg\u00e9 la biblioth\u00e8que, ajouter le script sur notre page. Pour sa position c&rsquo;est au choix du d\u00e9veloppeur. Personnellement quand je le peux, je place les scripts juste avant <code>&lt;\/body&gt;<\/code> :\n<pre class=\"code\"><code class=\"html\">&lt;script src=\"http:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.4.2\/jquery.min.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Ici je charge jQuery depuis l&rsquo;API Google, mais vous pouvez tout autant le charger depuis un dossier \u00e0 vous.<\/li>\n<li>Il nous faut maintenant \u00e9crire notre code JavaScript, pour ce tutoriel je choisis de le mettre directement entre balises <code>script<\/code> \u00e0 la suite de l&rsquo;appel de la biblioth\u00e8que jQuery.<br \/>\nVous pouvez tr\u00e8s bien le placer dans un fichier .js externe et l&rsquo;appeler de la m\u00eame mani\u00e8re que la biblioth\u00e8que (cf. \u00e9tape 1).<\/p>\n<pre class=\"code\"><code class=\"html\">&lt;script type=\"text\/javascript\"&gt;\r\n   $(document).ready(function(){\r\n   \/\/*\r\n      Le code javascript sera mis ici\r\n   *\/\/\r\n   });\r\n&lt;\/script&gt;');<\/code><\/pre>\n<p>Cette premi\u00e8re partie de code JavaScript signifie que nous allons ex\u00e9cuter les prochains scripts lorsque le <code>document<\/code> sera pr\u00eat.<\/li>\n<li>Nous devons maintenant construire notre lien qui aura une forme tout \u00e0 fait classique, mais qui sera ajout\u00e9 gr\u00e2ce jQuery.<br \/>\nA la place de mon commentaire pr\u00e9c\u00e9dent, nous allons progressivement \u00e9crire notre code&nbsp;:<\/p>\n<pre class=\"code\"><code class=\"javascript\">$('body').append('&lt;a href=\"#top\" class=\"top_link\" title=\"Revenir en haut de page\"&gt;Haut&lt;\/a&gt;');<\/code><\/pre>\n<p>La fonction <a href=\"http:\/\/api.jquery.com\/append\/\" target=\"_blank\" title=\"Conna\u00eetre davantage la fonction append() en jQuery (nouvelle fen\u00eatre)\" hreflang=\"en\"><code>append();<\/code><\/a> permet d&rsquo;ajouter un contenu dans l&rsquo;\u00e9l\u00e9ment cibl\u00e9 \u00e0 la suite de tout ce qu&rsquo;il contient. Cet \u00e9l\u00e9ment ici est <code>body<\/code>. Il suffit ensuite d&rsquo;\u00e9crire ce que l&rsquo;on souhaite ajouter entre guillemets.<\/li>\n<li>Continuons en ajoutant \u00e0 la suite les styles de notre lien. Ces styles peuvent \u00e9craser des styles existants de votre feuille de styles.\n<pre class=\"code\"><code class=\"javascript\">$('.top_link').css({\r\n\t'position'\t\t\t\t:\t'fixed',\r\n\t'right'\t\t\t\t\t:\t'20px',\r\n\t'bottom'\t\t\t\t:\t'50px',\r\n\t'display'\t\t\t\t:\t'none',\r\n\t'padding'\t\t\t\t:\t'20px',\r\n\t'background'\t\t\t:\t'#fff',\r\n\t'-moz-border-radius'\t:\t'40px',\r\n\t'-webkit-border-radius'\t:\t'40px',\r\n\t'border-radius'\t\t\t:\t'40px',\r\n\t'opacity'\t\t\t\t:\t'0.9',\r\n\t'z-index'\t\t\t\t:\t'2000'\r\n});\r\n<\/code><\/pre>\n<p>Comme pr\u00e9c\u00e9demment, nous utilisons une fonction, ici <a href=\"http:\/\/api.jquery.com\/css\/\" target=\"_blank\" title=\"Conna\u00eetre davantage la fonction css() en jQuery (nouvelle fen\u00eatre)\" hreflang=\"en\"><code>css()<\/code><\/a>, qui permet d&rsquo;attribuer des styles \u00e0 l&rsquo;\u00e9l\u00e9ment cibl\u00e9. La cible \u00e9tant le lien cibl\u00e9 par sa classe : <code>.top_link<\/code><\/li>\n<li>Nous allons maintenant passer aux choses s\u00e9rieuses (mais pas trop quand m\u00eame) : la fonction qui v\u00e9rifie la position de la fen\u00eatre.<br \/>\nCe que nous souhaitons, c&rsquo;est v\u00e9rifier cette position d\u00e8s que l&rsquo;utilisateur <em lang=\"en\">scroll<\/em> dans la page, en descente ou en mont\u00e9e.<br \/>\nD\u00e8s que celui-ci arrive \u00e0 un certain niveau cl\u00e9 dans la page (niveau d\u00e9fini en pixels du haut de la page), nous faisons apparaitre ou disparaitre le lien.<br \/>\nVoici le code complet, je vous l&rsquo;explique ensuite :<\/p>\n<pre class=\"code\"><code class=\"javascript\">$(window).scroll(function(){\r\n\tposScroll = $(document).scrollTop();\r\n\tif(posScroll >=550) \r\n\t\t$('.top_link').fadeIn(600);\r\n\telse\r\n\t\t$('.top_link').fadeOut(600);\r\n});<\/code><\/pre>\n<p>Plut\u00f4t court n&rsquo;est-ce pas ?<\/p>\n<ul>\n<li>Prenons le plus simple en premier : <a href=\"http:\/\/api.jquery.com\/fadein\/\" target=\"_blank\" title=\"Conna\u00eetre davantage la fonction fadeIn() en jQuery (nouvelle fen\u00eatre)\" hreflang=\"en\"><code>fadeIn()<\/code><\/a> et <a href=\"http:\/\/api.jquery.com\/fadeout\/\" target=\"_blank\" title=\"Conna\u00eetre davantage la fonction fadeOut() en jQuery (nouvelle fen\u00eatre)\" hreflang=\"en\"><code>fadeOut()<\/code><\/a>.<br \/>\nIl s&rsquo;agit de deux fonctions d&rsquo;animation qui font dispara\u00eetre un \u00e9l\u00e9ment (point de d\u00e9part <code>display: block;<\/code> et de certaine opacit\u00e9 \u00e0 un <code>display: none;<\/code> et d&rsquo;opacit\u00e9 0), ou apparaitre un \u00e9l\u00e9ment en fondu (avec les effets inverses cette fois).<br \/>\nLe chiffre renseign\u00e9 entre parenth\u00e8ses correspond \u00e0 la vitesse (en millisecondes) de l&rsquo;animation.<\/li>\n<li>Reprenons ensuite \u00e0 la premi\u00e8re ligne de ce tron\u00e7on de code :<br \/>\nEn ciblant <code>window<\/code> (la fen\u00eatre compl\u00e8te donc), nous faisons un contr\u00f4le sur <a href=\"http:\/\/api.jquery.com\/scroll\/\" target=\"_blank\" title=\"Conna\u00eetre davantage la fonction scroll() en jQuery (nouvelle fen\u00eatre)\" hreflang=\"en\"><code>scroll()<\/code><\/a>. D\u00e8s que le visiteur <em lang=\"en\">scroll<\/em> dans la page, on ex\u00e9cute la <code>function<\/code><\/li>\n<li>Cette fonction va simplement contr\u00f4ler la position de la fen\u00eatre par rapport au haut de l&rsquo;\u00e9l\u00e9ment cibl\u00e9. Pour effectuer ce contr\u00f4le nous utilisons la fonction (oui encore une) <a href=\"http:\/\/api.jquery.com\/scrolltop\/\" target=\"_blank\" title=\"Conna\u00eetre davantage la fonction scrollTop() en jQuery (nouvelle fen\u00eatre)\" hreflang=\"en\"><code>scrollTop()<\/code><\/a>, qui sans param\u00e8tre renseign\u00e9 renvoie la valeur en pixels (mais sans l&rsquo;unit\u00e9) de cette position. L&rsquo;\u00e9l\u00e9ment dont on v\u00e9rifie la position dans <code>window<\/code> est <code>document<\/code>. Nous enregistrons cette valeur dans la variable <code>posScroll<\/code><\/li>\n<li>Enfin nous effectuons un contr\u00f4le conditionnel : \u00ab\u00a0Si <code>posScroll<\/code> est sup\u00e9rieur ou \u00e9gal \u00e0 550px alors nous faisons apparaitre le lien, sinon nous le faisons disparaitre\u00a0\u00bb.\n<p>Et c&rsquo;est tout !<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>En esp\u00e9rant que ce tutoriel vous aura \u00e9t\u00e9 utile et abordable.<br \/>\nJe vous invite \u00e0 laisser un commentaire si vous avez des id\u00e9es d&rsquo;am\u00e9lioration, des corrections \u00e0 apporter sur ce tutoriel ou des probl\u00e8mes dans son suivi.<\/p>\n<p>A la prochaine, enjoy !<\/p>\n<p><em class=\"sources\">Liens utiles :<br \/>\n&#8211; <a href=\"http:\/\/jquery.com\/\" hreflang=\"en\" title=\"D\u00e9couvrez et t\u00e9l\u00e9chargez la biblioth\u00e8que jQuery (nouvelle fen\u00eatre)\" target=\"_blank\">Biblioth\u00e8que jQuery<\/a><br \/>\n&#8211; <a href=\"http:\/\/docs.jquery.com\/Main_Page\" hreflang=\"en\" title=\"D\u00e9couvrez la documentation jQuery (nouvelle fen\u00eatre)\" target=\"_blank\">Documentation jQuery<\/a><br \/>\n<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&rsquo;est d\u00e9cid\u00e9, je vous proposerai de temps \u00e0 autres quelques tutoriels relativement simples lorsque mes disponibilit\u00e9s me le permettront (ou plus simplement pour faire une petite pause dans mon travail). Aujourd&rsquo;hui nous allons voir comment r\u00e9aliser assez simplement<\/p>\n","protected":false},"author":4,"featured_media":490,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[610,9],"tags":[125,52,163,168,167,165,166,164],"coauthors":[597],"class_list":["post-470","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","category-tutoriels","tag-javascript","tag-jquery","tag-lien","tag-page","tag-retour","tag-scroll","tag-scrolltop","tag-top"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=470"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/470\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/490"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=470"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}