🏠 返回首頁 

Greasy Fork is available in English.

Kiwifarms - Expand Avatars on Hover

Expand avatars on hover for Kiwifarms Users

// ==UserScript==
// @name         Kiwifarms - Expand Avatars on Hover
// @namespace    typpi.online
// @version      1.2.1
// @description  Expand avatars on hover for Kiwifarms Users
// @author       Nick2bad4u
// @match        kiwifarms.com/*
// @match        kiwifarms.net/*
// @match        kiwifarms.ms/*
// @match        kiwifarms.ru/*
// @match        kiwifarms.is/*
// @match        kiwifarms.top/*
// @match        kiwifarms.tw/*
// @match        kiwifarms.hk/*
// @match        kiwifarms.nl/*
// @match        sneed.today/*
// @match        kiwifarms.pl/*
// @match        kiwifarms.st/*
// @connect      kiwifarms.st/*
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @homepageURL  https://github.com/Nick2bad4u/UserStyles
// @license      Unlicense
// @resource     https://www.google.com/s2/favicons?sz=64&domain=kiwifarms.st
// @icon         https://www.google.com/s2/favicons?sz=64&domain=kiwifarms.st
// @icon64       https://www.google.com/s2/favicons?sz=64&domain=kiwifarms.st
// @tag          kiwifarms
// ==/UserScript==
/* eslint-disable no-undef */
(function () {
'use strict';
// Default settings
const defaultSize = 400;
const defaultScale = 2;
let avatarSize = GM_getValue('avatarSize', defaultSize);
let avatarScale = GM_getValue('avatarScale', defaultScale);
// Add custom styles for the expanded avatar
const style = document.createElement('style');
style.textContent = `
.expanded-avatar {
position: absolute;
border: 2px solid #000;
border-radius: 50%;
max-width: ${avatarSize}px;
max-height: ${avatarSize}px;
z-index: 9999;
display: none;
transform: scale(${avatarScale});
}
`;
document.head.appendChild(style);
// Create an element to show the expanded avatar
const expandedAvatar = document.createElement('img');
expandedAvatar.className = 'expanded-avatar';
document.body.appendChild(expandedAvatar);
// Function to show the expanded avatar
function showExpandedAvatar(event) {
const avatar = event.target;
expandedAvatar.src = avatar.src;
expandedAvatar.style.left = `${event.pageX + 60}px`;
expandedAvatar.style.top = `${event.pageY + 60}px`;
expandedAvatar.style.display = 'block';
}
// Function to hide the expanded avatar
function hideExpandedAvatar() {
expandedAvatar.style.display = 'none';
}
// Attach event listeners to avatar images
document.querySelectorAll('.avatar img').forEach((avatar) => {
avatar.addEventListener('mouseover', showExpandedAvatar);
avatar.addEventListener('mouseout', hideExpandedAvatar);
});
// Update avatar position on mouse move
document.addEventListener('mousemove', (event) => {
if (expandedAvatar.style.display === 'block') {
expandedAvatar.style.left = `${event.pageX + 60}px`;
expandedAvatar.style.top = `${event.pageY + 60}px`;
}
});
// Function to set avatar size
function setAvatarSize() {
const size = prompt('Enter the avatar size (in pixels, max 400):', avatarSize);
if (size !== null) {
// Check if the input is a valid number and within the limit
const parsedSize = parseInt(size, 10);
if (!isNaN(parsedSize) && parsedSize > 0 && parsedSize <= 400) {
avatarSize = parsedSize;
GM_setValue('avatarSize', avatarSize);
updateStyle();
} else {
alert('Please enter a valid positive number up to 400 for avatar size.');
}
}
}
// Function to set avatar scale
function setAvatarScale() {
const scale = prompt('Enter the avatar scale (e.g., 2 for 200%):', avatarScale);
if (scale !== null) {
// Check if the input is a valid number
const parsedScale = parseFloat(scale);
if (!isNaN(parsedScale) && parsedScale > 0 && parsedScale <= 2) {
avatarScale = parsedScale;
GM_setValue('avatarScale', avatarScale);
updateStyle();
} else {
alert('Please enter a valid positive number for avatar scale.');
}
}
}
// Function to update the custom styles
function updateStyle() {
style.textContent = `
.expanded-avatar {
position: absolute;
border: 2px solid #000;
border-radius: 50%;
max-width: ${avatarSize}px;
max-height: ${avatarSize}px;
z-index: 9999;
display: none;
transform: scale(${avatarScale});
}
`;
}
// Register menu commands to set avatar size and scale
GM_registerMenuCommand('Set Avatar Hover Size', setAvatarSize);
GM_registerMenuCommand('Set Avatar Hover Scale', setAvatarScale);
})();