gpt4 book ai didi

JavaScript:反转页面所有元素的颜色

转载 作者:IT王子 更新时间:2023-10-29 03:05:49 26 4
gpt4 key购买 nike

注意:我在我的问题中保留了最新版本的小书签,它运行良好并且基于 Jacob 的回答。如果您正在寻找要使用的小书签,请使用那个。 如果您只是想要在 chrome 上运行的令人惊奇的东西,请参阅 leosok 的绝妙答案。

我希望能够使用 JavaScript 小书签反转页面上所有元素的颜色。我知道要反转颜色,您需要从 255(xFF) 中减去每个 RGB 十六进制值,但除此之外我不确定如何继续。

我怎样才能做到这一点?

使用 jQuery 是可以接受的,它只需要在 Chrome 上工作,但如果它在 Firefox 上工作那将是一个加号。

这不包括图像 - 背景、文本和链接颜色都应反转。基本上任何从 CSS 获取颜色的东西。

更新这是一个更新的小书签,它修复了嵌套元素问题并且可以在很多不同的站点(包括这个站点)上工作

更新2添加了对透明度的一些支持,处理具有默认背景颜色 rgba(0, 0, 0, 0) 的元素。更多网站现在应该可以使用更新后的网站。

javascript: (function ($) {
function load_script(src, callback) {
var s = document.createElement('script');
s.src = src;
s.onload = callback;
document.getElementsByTagName('head')[0].appendChild(s);
}

function invertElement() {
var colorProperties = ['color', 'background-color'];
var color = null;
for (var prop in colorProperties) {
prop = colorProperties[prop];
if (!$(this).css(prop)) continue;
if ($(this).data(prop) != $(this).css(prop)) continue;

if (($(this).css(prop) === 'rgba(0, 0, 0, 0)') || ($(this).css(prop) === 'transparent')) {
if ($(this).is('body')) {
$(this).css(prop, 'black');
continue;
} else {
continue;
}
}
color = new RGBColor($(this).css(prop));
if (color.ok) {
$(this).css(prop, 'rgb(' + (255 - color.r) + ',' + (255 - color.g) + ',' + (255 - color.b) + ')');
}
color = null;
}
}

function setColorData() {
var colorProperties = ['color', 'background-color'];
for (var prop in colorProperties) {
prop = colorProperties[prop];
$(this).data(prop, $(this).css(prop));
}
}

function invertColors() {
$(document).live('DOMNodeInserted', function(e) {
var $toInvert = $(e.target).find('*').andSelf();
$toInvert.each(setColorData);
$toInvert.each(invertElement);
});
$('*').each(setColorData);
$('*').each(invertElement);
$('iframe').each(function () {
$(this).contents().find('*').each(setColorData);
$(this).contents().find('*').each(invertElement);
});
}
load_script('http://www.phpied.com/files/rgbcolor/rgbcolor.js', function () {
if (!window.jQuery) load_script('https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', invertColors);
else invertColors();
});

})(jQuery);

现在适用于我尝试过的大多数网站。然而,背景图像可能会带来问题。

最佳答案

首先,获取很棒的 RGBColorhere .

这里是:

jsFiddle example

//set up color properties to iterate through
var colorProperties = ['color', 'background-color'];

//iterate through every element in reverse order...
$("*").get().reverse().each(function() {
var color = null;

for (var prop in colorProperties) {
prop = colorProperties[prop];

//if we can't find this property or it's null, continue
if (!$(this).css(prop)) continue;

//create RGBColor object
color = new RGBColor($(this).css(prop));

if (color.ok) {
//good to go, let's build up this RGB baby!
//subtract each color component from 255
$(this).css(prop, 'rgb(' + (255 - color.r) + ', ' + (255 - color.g) + ', ' + (255 - color.b) + ')');
}
color = null; //some cleanup
}
});

截图:

alt text

编辑:这是一个小书签,您现在可以将其复制粘贴到您的浏览器中 (http://jsfiddle.net/F7HqS/1/)

javascript:function load_script(src,callback){var s=document.createElement('script');s.src=src;s.onload=callback;document.getElementsByTagName('head')[0].appendChild(s);}function invertColors(){var colorProperties=['color','background-color'];$('*').each(function(){var color=null;for(var prop in colorProperties){prop=colorProperties[prop];if(!$(this).css(prop))continue;color=new RGBColor($(this).css(prop));if(color.ok){$(this).css(prop,'rgb('+(255-color.r)+','+(255-color.g)+','+(255-color.b)+')');}color=null;}});}load_script('http://www.phpied.com/files/rgbcolor/rgbcolor.js',function(){if(!window.jQuery)load_script('https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js',invertColors);else invertColors();});

关于JavaScript:反转页面所有元素的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com