|
|
| Строка 1: |
Строка 1: |
| (function() {
| | document.addEventListener('DOMContentLoaded', function(){ |
| if (window.innerWidth < 1024 || /Mobi|Android|iPhone|iPad|iPod|Tablet/i.test(navigator.userAgent)) return;
| | var el = document.createElement('div'); |
| | | el.style.position = 'fixed'; |
| if (localStorage.getItem('halloweenThemeDisabled') === 'true') return;
| | el.style.top = '15px'; |
| | | el.style.left = '50%'; |
| var today = new Date();
| | el.style.transform = 'translateX(-50%)'; |
| var month = today.getMonth() + 1;
| | el.style.background = 'rgba(0,0,0,0.4)'; |
| if (month !== 10 && month !== 11) return;
| | el.style.color = getComputedStyle(document.body).color || '#fff'; |
| | | el.style.padding = '6px 14px'; |
| mw.loader.load('/w/index.php?title=MediaWiki:Test.css&action=raw&ctype=text/css');
| | el.style.border = '1px solid rgba(179,229,252,0.7)'; |
| | | el.style.borderRadius = '8px'; |
| mw.hook('wikipage.content').add(function($content) {
| | el.style.fontSize = '14px'; |
| | | el.style.zIndex = 9999; |
| var config = {
| | el.style.boxShadow = '0 0 12px rgba(179,229,252,0.7)'; |
| leavesCount: 50,
| | el.style.opacity = 0; |
| batsCount: 8,
| | el.style.transition = 'opacity 1.2s'; |
| websCount: 5,
| | document.body.appendChild(el); |
| pumpkinsCount: 3,
| | }); |
| leafIcons: ['🍂','🍁','🦇','🕸️'],
| |
| pumpkinIcon: '🎃',
| |
| leafMinSize: 14,
| |
| leafMaxSize: 42,
| |
| pumpkinMinSize: 24,
| |
| pumpkinMaxSize: 36
| |
| };
| |
| | |
| var body = document.body;
| |
| | |
| function createFragmentElements(count, createFn) {
| |
| var frag = document.createDocumentFragment();
| |
| for (var i = 0; i < count; i++) frag.appendChild(createFn(i));
| |
| return frag;
| |
| }
| |
| | |
| function initLeaves() {
| |
| var leaves = document.createElement('div');
| |
| leaves.className = 'halloween-leaves';
| |
| leaves.appendChild(createFragmentElements(config.leavesCount, function() {
| |
| var leaf = document.createElement('span');
| |
| leaf.className = 'halloween-leaf';
| |
| leaf.innerHTML = config.leafIcons[Math.floor(Math.random() * config.leafIcons.length)];
| |
| leaf.style.left = (Math.random() * 100) + '%';
| |
| leaf.style.animationDelay = (Math.random() * 10) + 's';
| |
| leaf.style.fontSize = (config.leafMinSize + Math.random() * (config.leafMaxSize - config.leafMinSize)) + 'px';
| |
| leaf.style.opacity = Math.random() * 0.7 + 0.3;
| |
| leaf.style.transform = 'rotate(' + (Math.random() * 360) + 'deg)';
| |
| return leaf;
| |
| }));
| |
| body.appendChild(leaves);
| |
| }
| |
| | |
| function initPumpkins() {
| |
| var heading = document.getElementById('firstHeading');
| |
| if (!heading) return;
| |
| for (var i = 0; i < config.pumpkinsCount; i++) {
| |
| var pumpkin = document.createElement('span');
| |
| pumpkin.className = 'halloween-pumpkin';
| |
| pumpkin.innerHTML = config.pumpkinIcon;
| |
| pumpkin.style.margin = '0 2px';
| |
| pumpkin.style.fontSize = (config.pumpkinMinSize + Math.random() * (config.pumpkinMaxSize - config.pumpkinMinSize)) + 'px';
| |
| heading.appendChild(pumpkin);
| |
| (function(el){
| |
| var pos = 0, dir = 1;
| |
| setInterval(function() {
| |
| pos += dir*0.3;
| |
| if(pos>5||pos<0) dir*=-1;
| |
| el.style.transform = 'translateY(' + pos + 'px)';
| |
| },30);
| |
| })(pumpkin);
| |
| }
| |
| }
| |
| | |
| function initLinksEffect() {
| |
| body.addEventListener('mouseover', function(e){
| |
| if(e.target.tagName.toLowerCase()==='a'){
| |
| e.target.style.color='#ffa500';
| |
| e.target.style.textShadow='0 0 8px #ffa500, 0 0 15px #ff7518';
| |
| }
| |
| });
| |
| body.addEventListener('mouseout', function(e){
| |
| if(e.target.tagName.toLowerCase()==='a'){
| |
| e.target.style.color='';
| |
| e.target.style.textShadow='';
| |
| }
| |
| });
| |
| }
| |
| | |
| function initBats() {
| |
| body.appendChild(createFragmentElements(config.batsCount, function(){
| |
| var bat=document.createElement('div');
| |
| bat.className='halloween-bat';
| |
| bat.style.top=(Math.random()*50)+'vh';
| |
| bat.style.left=(-50+Math.random()*100)+'px';
| |
| bat.style.animationDuration=(8+Math.random()*6)+'s';
| |
| return bat;
| |
| }));
| |
| }
| |
| | |
| function initWebs() {
| |
| body.appendChild(createFragmentElements(config.websCount, function(){
| |
| var web=document.createElement('div');
| |
| web.className='spider-web';
| |
| web.style.top=(Math.random()*80)+'vh';
| |
| web.style.left=(Math.random()*90)+'vw';
| |
| web.style.transform='rotate('+(Math.random()*360)+'deg)';
| |
| return web;
| |
| }));
| |
| }
| |
| | |
| function addDisableButton() {
| |
| var btn=document.createElement('div');
| |
| btn.innerText='Отключить хэллоуинскую тему';
| |
| btn.style.position='fixed';
| |
| btn.style.bottom='10px';
| |
| btn.style.right='10px';
| |
| btn.style.padding='6px 12px';
| |
| btn.style.background='var(--pumpkin-orange)';
| |
| btn.style.color='var(--ghost-white)';
| |
| btn.style.cursor='pointer';
| |
| btn.style.borderRadius='6px';
| |
| btn.style.zIndex=9999;
| |
| btn.style.boxShadow='0 0 8px var(--pumpkin-orange)';
| |
| btn.addEventListener('click', function(){
| |
| localStorage.setItem('halloweenThemeDisabled','true');
| |
| location.reload();
| |
| });
| |
| body.appendChild(btn);
| |
| }
| |
| | |
| function init() {
| |
| initLeaves();
| |
| initPumpkins();
| |
| initLinksEffect();
| |
| initBats();
| |
| initWebs();
| |
| addDisableButton();
| |
| }
| |
| | |
| setTimeout(init, 500);
| |
| });
| |
| })();
| |