{"id":269073,"date":"2026-01-01T18:25:57","date_gmt":"2026-01-01T18:25:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/shapes-scroll-animations\/"},"modified":"2026-01-07T14:00:51","modified_gmt":"2026-01-07T14:00:51","slug":"shapes-smart-scroll-animations","status":"publish","type":"plugin","link":"https:\/\/lmo.wordpress.org\/plugins\/shapes-smart-scroll-animations\/","author":23424584,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.7","stable_tag":"1.0.7","tested":"6.9.4","requires":"5.2","requires_php":"7.2","requires_plugins":null,"header_name":"Shapes Smart Scroll Animations","header_author":"lkdsgnr","header_description":"Adds high-performance entrance animations (slide-up, zoom-out) with Smart Grid Delay and Accessibility support.","assets_banners_color":"000000","last_updated":"2026-01-07 14:00:51","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/shps.pl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":215,"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":"lkdsgnr","date":"2026-01-01 18:25:31"},"1.0.1":{"tag":"1.0.1","author":"lkdsgnr","date":"2026-01-01 18:48:36"},"1.0.2":{"tag":"1.0.2","author":"lkdsgnr","date":"2026-01-01 19:10:34"},"1.0.3":{"tag":"1.0.3","author":"lkdsgnr","date":"2026-01-01 19:25:11"},"1.0.4":{"tag":"1.0.4","author":"lkdsgnr","date":"2026-01-01 19:47:45"},"1.0.5":{"tag":"1.0.5","author":"lkdsgnr","date":"2026-01-01 19:53:55"},"1.0.6":{"tag":"1.0.6","author":"lkdsgnr","date":"2026-01-01 20:04:52"},"1.0.7":{"tag":"1.0.7","author":"lkdsgnr","date":"2026-01-07 14:00:51"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3430732,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3430732,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3430732,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3430732,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3430732,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3430732,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3430732,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Visual explanation of how \"Zoom Out\" animations works.","2":"Visual explanation of how \"Slide Up\" animations works."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1953,785,4035,247,790],"plugin_category":[34,50,54],"plugin_contributors":[253136],"plugin_business_model":[],"class_list":["post-269073","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-animation","plugin_tags-lightweight","plugin_tags-performance","plugin_tags-scroll","plugin_category-accessibility","plugin_category-media","plugin_category-security-and-spam-protection","plugin_contributors-lkdsgnr","plugin_committers-lkdsgnr"],"banners":{"banner":"https:\/\/ps.w.org\/shapes-smart-scroll-animations\/assets\/banner-772x250.png?rev=3430732","banner_2x":"https:\/\/ps.w.org\/shapes-smart-scroll-animations\/assets\/banner-1544x500.png?rev=3430732","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/shapes-smart-scroll-animations\/assets\/icon.svg?rev=3430732","icon":"https:\/\/ps.w.org\/shapes-smart-scroll-animations\/assets\/icon.svg?rev=3430732","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/shapes-smart-scroll-animations\/assets\/screenshot-1.png?rev=3430732","caption":"Visual explanation of how \"Zoom Out\" animations works."},{"src":"https:\/\/ps.w.org\/shapes-smart-scroll-animations\/assets\/screenshot-2.png?rev=3430732","caption":"Visual explanation of how \"Slide Up\" animations works."}],"raw_content":"<!--section=description-->\n<p>Shapes Smart Scroll Animations is a micro-tool designed for developers and designers who need clean entrance animations without external libraries.<\/p>\n\n<p>This plugin uses a Smart Grid Delay logic to detect your layout structure and animate elements naturally, whether they are in a multi-column desktop grid or a single-column mobile view.<\/p>\n\n<h3>How does it work?<\/h3>\n\n<p>Here is a deep dive into the technical advantages of Shapes Smart Scroll Animations plugin:<\/p>\n\n<h4>1. Smart Grid Delay logic<\/h4>\n\n<p>The core of this plugin is the <code>calculateColumnsInGroup<\/code> algorithm. Instead of forcing you to write complex media queries for animation delays, the plugin:<\/p>\n\n<ul>\n<li>Dynamically checks the physical position (<code>offsetTop<\/code>) of elements.<\/li>\n<li>Detects when a new row begins.<\/li>\n<li>Resets the delay counter for every new row.<\/li>\n<li>Result: Animations look professional and perfectly staggered on any screen size automatically.<\/li>\n<\/ul>\n\n<h4>2. Performance (Vanilla JS)<\/h4>\n\n<ul>\n<li><strong>Zero Dependencies:<\/strong> No jQuery, no GSAP, no heavy frameworks. The script is ultra-lightweight.<\/li>\n<li><strong>IntersectionObserver API:<\/strong> I use the modern browser API to detect scrolling, which is much more efficient than listening to the <code>scroll<\/code> event.<\/li>\n<li><strong>GPU Acceleration:<\/strong> CSS properties use <code>will-change<\/code> to inform the browser ahead of time, offloading rendering to the GPU for smooth animations.<\/li>\n<\/ul>\n\n<h4>3. Accessibility first<\/h4>\n\n<p>This plugin automatically respects the user's operating system preferences.<\/p>\n\n<ul>\n<li><strong>Reduced Motion Support:<\/strong> If a visitor has \"Reduce Motion\" enabled in their system (Windows, macOS, iOS, Android), the plugin automatically disables all entrance animations to prevent motion sickness.<\/li>\n<li><strong>Inclusive Design:<\/strong> Your site remains compliant with modern web standards without extra work.<\/li>\n<\/ul>\n\n<h4>4. Developer friendly<\/h4>\n\n<ul>\n<li><strong>No-JS Fallback:<\/strong> If JavaScript fails or is disabled, elements remain fully visible (opacity: 1). Your content is safe.<\/li>\n<li><strong>CSS Variables:<\/strong> I moved hardcoded values to CSS Custom Properties (<code>:root<\/code>). You can globally change animation duration, easing, or distance directly in your theme's CSS without editing plugin files.<\/li>\n<li><strong>Simple Class System:<\/strong> Just add <code>.shps-animated<\/code> and an effect class.<\/li>\n<\/ul>\n\n<h3>Available effects<\/h3>\n\n<ul>\n<li><strong>Slide Up:<\/strong> <code>.shps-slide-up<\/code> (Classic elegant entrance)<\/li>\n<li><strong>Zoom Out:<\/strong> <code>.shps-zoom-out<\/code> (Modern scaling effect)<\/li>\n<li><strong>Slide Right:<\/strong> <code>.shps-slide-right<\/code><\/li>\n<li><strong>Slide Left:<\/strong> <code>.shps-slide-left<\/code><\/li>\n<\/ul>\n\n<h3>How to use?<\/h3>\n\n<ol>\n<li><strong>Single Element:<\/strong> Add <code>shps-animated shps-slide-up<\/code> to any HTML element or Block.<\/li>\n<li><strong>Grid\/Group:<\/strong> Wrap elements in a container with class <code>shps-group<\/code> to enable the Smart Grid Delay.<\/li>\n<\/ol>\n\n<p><strong>Example HTML:<\/strong><\/p>\n\n<pre><code>&lt;div class=\"shps-group\"&gt;\n    &lt;div class=\"shps-animated shps-slide-up\"&gt;Card 1&lt;\/div&gt;\n    &lt;div class=\"shps-animated shps-slide-up\"&gt;Card 2&lt;\/div&gt;\n    &lt;div class=\"shps-animated shps-slide-up\"&gt;Card 3&lt;\/div&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n\n<h3>Manual delays &amp; overrides<\/h3>\n\n<p>You have two ways to control delays manually if you want to highlight specific items.<\/p>\n\n<p><strong>Method 1: Helper Classes (Recommended for static HTML)<\/strong><\/p>\n\n<p>Use these classes to set a fixed delay. The plugin will detect them and skip the automatic calculation for that specific element.<\/p>\n\n<ul>\n<li><code>.shps-delay-100<\/code> (0.1s) ... to <code>.shps-delay-1000<\/code> (1.0s). Numeric values \u200b\u200bin increments of 100.<\/li>\n<\/ul>\n\n<p><strong>Method 2: CSS Overrides (Recommended for dynamic loops)<\/strong><\/p>\n\n<p>If you are generating lists via PHP (e.g., WordPress Loop) and cannot add specific classes to individual items, use CSS with <code>!important<\/code> to override the inline styles applied by the plugin.<\/p>\n\n<pre><code>\/* Example: Force 3rd item to wait 1 second *\/\n.shps-group .shps-animated:nth-child(3) {\n    transition-delay: 1.0s !important;\n}\n<\/code><\/pre>\n\n<h3>Security &amp; privacy<\/h3>\n\n<p>This plugin is designed to be safe and lightweight:<\/p>\n\n<ul>\n<li><strong>100% GDPR Compliant:<\/strong> No external calls, no tracking, no cookies, and no IP collection.<\/li>\n<li><strong>Zero Dependencies:<\/strong> Written in pure Vanilla JS. No jQuery or external libraries that could cause conflicts.<\/li>\n<li><strong>Database Free:<\/strong> The plugin does not perform any database queries (SQL), ensuring zero risk of injection attacks.<\/li>\n<li><strong>Self-Contained:<\/strong> All assets are loaded locally. No reliance on external CDNs.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/shapes-smart-scroll-animations<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Add the CSS classes to your HTML or page builder elements.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20can%20i%20change%20the%20animation%20speed%3F'><h3>How can I change the animation speed?<\/h3><\/dt>\n<dd><p>You can override the default settings using CSS Variables in your theme's stylesheet (Appearance &gt; Customize &gt; Additional CSS):<\/p>\n\n<pre><code>:root {\n    --shps-duration: 0.6s;        \/* Default: 0.8s *\/\n    --shps-ease: cubic-bezier(0.25, 1, 0.5, 1); \/* Custom easing *\/\n    --shps-distance: 30px;        \/* Default: 50px *\/\n}\n<\/code><\/pre><\/dd>\n<dt id='why%20are%20animations%20not%20working%20on%20my%20device%3F'><h3>Why are animations not working on my device?<\/h3><\/dt>\n<dd><p>Please check your system Accessibility settings. If \"Reduce Motion\" is turned on, the plugin intentionally disables animations to provide an accessible experience.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Minor performance improvements.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>readme.txt file corrections.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>readme.txt file corrections.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>readme.txt file corrections.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>readme.txt file corrections.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>readme.txt file corrections.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>readme.txt file corrections.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Features: Smart Grid Delay, CSS Variables, No-JS fallback.<\/li>\n<\/ul>","raw_excerpt":"Add high-performance entrance animations with Smart Grid Delay logic. Zero dependencies, GPU accelerated, and Accessibility ready.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/269073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=269073"}],"author":[{"embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lkdsgnr"}],"wp:attachment":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=269073"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=269073"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=269073"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=269073"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=269073"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=269073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}