MediaWiki:Test.js: различия между версиями

Страница интерфейса MediaWiki
Нет описания правки
Метка: отменено
Нет описания правки
 
(не показаны 22 промежуточные версии этого же участника)
Строка 1: Строка 1:
if (mw.config.get('wgPageName') === 'Участник:Dantes') {
(function(){
if(typeof mw==='undefined') return;


    // ===== CSS через JS =====
var map={
    var style = document.createElement('style');
"Клише":"#ff4d4d",
    style.type = 'text/css';
"властью":"#4dff4d",
    style.textContent = ''
"ответственность":"#4d4dff",
        + 'body { margin:0; padding:0; overflow:hidden; background-color:black; }'
"Стандартные Рабочие Процедуры":"#ff4dff",
        + '.chaos-text { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); font-size:10vw; font-weight:900; text-align:center; z-index:1000; text-shadow:0 0 20px #ffff00, 0 0 30px #ff00ff; }'
"ядерный":"#ffa500",
        + '.emoji, .sprite { position:absolute; pointer-events:none; user-select:none; }';
"станции":"#4dffff",
    document.head.appendChild(style);
"ГСБ":"#b84dff",
"диск":"#4dff88",
"СРП/КЗ":"#ffb6c1",
"банановая кожурка":"#ffff4d"
};


    // ===== Переменные =====
function esc(s){return s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}
    var colors = ['#ff0000','#00ff00','#0000ff','#ffff00','#ff00ff','#00ffff','#ffffff','#ff8000'];
    var emojis = ['💥','🔥','🎉','👾','💀','🤡','👻','🌈','🚀','💩','🍕','🦄','😱','🙀','💫','⭐','🌀'];


    // ===== HTML элемент =====
function walk(node){
    var chaosText = document.createElement('div');
if(node.nodeType===3){
    chaosText.className = 'chaos-text';
var t=node.nodeValue, r=t;
    chaosText.textContent = 'ХАОС!';
for(var k in map){
    document.body.appendChild(chaosText);
r=r.replace(new RegExp(esc(k),'g'),'<span style="color:'+map[k]+'">'+k+'</span>');
 
}
    // ===== Вспомогательная функция =====
if(r!==t){
    function randomItem(arr) {
var s=document.createElement('span');
        return arr[Math.floor(Math.random() * arr.length)];
s.innerHTML=r;
    }
node.parentNode.replaceChild(s,node);
 
}
    // ===== Создание эмодзи =====
}
    function createEmojiSprite() {
}
        var emoji = document.createElement('div');
        emoji.className = 'emoji';
        emoji.textContent = randomItem(emojis);
        emoji.style.fontSize = (Math.random() * 60 + 20) + 'px';
        emoji.style.color = randomItem(colors);
        emoji.style.left = (Math.random() * window.innerWidth) + 'px';
        emoji.style.top = (Math.random() * window.innerHeight) + 'px';
        document.body.appendChild(emoji);
 
        var x = parseFloat(emoji.style.left);
        var y = parseFloat(emoji.style.top);
        var xSpeed = (Math.random()-0.5)*10;
        var ySpeed = (Math.random()-0.5)*10;
        var rotation = 0;
        var rotationSpeed = (Math.random()-0.5)*20;
 
        function move() {
            x += xSpeed;
            y += ySpeed;
            rotation += rotationSpeed;
 
            if (x <=0 || x >= window.innerWidth-50) xSpeed = -xSpeed*1.1;
            if (y <=0 || y >= window.innerHeight-50) ySpeed = -ySpeed*1.1;
 
            emoji.style.left = x + 'px';
            emoji.style.top = y + 'px';
            emoji.style.transform = 'rotate(' + rotation + 'deg)';
 
            requestAnimationFrame(move);
        }
        move();
    }
 
    // ===== Фон =====
    function flickerBackground() {
        document.body.style.backgroundColor = randomItem(colors);
        setTimeout(flickerBackground, Math.random()*200);
    }
 
    // ===== Меняем текст =====
    function changeText() {
        var texts = ['ХАОС!','БЕЗУМИЕ!','АААА!','ПОМОГИ!','СТОП!','SOS!','🎪 ЦИРК! 🎪'];
        chaosText.textContent = randomItem(texts);
        chaosText.style.color = randomItem(colors);
        setTimeout(changeText, Math.random()*500);
    }
 
    // ===== Создание спрайтов =====
    function createImageSprite() {
        var img = document.createElement('div');
        img.className = 'sprite';
        img.style.width = (Math.random()*100+50) + 'px';
        img.style.height = (Math.random()*100+50) + 'px';
        img.style.backgroundColor = randomItem(colors);
        img.style.borderRadius = (Math.random()>0.5 ? '50%' : '0');
        img.style.left = (Math.random()*window.innerWidth)+'px';
        img.style.top = (Math.random()*window.innerHeight)+'px';
        img.style.opacity = (Math.random()*0.7+0.3);
        document.body.appendChild(img);
 
        var x = parseFloat(img.style.left);
        var y = parseFloat(img.style.top);
        var xSpeed = (Math.random()-0.5)*8;
        var ySpeed = (Math.random()-0.5)*8;
        var scale = 1;
        var scaleSpeed = (Math.random()-0.5)*0.1;
 
        function move() {
            x += xSpeed;
            y += ySpeed;
            scale += scaleSpeed;
 
            if (x<=0 || x>=window.innerWidth-100) xSpeed=-xSpeed*1.05;
            if (y<=0 || y>=window.innerHeight-100) ySpeed=-ySpeed*1.05;
            if (scale<=0.3 || scale>=2) scaleSpeed=-scaleSpeed;
 
            img.style.left = x+'px';
            img.style.top = y+'px';
            img.style.transform = 'scale(' + scale + ')';
            requestAnimationFrame(move);
        }
        move();
    }
 
    // ===== Интервалы =====
    setInterval(createEmojiSprite, 100);
    setInterval(createImageSprite, 300);
    flickerBackground();
    changeText();
 
    // ===== Дрожание страницы =====
    function shakePage() {
        document.body.style.transform = 'translate(' + (Math.random()*20-10) + 'px,' + (Math.random()*20-10) + 'px)';
        setTimeout(shakePage, 50);
    }
    shakePage();
 
    // ===== Клик добавляет хаос =====
    document.body.addEventListener('click', function(){
        for (var i=0;i<10;i++){
            createEmojiSprite();
            createImageSprite();
        }
    });


    // ===== При изменении размера окна =====
var nodes=document.querySelectorAll('.mw-parser-output p, .mw-parser-output li');
    window.addEventListener('resize', function(){
for(var i=0;i<nodes.length;i++){
        for (var i=0;i<5;i++) createEmojiSprite();
var cn=nodes[i].childNodes;
    });
for(var j=0;j<cn.length;j++) walk(cn[j]);
}
}
})();

Текущая версия от 11:16, 17 января 2026

(function(){
if(typeof mw==='undefined') return;

var map={
"Клише":"#ff4d4d",
"властью":"#4dff4d",
"ответственность":"#4d4dff",
"Стандартные Рабочие Процедуры":"#ff4dff",
"ядерный":"#ffa500",
"станции":"#4dffff",
"ГСБ":"#b84dff",
"диск":"#4dff88",
"СРП/КЗ":"#ffb6c1",
"банановая кожурка":"#ffff4d"
};

function esc(s){return s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}

function walk(node){
if(node.nodeType===3){
var t=node.nodeValue, r=t;
for(var k in map){
r=r.replace(new RegExp(esc(k),'g'),'<span style="color:'+map[k]+'">'+k+'</span>');
}
if(r!==t){
var s=document.createElement('span');
s.innerHTML=r;
node.parentNode.replaceChild(s,node);
}
}
}

var nodes=document.querySelectorAll('.mw-parser-output p, .mw-parser-output li');
for(var i=0;i<nodes.length;i++){
var cn=nodes[i].childNodes;
for(var j=0;j<cn.length;j++) walk(cn[j]);
}
})();