Entrance Animations for Any Widget Or Container | Elementor Tutorial

Wide transparent graphic asset of a torn paper edge rendered in white, appearing blank against a white background
Thumbnail with a man in a dark jacket on the left over a purple glow with the partly hidden heading Management: Where Talent Meets Opportunity behind him, and a large slanted orange side menu panel listing Home, About Us, Services, Our Work, Careers and Contact Us with Facebook, YouTube, Instagram and LinkedIn links, a yellow CLOSE button at the top right, a magenta circle with a white list icon at the lower left, and model portrait cards visible behind the panel

The Creative Overlay Menu in Elementor — A Full-Screen Menu That Shows Off

Reboot Addons' Creative Overlay Menu: a full-screen Elementor menu with kicker, headline, CTA and eleven animated surface options. No custom ...

Read More
A web-design studio desk with a laptop and monitors showing website layouts and design tools — the kind of monthly managed-build behind the R749 to R1999 plans.

R749 vs R999 vs R1999 — What Each Website Package Actually Gets You

R749, R999, R1499 or R1999 a month — what each Reboot Websites package actually builds, and why the gap between ...

Read More
Tall parallax website demo screenshot for Apple Watch Ultra showing a hero with the heading Apple Watch Ultra: Your Companion for Every Adventure over a close up of the watch face on a wrist, a dark section with the heading A REVOLUTIONARY BLEND OF CUTTING-EDGE TECHNOLOGY AND RUGGED DURABILITY FOR THE MODERN EXPLORER beside a floating watch band image, a section of layered watch photos with translucent highlight text, and a flat lay of the watch with an orange band beside a succulent and a Bullet planner notebook, all inside the WordPress admin bar

Advanced Text FX in Elementor — 58 Text Effects in One Widget

Advanced Text FX gives you 58 text-in effects in one Elementor widget — scramble, typewriter, glitch, neon, and a whole ...

Read More
Thumbnail with a man in a dark shirt on the right, a fan of eight portrait cards of women behind him, large distressed red and orange CARD EFFECT lettering across the bottom, a magenta circle with a white list icon at the lower right, and a blurred purple radial background

Elementor Card Widgets without Custom JS — The Free Tier

Seven content widgets plus all six form stylers that build card effects, carousels, and styled forms without writing JS. Widget ...

Read More
Showing Slide 1 of 5
Thumbnail with a man in a dark jacket on the right and two hands holding a black tablet on the left, the screen filled with a colourful array of glowing UI icons and widgets including hearts, music notes, location pins, a weather cloud, chat bubbles, an envelope, bar charts and a profile card, with a bright glowing light burst in the centre

So if you follow along in the video, I refer to this blog post for you to enter code at certain points, so below is everything you will need!

Here are some masks to help you in this tutorial:

The Following are the css class names I used in the tutorial:

				
					custom-mask-entrance
				
			

The Following code goes into the HMTL widget:

				
					<script>

(function($) {
    $(document).ready(function() {
        const $containers = $('.custom-mask-entrance');
        
        const observer = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    const $target = $(entry.target);
                    const $before = window.getComputedStyle($target[0], '::before');
                    const beforeBg = $before.backgroundImage;
                    
                    if (beforeBg && beforeBg !== 'none') {
                        $target.css({
                            'mask-image': beforeBg,
                            '-webkit-mask-image': beforeBg,
                            'mask-size': 'cover',
                            '-webkit-mask-size': 'cover',
                            'mask-repeat': 'no-repeat',
                            '-webkit-mask-repeat': 'no-repeat',
                            'mask-position': 'center',
                            '-webkit-mask-position': 'center',
                            'opacity': '1'
                        });
                        
                        // Hide ::before after animation
                        setTimeout(() => {
                            $target.css('--before-opacity', '0');
                        }, 0.1); // Adjust timing as needed
                    }
                    
                    observer.unobserve(entry.target);
                }
            });
        }, {
            threshold: 0.2
        });

        // Add style for ::before opacity control
        const style = document.createElement('style');
        style.textContent = `
            .custom-viewport-mask-image {
                --before-opacity: 0;
            }
            .custom-viewport-mask-image::before {
                opacity: var(--before-opacity);
                transition: opacity 0.3s ease;
            }
        `;
        document.head.appendChild(style);

        $containers.each(function() {
            observer.observe(this);
        });
    });
})(jQuery);
</script>