您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
获取最接近的颜色!
// ==UserScript== // @name 获取最接近的颜色 // @namespace http://tampermonkey.net/ // @version 0.2 // @description 获取最接近的颜色! // @author Sean // @match https://coolors.co/colors/* // @icon https://www.google.com/s2/favicons?sz=64&domain=coolors.co // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; let extraStyle = 'html.no-touchevents .closest .color-card_color span {opacity: 1;}'; // 添加注入样式 let extraStyleElement = document.createElement("style"); extraStyleElement.innerHTML = extraStyle; document.head.appendChild(extraStyleElement); function hexToRgb(hexValue) { const r = parseInt(hexValue.substr(1, 2), 16); const g = parseInt(hexValue.substr(3, 2), 16); const b = parseInt(hexValue.substr(5, 2), 16); return { r, g, b }; } function getColorDistance(color1, color2) { const rDiff = color2.r - color1.r; const gDiff = color2.g - color1.g; const bDiff = color2.b - color1.b; return Math.sqrt(rDiff * rDiff + gDiff * gDiff + bDiff * bDiff); } const colorsToCompare = ["#00FF00", "#0000FF", "#FFFF00"]; window.onload = ()=> { setTimeout(()=>{ jQuery('html').scrollTop(jQuery(document).height() - 200); setTimeout(()=> { const cards = document.querySelectorAll('.color-card'); jQuery('html').scrollTop(0); let colors = []; // 页面上的十六进制颜色值 let colorNames = []; // 页面上的颜色英文名称 for(let i = 0, l = cards.length; i < l; i++) { colors.push('#' + jQuery(cards[i]).find('span').text()); colorNames.push(jQuery(cards[i]).find('.color-card_name').text()) } console.log(colors); console.log(colorNames); jQuery('.page-title').append('<input id="theme-color" style="border: 1px solid #ccc; width: 300px; height: 24px; text-indent: 10px; line-height: 24px;" autucomplete="off" placeholder="输入主题颜色如:#5D8AA8 查找最接近的颜色"/>') const $input = $('#theme-color'); $input.keyup(function(event) { if(event.keyCode == 13) { const colorPattern = /^#[A-Fa-f0-9]{6}$/; const targetColorHex = this.value.trim(); if (!colorPattern.test(targetColorHex)) { alert('请输入十六进制颜色值') return false; } // const targetColorHex = "#5D8AA8"; const targetColorRgb = hexToRgb(targetColorHex); let closestColor = null; let closestDistance = Infinity; let colsestColorNameIndex = 0; let secondClosestColor = null; let secondClosestColorNameIndex = 0; let secondClosestDistance = Infinity; for (let i = 0, l = colors.length; i < l; i++) { const colorHex = colors[i]; const colorRgb = hexToRgb(colorHex); const distance = getColorDistance(targetColorRgb, colorRgb); if (distance < closestDistance) { closestDistance = distance; closestColor = colorHex; colsestColorNameIndex = i; } } for (let i = 0, l = colors.length; i < l; i++) { if(i == colsestColorNameIndex) { continue; } const colorHex = colors[i]; const colorRgb = hexToRgb(colorHex); const distance = getColorDistance(targetColorRgb, colorRgb); if (distance < secondClosestDistance) { secondClosestDistance = distance; secondClosestColor = colorHex; secondClosestColorNameIndex = i; } } console.log("Closest color:", closestColor); console.log("Closest color name :", colorNames[colsestColorNameIndex]); console.log("Second closest color name :", colorNames[secondClosestColorNameIndex]); alert('最接近的颜色是:' + colorNames[colsestColorNameIndex] + '\n第二接近的颜色是:' + colorNames[secondClosestColorNameIndex]); const $scrollToElement = $(cards[colsestColorNameIndex]); $scrollToElement.addClass('closest').siblings().removeClass('closest'); var offset = $scrollToElement.offset().top; $('html, body').animate({ scrollTop: offset }, 'slow'); } }); }, 1000); }, 2500); }; })();