您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an aesthetic color palette to Telegram Web.
// ==UserScript== // @name Telegram Web Colors // @namespace http://tampermonkey.net/ // @version 3.28 // @description Adds an aesthetic color palette to Telegram Web. // @author Emithby // @match https://web.telegram.org/* // @match https://web.telegram.org/a/* // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; // Retrieve the saved state from localStorage let isOpen = localStorage.getItem('paletteOpen') === 'true'; function addColorPalette() { const paletteContainer = document.createElement('div'); paletteContainer.id = 'colorPaletteContainer'; paletteContainer.style.position = 'fixed'; paletteContainer.style.bottom = '20px'; paletteContainer.style.right = '20px'; paletteContainer.style.padding = '15px'; paletteContainer.style.backgroundColor = '#ffffff'; paletteContainer.style.borderRadius = '10px'; paletteContainer.style.boxShadow = '0 4px 8px rgba(0,0,0,0.3)'; paletteContainer.style.zIndex = '9999'; paletteContainer.style.width = '250px'; paletteContainer.style.display = 'flex'; paletteContainer.style.flexDirection = 'column'; paletteContainer.style.alignItems = 'center'; paletteContainer.style.border = '4px solid #000'; paletteContainer.style.fontFamily = 'Arial, sans-serif'; paletteContainer.style.fontSize = '14px'; paletteContainer.style.transition = 'transform 0.4s ease-in-out'; paletteContainer.style.overflow = 'hidden'; paletteContainer.style.transform = isOpen ? 'translateY(0)' : 'translateY(100%)'; const title = document.createElement('h4'); title.textContent = 'Select Theme Color'; title.style.margin = '0 0 10px 0'; title.style.fontWeight = 'bold'; title.style.fontSize = '22px'; // Increased font size title.style.color = '#FF5733'; // Bright color for the title title.style.textShadow = '1px 1px 2px rgba(0,0,0,0.4)'; // Text shadow for better visibility title.style.transition = 'color 0.3s, text-shadow 0.3s'; // Smooth transitions paletteContainer.appendChild(title); const colors = [ '#FF5733', '#33FF57', '#3357FF', '#F3FF33', '#FF33A8', '#33FFF5', '#FF6F33', '#9B59B6', '#FFC300', '#C70039', '#581845', '#FF9F00', '#2ECC71' ]; const buttonContainer = document.createElement('div'); buttonContainer.style.display = 'flex'; buttonContainer.style.flexWrap = 'wrap'; buttonContainer.style.marginBottom = '10px'; buttonContainer.style.justifyContent = 'center'; colors.forEach(color => { const colorButton = document.createElement('button'); colorButton.style.backgroundColor = color; colorButton.style.width = '40px'; colorButton.style.height = '40px'; colorButton.style.border = '2px solid #000'; colorButton.style.margin = '4px'; colorButton.style.cursor = 'pointer'; colorButton.style.borderRadius = '50%'; colorButton.style.boxShadow = '0 2px 4px rgba(0,0,0,0.2)'; colorButton.title = color; colorButton.addEventListener('click', () => applyThemeColor(color)); buttonContainer.appendChild(colorButton); }); paletteContainer.appendChild(buttonContainer); const customColorContainer = document.createElement('div'); customColorContainer.style.display = 'flex'; customColorContainer.style.flexDirection = 'column'; customColorContainer.style.alignItems = 'center'; const customColorTitle = document.createElement('span'); customColorTitle.textContent = 'Custom Color'; customColorTitle.style.marginBottom = '5px'; customColorTitle.style.fontSize = '16px'; // Increased font size customColorTitle.style.fontWeight = 'bold'; customColorTitle.style.color = '#FF5733'; // Bright color for custom color title customColorTitle.style.textShadow = '1px 1px 2px rgba(0,0,0,0.4)'; // Text shadow for better visibility const customColorInputContainer = document.createElement('div'); customColorInputContainer.style.position = 'relative'; customColorInputContainer.style.display = 'flex'; customColorInputContainer.style.alignItems = 'center'; const customColorInput = document.createElement('input'); customColorInput.type = 'color'; customColorInput.style.position = 'absolute'; customColorInput.style.top = '0'; customColorInput.style.left = '0'; customColorInput.style.opacity = '0'; customColorInput.style.cursor = 'pointer'; customColorInput.addEventListener('input', (e) => { applyThemeColor(e.target.value); }); const customColorCircle = document.createElement('div'); customColorCircle.style.width = '40px'; customColorCircle.style.height = '40px'; customColorCircle.style.borderRadius = '50%'; customColorCircle.style.background = 'linear-gradient(135deg, red, orange, yellow, green, blue, indigo, violet)'; customColorCircle.style.margin = '4px'; customColorCircle.style.cursor = 'pointer'; customColorCircle.style.border = '2px solid #000'; customColorCircle.style.boxShadow = '0 2px 4px rgba(0,0,0,0.2)'; customColorCircle.style.display = 'flex'; customColorCircle.style.alignItems = 'center'; customColorCircle.style.justifyContent = 'center'; customColorCircle.style.fontSize = '20px'; customColorCircle.style.color = '#fff'; customColorCircle.style.backgroundColor = '#FFCC00'; // Custom color for visibility customColorCircle.title = 'Click to choose a color'; customColorCircle.addEventListener('click', () => { customColorInput.click(); }); customColorCircle.textContent = '🎨'; // Emoji in the center customColorInputContainer.appendChild(customColorCircle); customColorInputContainer.appendChild(customColorInput); customColorContainer.appendChild(customColorTitle); customColorContainer.appendChild(customColorInputContainer); paletteContainer.appendChild(customColorContainer); const controlsContainer = document.createElement('div'); controlsContainer.style.position = 'absolute'; controlsContainer.style.top = '5px'; controlsContainer.style.right = '5px'; controlsContainer.style.display = 'flex'; controlsContainer.style.flexDirection = 'column'; const toggleButton = document.createElement('button'); toggleButton.innerHTML = isOpen ? '▼' : '▲'; // Down arrow when open, up arrow when closed toggleButton.style.border = 'none'; toggleButton.style.backgroundColor = '#007BFF'; toggleButton.style.color = '#fff'; toggleButton.style.borderRadius = '50%'; toggleButton.style.width = '24px'; toggleButton.style.height = '24px'; toggleButton.style.cursor = 'pointer'; toggleButton.style.fontSize = '16px'; toggleButton.style.boxShadow = '0 2px 4px rgba(0,0,0,0.1)'; toggleButton.style.transition = 'transform 0.4s ease-in-out'; toggleButton.addEventListener('click', () => { isOpen = !isOpen; localStorage.setItem('paletteOpen', isOpen); paletteContainer.style.transform = isOpen ? 'translateY(0)' : 'translateY(100%)'; toggleButton.innerHTML = isOpen ? '▼' : '▲'; }); controlsContainer.appendChild(toggleButton); paletteContainer.appendChild(controlsContainer); document.body.appendChild(paletteContainer); function adjustColors() { const isDarkMode = window.getComputedStyle(document.body).getPropertyValue('--theme-background-color').includes('rgb(0, 0, 0)'); title.style.color = isDarkMode ? '#ddd' : '#333'; paletteContainer.style.borderColor = isDarkMode ? '#444' : '#000'; } const savedColor = localStorage.getItem('themeColor'); if (savedColor) { applyThemeColor(savedColor); } const observer = new MutationObserver(adjustColors); observer.observe(document.body, { attributes: true, attributeFilter: ['style'] }); adjustColors(); } function applyThemeColor(color) { const style = document.createElement('style'); style.innerHTML = ` :root { --primary-color: ${color}; --secondary-color: ${color}; --accent-color: ${color}; } `; document.head.appendChild(style); localStorage.setItem('themeColor', color); } window.addEventListener('load', addColorPalette); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址