Toggle menu
20
62
5
836
Irontide Fantasy Roleplay
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
Tag: Reverted
No edit summary
Tag: Manual revert
 
(13 intermediate revisions by 2 users not shown)
Line 8: Line 8:
document.getElementsByTagName('head')[0].appendChild(link);
document.getElementsByTagName('head')[0].appendChild(link);


// PARALLAX SCROLL WITH JS (GREENSKINS)
mw.loader.using(['mediawiki.util'], function () {
document.addEventListener('DOMContentLoaded', function () {
     // Wait until the DOM really exists
     // Only run on desktop
     $(function () {
     if (window.innerWidth <= 768) return;


    const container = document.querySelector('.parallax-bg-container');
        function enableClickboxes() {
    if (!container) return;
            $('.clickbox').each(function () {
                var $el = $(this);


    const back  = container.querySelector('.layer-back');
                // Avoid double-binding
    const mid  = container.querySelector('.layer-mid');
                if ($el.data('clickbox-bound')) return;
    const front = container.querySelector('.layer-front');
                $el.data('clickbox-bound', true);


    // Initial styles
                // Attach click
    container.style.cssText = 'position:fixed; top:0; left:0; width:100%; height:100vh; z-index:-1; perspective:1000px; overflow:hidden; pointer-events:none;';
                $el.on('click', function () {
    [back, mid, front].forEach(layer => {
                    var target = $el.data('target');
        layer.style.cssText = 'position:fixed; inset:0; background-size:cover; background-position:center; background-repeat:no-repeat; background-attachment:fixed; width:100%; height:100%;';
    });


    // Set images + depth
                    if (!target) return;
    back.style.backgroundImage  = 'url("/images/2/21/GreenskinsBG.png")';
    back.style.transform        = 'translateZ(-400px) scale(1.5)';
    back.style.zIndex          = '1';


    mid.style.backgroundImage  = 'url("/images/4/49/Greenskins1.png")';
                    // If it's a wiki page name (no slash), convert to URL
    mid.style.transform        = 'translateZ(-200px) scale(1.3)';
                    if (!/^(https?:)?\/\//.test(target) && target.indexOf('/') !== 0) {
    mid.style.zIndex            = '2';
                        target = mw.util.getUrl(String(target));
                    }


    front.style.backgroundImage = 'url("/images/2/26/Greenskins2.png")';
                    window.location.href = target;
    front.style.transform      = 'translateZ(0) scale(1)';
                });
    front.style.zIndex          = '3';


    // Scroll handler
                // Keyboard accessibility
    let ticking = false;
                $el.attr('role', 'link').attr('tabindex', '0');
    function updateParallax() {
                $el.on('keydown', function (e) {
        const scroll = window.scrollY;
                    if (e.key === 'Enter' || e.key === ' ') {
                        e.preventDefault();
                        $el.click();
                    }
                });
            });
        }


         back.style.transform  = `translateZ(-400px) scale(1.5) translateY(${scroll * 0.3}px)`;
         // Run once now
        mid.style.transform  = `translateZ(-200px) scale(1.3) translateY(${scroll * 0.5}px)`;
         enableClickboxes();
         front.style.transform = `translateZ(0) scale(1) translateY(${scroll * 0.7}px)`;


         ticking = false;
         // And again whenever MediaWiki adds content dynamically
    }
        mw.hook('wikipage.content').add(enableClickboxes);
 
    window.addEventListener('scroll', () => {
        if (!ticking) {
            requestAnimationFrame(updateParallax);
            ticking = true;
        }
     });
     });
    // Initial call
    updateParallax();
});
});

Latest revision as of 18:02, 28 November 2025

/* Any JavaScript here will be loaded for all users on every page load. */

// Add favicon
var link = document.createElement('link');
link.rel = 'icon';
link.type = 'image/x-icon';
link.href = '/images/favicon.png';
document.getElementsByTagName('head')[0].appendChild(link);

mw.loader.using(['mediawiki.util'], function () {
    // Wait until the DOM really exists
    $(function () {

        function enableClickboxes() {
            $('.clickbox').each(function () {
                var $el = $(this);

                // Avoid double-binding
                if ($el.data('clickbox-bound')) return;
                $el.data('clickbox-bound', true);

                // Attach click
                $el.on('click', function () {
                    var target = $el.data('target');

                    if (!target) return;

                    // If it's a wiki page name (no slash), convert to URL
                    if (!/^(https?:)?\/\//.test(target) && target.indexOf('/') !== 0) {
                        target = mw.util.getUrl(String(target));
                    }

                    window.location.href = target;
                });

                // Keyboard accessibility
                $el.attr('role', 'link').attr('tabindex', '0');
                $el.on('keydown', function (e) {
                    if (e.key === 'Enter' || e.key === ' ') {
                        e.preventDefault();
                        $el.click();
                    }
                });
            });
        }

        // Run once now
        enableClickboxes();

        // And again whenever MediaWiki adds content dynamically
        mw.hook('wikipage.content').add(enableClickboxes);
    });
});