MediaWiki:Common.js: Difference between revisions
 Created page with "→Any JavaScript here will be loaded for all users on every page load.:    //make destination of the logo hyperlink random let logos = document.querySelectorAll('.mw-logo'); logos.forEach(function(logo) {   logo.href = 'https://ooqa.karls.computer/Special:Random'; });   // add a little disorder function rand(min = -1, max = 1) {   return Math.random() * (max - min) + min } document.querySelectorAll('ul li, .mw-logo > *').forEach( e => { 	e.style.rotate = `${ rand(-3, 3..."  | 
				No edit summary  | 
				||
| Line 16: | Line 16: | ||
	e.style.rotate = `${ rand(-3, 3) }deg`  | 	e.style.rotate = `${ rand(-3, 3) }deg`  | ||
})  | })  | ||
//Background color  | |||
// Function to generate a random bright color  | // Function to generate a random bright color  | ||
| Line 52: | Line 54: | ||
setBackgroundColors();  | setBackgroundColors();  | ||
changeBackgroundGradually();  | changeBackgroundGradually();  | ||
//mouse-hover Popup for the logo  | |||
// Create a new div element for the popup  | |||
let popup = document.createElement('div');  | |||
popup.id = 'popup-disclaimer';  | |||
popup.classList.add('popup');  | |||
popup.innerText = 'This is a disclaimer text.';  | |||
// Append the popup to the body  | |||
document.body.appendChild(popup);  | |||
// Select the .mw-logo element  | |||
let logo = document.querySelector('.mw-logo');  | |||
// Add event listener for mouse hover (mouseenter) to show the popup  | |||
logo.addEventListener('mouseenter', function(event) {  | |||
  // Get the mouse position and place the popup accordingly  | |||
  let x = event.pageX + 10; // Offset a bit for better placement  | |||
  let y = event.pageY + 10;  | |||
  popup.style.left = x + 'px';  | |||
  popup.style.top = y + 'px';  | |||
  // Show the popup  | |||
  popup.style.display = 'block';  | |||
});  | |||
// Add event listener for mouse out (mouseleave) to hide the popup  | |||
logo.addEventListener('mouseleave', function() {  | |||
  // Hide the popup  | |||
  popup.style.display = 'none';  | |||
});  | |||
Revision as of 11:46, 30 September 2024
/* Any JavaScript here will be loaded for all users on every page load. */
//make destination of the logo hyperlink random
let logos = document.querySelectorAll('.mw-logo');
logos.forEach(function(logo) {
  logo.href = 'https://ooqa.karls.computer/Special:Random';
});
// add a little disorder
function rand(min = -1, max = 1) {
  return Math.random() * (max - min) + min
}
document.querySelectorAll('ul li, .mw-logo > *').forEach( e => {
	e.style.rotate = `${ rand(-3, 3) }deg`
})
//Background color
// Function to generate a random bright color
function getRandomBrightColor() {
  const min = 200; // Minimum value for bright colors
  const r = Math.floor(Math.random() * (255 - min) + min);
  const g = Math.floor(Math.random() * (255 - min) + min);
  const b = Math.floor(Math.random() * (255 - min) + min);
  return `rgb(${r},${g},${b})`;
}
// Set the initial random background color for all elements
function setBackgroundColors() {
  // Set for root variable --background-color-base (so also body)
  document.documentElement.style.setProperty('--background-color-base', getRandomBrightColor());
  // Set for .vector-pinned-container
  const pinnedContainers = document.querySelectorAll('.vector-pinned-container');
  pinnedContainers.forEach(element => {
    element.style.backgroundColor = getRandomBrightColor();
  });
  // Set for .vector-dropdown-content
  const dropdownContent = document.querySelectorAll('.vector-dropdown-content');
  dropdownContent.forEach(element => {
    element.style.backgroundColor = getRandomBrightColor();
  });
}
// Gradually change the background color for all elements
function changeBackgroundGradually() {
  setInterval(() => {
    setBackgroundColors();
  }, 5000); // Change every 5 seconds
}
// Initialize the process
setBackgroundColors();
changeBackgroundGradually();
//mouse-hover Popup for the logo
// Create a new div element for the popup
let popup = document.createElement('div');
popup.id = 'popup-disclaimer';
popup.classList.add('popup');
popup.innerText = 'This is a disclaimer text.';
// Append the popup to the body
document.body.appendChild(popup);
// Select the .mw-logo element
let logo = document.querySelector('.mw-logo');
// Add event listener for mouse hover (mouseenter) to show the popup
logo.addEventListener('mouseenter', function(event) {
  // Get the mouse position and place the popup accordingly
  let x = event.pageX + 10; // Offset a bit for better placement
  let y = event.pageY + 10;
  popup.style.left = x + 'px';
  popup.style.top = y + 'px';
  
  // Show the popup
  popup.style.display = 'block';
});
// Add event listener for mouse out (mouseleave) to hide the popup
logo.addEventListener('mouseleave', function() {
  // Hide the popup
  popup.style.display = 'none';
});