{"id":4394,"date":"2018-02-16T08:55:48","date_gmt":"2018-02-16T07:55:48","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=4394"},"modified":"2024-08-21T15:10:39","modified_gmt":"2024-08-21T13:10:39","slug":"css-smooth-scrolling-behavior","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/css-css3\/css-smooth-scrolling-behavior","title":{"rendered":"Le saviez-vous \u2013 CSS Smooth-scrolling avec scroll-behavior"},"content":{"rendered":"\n<p>R\u00e9cemment dans un petit projet assez proche du prototype, j&rsquo;ai eu \u00e0 proposer quelques petites choses comme un <a href=\"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/creer-menu-sticky-avec-javascript-css\">menu <em>sticky<\/em><\/a>, un <em>scroll-spy,<\/em> mix\u00e9 avec du <em>smooth-scroll<\/em>. Plein d&rsquo;effets qui demandent quand m\u00eame quelques lignes de JS. Et bien pas cette fois.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">La norme<\/h2>\n\n\n\n<p>Le CSS WG a introduit <a href=\"https:\/\/drafts.csswg.org\/cssom-view\/#smooth-scrolling\">scroll-behavior<\/a> dans ses brouillons pour permettre de g\u00e9rer le comportement du d\u00e9filement des zones concern\u00e9es. Cette propri\u00e9t\u00e9 nouvelle vient avec tr\u00e8s peu de valeurs puisqu&rsquo;elle propose <code>auto<\/code> ou <code>smooth<\/code>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The scroll-behavior property specifies the scrolling behavior for a scrolling box, when scrolling happens due to navigation or CSSOM scrolling APIs. Any other scrolls, e.g. those that are performed by the user, are not affected by this property. When this property is specified on the root element, it applies to the viewport instead.<\/p>\n<\/blockquote>\n\n\n\n<p>Pour faire simple, cette propri\u00e9t\u00e9 s&rsquo;applique \u00e0 toutes les actions qui permettent la navigation au sein d&rsquo;une bo\u00eete avec d\u00e9filement. Sauf si l&rsquo;utilisateur <em>scroll<\/em> lui-m\u00eame dans la page manuellement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le bout de code magique en CSS<\/h2>\n\n\n\n<p>Venons-en \u00e0 l&rsquo;essentiel.<br>Pour mon petit projet, je n&rsquo;avais pas besoin de me soucier du support, qui est plut\u00f4t bon sur Chrome et Firefox d\u00e9j\u00e0 en fait, du coup mon code CSS pour int\u00e9grer du <em>smooth-scroll<\/em> dans ma page au lieu d&rsquo;avoir des ancres qui me font sauter d&rsquo;un point \u00e0 un autre c&rsquo;\u00e9tait globalement \u00e7a :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-css code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-css code-embed-code\">html,<br\/>body {<br\/>    scroll-behavior: smooth;<br\/>}<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p>Et voil\u00e0\u00e0\u00e0\u00e0 ! R\u00e9solu !<\/p>\n\n\n\n<p>Pour rappel \u00e0 une \u00e9poque lointaine, je publiais l&rsquo;article <a href=\"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/jquery-effet-smooth-scroll-defilement-fluide\">Smooth-Scroll en jQuery<\/a>.<br>Je vous laisse comparer \ud83d\ude42<\/p>\n\n\n\n<p>Pour ceux qui veulent une d\u00e9mo avec le code \u00e9ditable, voici un petit CodePen.<\/p>\n\n\n<p class='codepen'  data-height='465' data-theme-id='0' data-slug-hash='zRPqRB' data-default-tab='result' data-animations='run' data-editable='' data-embed-version='2'>\n<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\">Support<\/h2>\n\n\n\n<p>Je vous laisse \u00e9galement avec le support de cette <em>feature<\/em> CSS qui est plut\u00f4t bonne d\u00e9j\u00e0 pour de l&rsquo;am\u00e9lioration progressive.<\/p>\n\n\n<div class=\"ciu_embed\" data-feature=\"css-scroll-behavior\" data-periods=\"future_1,current,past_1,past_2\"><a href=\"http:\/\/caniuse.com\/#feat=css-scroll-behavior\">Can I Use css-scroll-behavior?<\/a><\/div>\n\t\t<script src=\"\/\/cdn.jsdelivr.net\/caniuse-embed\/1.0.1\/caniuse-embed.min.js\"><\/script>\n","protected":false},"excerpt":{"rendered":"<p>R\u00e9cemment dans un petit projet assez proche du prototype, j&rsquo;ai eu \u00e0 proposer quelques petites choses comme un menu sticky, un scroll-spy, mix\u00e9 avec du smooth-scroll. Plein d&rsquo;effets qui demandent quand m\u00eame quelques lignes de JS. Et bien pas cette fois.<\/p>\n","protected":false},"author":4,"featured_media":6479,"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":[17],"tags":[142,375,789,376],"coauthors":[597],"class_list":["post-4394","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-css3","tag-css","tag-fluide","tag-le-saviez-vous","tag-smoothscroll"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/4394","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=4394"}],"version-history":[{"count":3,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/4394\/revisions"}],"predecessor-version":[{"id":8648,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/4394\/revisions\/8648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/6479"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=4394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=4394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=4394"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=4394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}