{"id":376481,"date":"2026-09-30T07:54:49","date_gmt":"2026-09-30T07:54:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sw34-easy-scroll\/"},"modified":"2026-09-30T07:54:21","modified_gmt":"2026-09-30T07:54:21","slug":"sw34-easy-scroll","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sw34-easy-scroll\/","author":23570357,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"SW34 Easy Scroll","header_author":"Studio Web 34","header_description":"Smooth scrolling done properly: the wheel, the keyboard and your anchor links. One settings screen, no tracking, no CDN.","assets_banners_color":"587e93","last_updated":"2026-09-30 07:54:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.studioweb34.com\/plugins\/sw34-easy-scroll\/","header_author_uri":"https:\/\/www.studioweb34.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"studioweb34","date":"2026-09-30 07:54:21","revision":3720593}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3720591,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3720591,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3720591,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3720591,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3720591,"resolution":"1","location":"assets","locale":"","width":3009,"height":4248},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3720591,"resolution":"2","location":"assets","locale":"","width":570,"height":406}},"screenshots":{"1":"The settings screen: master switch at the top, then animation, mouse wheel,\nkeyboard, orientation, anchor links, behaviour, integration, scope and reset.","2":"The \"Smooth scrolling\" box in the editor sidebar, to turn smooth scrolling\noff on a single page."}},"plugin_section":[],"plugin_tags":[228776,71952,1252,8500],"plugin_category":[],"plugin_contributors":[283596],"plugin_business_model":[],"class_list":["post-376481","plugin","type-plugin","status-publish","hentry","plugin_tags-lenis","plugin_tags-scroll-animation","plugin_tags-scrolling","plugin_tags-smooth-scroll","plugin_contributors-studioweb34","plugin_committers-studioweb34"],"banners":{"banner":"https:\/\/ps.w.org\/sw34-easy-scroll\/assets\/banner-772x250.png?rev=3720591","banner_2x":"https:\/\/ps.w.org\/sw34-easy-scroll\/assets\/banner-1544x500.png?rev=3720591","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sw34-easy-scroll\/assets\/icon-128x128.png?rev=3720591","icon_2x":"https:\/\/ps.w.org\/sw34-easy-scroll\/assets\/icon-256x256.png?rev=3720591","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sw34-easy-scroll\/assets\/screenshot-1.png?rev=3720591","caption":"The settings screen: master switch at the top, then animation, mouse wheel,\nkeyboard, orientation, anchor links, behaviour, integration, scope and reset."},{"src":"https:\/\/ps.w.org\/sw34-easy-scroll\/assets\/screenshot-2.png?rev=3720591","caption":"The \"Smooth scrolling\" box in the editor sidebar, to turn smooth scrolling\noff on a single page."}],"raw_content":"<!--section=description-->\n<p>Native scrolling jumps. It does the job, and it makes a carefully designed site\nfeel a little cheaper than it is.<\/p>\n\n<p>SW34 Easy Scroll replaces that jump with motion that glides \u2014 on the mouse\nwheel, on the keyboard, and on every anchor link. It runs on Lenis, a\nwell-regarded open-source scrolling library, bundled with the plugin. Everything\nlives on one settings screen, in plain language, with a real on\/off switch at\nthe top.<\/p>\n\n<h4>The keyboard is where most smooth scrolling stops<\/h4>\n\n<p>Scroll with the wheel: smooth. Press the down arrow: jump. Two contradictory\nbehaviours on the same page \u2014 visitors feel it even when they cannot name it.<\/p>\n\n<p>It is not a bug. Lenis registers no keyboard listener at all, so almost nothing\nbuilt on it handles the keyboard. SW34 Easy Scroll does. Arrow keys, Page Up and\nPage Down, Space, Home and End all glide, with a distance per arrow press you\nchoose.<\/p>\n\n<p>It also knows when to stay out of the way. Form fields, buttons, video players,\nmenus, sliders and scrollable panels keep their own key handling. Visitors who\nasked their system for reduced motion get the native keyboard back, untouched.<\/p>\n\n<h4>Anchor links that land where you meant<\/h4>\n\n<p>A one-page site lives on its anchor links, and they are exactly what tends to\nbreak: the page jumps instead of gliding, or the section you aimed at ends up\nhidden behind your sticky header.<\/p>\n\n<p>Both are handled. Set your header height once, and every <code>#section<\/code> link glides\nto the right place \u2014 whether the visitor clicks it, arrives from another page,\nor opens the address with the fragment already in it. The URL updates, the Back\nbutton works, and keyboard focus follows to the section, the way native\nnavigation does.<\/p>\n\n<p>Themes that run their own anchor scrolling \u2014 Divi among them \u2014 no longer fight\nyou for it. Tabs and accordions built on <code>#<\/code> links are recognised and left alone.<\/p>\n\n<h4>You decide where it applies<\/h4>\n\n<p>Smooth scrolling is not always welcome everywhere. Turn it off on a single page\nfrom the editor sidebar, or exclude whole sections of the site by path. Keep it\nfor visitors and native for yourself while you build. Disable it on touch\ndevices, or below a screen width you set. Hand scrolling back to any panel,\nmap or modal with a CSS selector.<\/p>\n\n<h4>In short<\/h4>\n\n<ul>\n<li>Smooth wheel, trackpad, <strong>keyboard<\/strong> and anchor links.<\/li>\n<li>Fixed-duration or continuous interpolation, ten easing curves, adjustable\nsensitivity.<\/li>\n<li>Vertical, horizontal or both \u2014 for horizontal sites driven by a vertical wheel.<\/li>\n<li>Per-page switch in the editor, exclusions by path and by CSS selector.<\/li>\n<li>Audience control: everyone, logged-out visitors only, or everyone but admins.<\/li>\n<li>Respects \"reduced motion\" by default, and follows the setting live.<\/li>\n<li>Automatically off in the admin, the Customizer and every major page builder.<\/li>\n<li>French and Spanish included; fully translatable.<\/li>\n<\/ul>\n\n<h4>What it does not do<\/h4>\n\n<p>Worth knowing before you install, so nothing surprises you:<\/p>\n\n<ul>\n<li><strong>It does not smooth touch scrolling.<\/strong> Native mobile scrolling is faster and\nbetter received. There is no setting to change that, on purpose.<\/li>\n<li><strong>It does not animate scrollable boxes inside the page.<\/strong> Lenis drives the\ndocument, not the panels it contains.<\/li>\n<li><strong>It produces no rubber-band effect<\/strong> at the top and bottom of the page. The\nbrowser cannot scroll past the document.<\/li>\n<\/ul>\n\n<h4>No weight you did not ask for<\/h4>\n\n<p>About 25 KB on your public pages, served from your own site. No CDN, no external\nrequest \u2014 not even to Studio Web 34. No cookie, no personal data, no tracking of\nany kind, no upsell banner in your admin.<\/p>\n\n<p>And the master switch is a real switch: turned off, the plugin loads no CSS and\nno JavaScript at all on the public site.<\/p>\n\n<h4>For developers<\/h4>\n\n<p>Six filters and actions (<code>sw34_easy_scroll_options<\/code>, <code>_should_run<\/code>, <code>_config<\/code>,\n    _post_types, <code>_settings_saved<\/code>, <code>_settings_reset<\/code>), a JavaScript API on\n    window.SW34EasyScroll with <code>ready<\/code> and <code>destroyed<\/code> events, and an optional\n    window.lenis global for GSAP ScrollTrigger. The <code>data-lenis-prevent<\/code>\nattributes are honoured for the keyboard as well as the wheel.<\/p>\n\n<p>Lenis is bundled minified and as readable source, released under the MIT licence.\nIf your theme already registered it, this plugin reuses that copy instead of\nloading a second one.<\/p>\n\n<h4>Internationalization<\/h4>\n\n<p>Source language is English. French (<code>fr_FR<\/code>) and Spanish (<code>es_ES<\/code>) catalogues\nare bundled \u2014 108 strings, 104 translated in each; the four left untranslated\nare the plugin name, the author name and the two URLs, which stay the same in\nevery language.<\/p>\n\n<p>Everything visible is translatable, including the strings used by the settings\nscreen's JavaScript, which are passed through <code>wp_localize_script()<\/code> rather than\nwritten into the <code>.js<\/code> file where gettext would never see them.<\/p>\n\n<h4>Credits<\/h4>\n\n<p>Smooth scrolling is powered by <a href=\"https:\/\/lenis.dev\/\">Lenis<\/a> 1.3.26 by\ndarkroom.engineering, released under the MIT licence. Source repository:\nhttps:\/\/github.com\/darkroomengineering\/lenis \u2014 the bundled files are\n    assets\/js\/lenis.min.js, its readable source <code>assets\/js\/lenis.js<\/code>, and the\nstylesheet <code>assets\/css\/lenis.css<\/code>. The licence text is in\n    assets\/js\/LICENSE-lenis.txt.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sw34-easy-scroll<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open the <strong>Smooth Scroll<\/strong> menu in the admin sidebar.<\/li>\n<\/ol>\n\n<p>If your theme has a sticky header, enter its height under \"Top offset\" in the\nanchor links section, otherwise anchor targets end up underneath it.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"scrolling%20feels%20wrong%20inside%20a%20map%2C%20a%20code%20editor%20or%20a%20modal.\"><h3>Scrolling feels wrong inside a map, a code editor or a modal.<\/h3><\/dt>\n<dd><p>Add a CSS selector for that element under \"Excluded areas\". The\n    data-lenis-prevent attribute is also recognised without any setting.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20with%20gsap%20scrolltrigger%3F\"><h3>Can I use it with GSAP ScrollTrigger?<\/h3><\/dt>\n<dd><p>Yes. Enable \"Expose the instance as window.lenis\", then drive ScrollTrigger\nfrom the <code>sw34-easy-scroll:ready<\/code> event.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20mobile%3F\"><h3>Does it work on mobile?<\/h3><\/dt>\n<dd><p>The plugin never smooths touch scrolling: native mobile scrolling is more\nresponsive and better received, so there is no setting for it. Everything else\nstill applies, and \"Disable on touch devices\" turns the plugin off entirely on\nphones and tablets if that is what you want.<\/p><\/dd>\n<dt id=\"how%20do%20i%20turn%20it%20off%20on%20one%20page%3F\"><h3>How do I turn it off on one page?<\/h3><\/dt>\n<dd><p>Open that page in the editor and tick \"Disable smooth scrolling on this page\"\nin the <strong>Smooth scrolling<\/strong> box in the sidebar. For a whole section of the site,\nuse a wildcard path such as <code>\/my-account\/*<\/code> under \"Excluded pages\" instead.<\/p><\/dd>\n<dt id=\"can%20i%20keep%20native%20scrolling%20for%20myself%20while%20i%20build%20the%20site%3F\"><h3>Can I keep native scrolling for myself while I build the site?<\/h3><\/dt>\n<dd><p>Yes. Set \"Who gets smooth scrolling\" to \"Everyone except administrators\".<\/p><\/dd>\n<dt id=\"anchor%20links%20jump%20instead%20of%20gliding.\"><h3>Anchor links jump instead of gliding.<\/h3><\/dt>\n<dd><p>Check that \"Animate anchor links\" is on. When it is, this plugin takes anchor\nclicks in the capture phase and stops them there, so a theme running its own\nanchor scrolling \u2014 Divi does \u2014 cannot overwrite the animation. If you would\nrather keep your theme's behaviour, turn this setting off.<\/p><\/dd>\n<dt id=\"can%20a%20scrollable%20area%20inside%20the%20page%20be%20animated%20too%3F\"><h3>Can a scrollable area inside the page be animated too?<\/h3><\/dt>\n<dd><p>No. Lenis animates the document, not the boxes inside it. \"Let nested areas\nscroll\" only hands the wheel back to that box so the page does not move\ninstead; the box then scrolls natively, without inertia. Animating it would\ntake a second Lenis instance bound to that element.<\/p><\/dd>\n<dt id=\"the%20arrow%20keys%20scroll%20the%20page%20while%20i%20am%20filling%20in%20a%20form.\"><h3>The arrow keys scroll the page while I am filling in a form.<\/h3><\/dt>\n<dd><p>They should not \u2014 form fields are excluded. If it happens on a custom field,\nadd a selector for it under \"Excluded areas\", and please report it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>First release.<\/p>","raw_excerpt":"Smooth scrolling done properly: the wheel, the keyboard and your anchor links. One settings screen, no tracking, no CDN.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376481"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/studioweb34"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376481"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376481"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376481"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376481"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376481"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}