Javascript 如何获得网站的背景色?

Javascript 如何获得网站的背景色?,javascript,html,css,web,phantomjs,Javascript,Html,Css,Web,Phantomjs,让我解释一下。我不是在寻找特定DOM元素的特定属性。我开始想,如果我检查body元素的背景色,我会找到页面的背景色 但以这个网站为例:身体的背景色是黑色,很明显,网站的主要背景色是白色 所以,我正在用PhantomJS解析这个站点。你认为怎样才能找到最明显的背景色。我不知道怎么说,但对于人类来说,哪种颜色是背景是显而易见的。如何通过编程找到它 编辑:自行车网站只是一个例子。我正在考虑如何对任何页面执行此操作。性能自行车网站的背景色是透明的。然而,由于一些奇怪的原因,他们决定将整个主div设置为绝

让我解释一下。我不是在寻找特定DOM元素的特定属性。我开始想,如果我检查body元素的背景色,我会找到页面的背景色

但以这个网站为例:身体的背景色是黑色,很明显,网站的主要背景色是白色

所以,我正在用PhantomJS解析这个站点。你认为怎样才能找到最明显的背景色。我不知道怎么说,但对于人类来说,哪种颜色是背景是显而易见的。如何通过编程找到它


编辑:自行车网站只是一个例子。我正在考虑如何对任何页面执行此操作。

性能自行车网站的背景色是透明的。然而,由于一些奇怪的原因,他们决定将整个主div设置为绝对位置,因此,body标签的高度为1px,因此显示默认的白色。我的一个想法是,你可以检查身体的高度是否低于窗户的某个百分比。如果它太小,那么它可能是白色的,或者对于某些特殊的浏览器是透明的


其他选项包括页面的背景色,并从中确定背景色。

您可以使用javascript检查哪一层位于顶部,以及该div的宽度和高度,然后只获取其背景色属性。

另一个不错的解决方案是使用浏览器插件。我用滴管滴铬

也可以使用Firefox的colorPicker。要获得它,请在firefox浏览器中转到:

工具->附加组件->右上角搜索栏查找颜色选择器


通过这种方式在网站上查找背景颜色的速度比通过CSS代码搜索要快10倍。

像这样的东西怎么样

不完美,但应该返回具有最大面积的元素,并确保其可见。不会说明它低于其他元素,但这是一个开始

var element={
    width:0,
    height:0,
    color:'',
    jQEl:{}
}

$('*:visible').each(function(){
    var $this = $(this);
    var area = element.width*element.height;
    var thisArea = $this.width()*$this.height();
    if(thisArea>area){
        element.width = $this.width();
        element.height= $this.height();
        element.color=$this.css('background-color');
        element.jQEl=$this;
    }
});

console.log(element)

我会截图,然后做一个图像的直方图,找到最常见的颜色

改进:

首先检查并将所有文本内容替换为; 为离屏幕边缘最近的像素赋予额外的权重。
要在PhantomJS中完全自动化,您可能可以使用画布之类的东西,而不需要制作外部图像文件。

该网站上没有任何地方说除了主导航之外,背景是黑色的。没有主背景,这就是默认情况下它有白色背景的原因。在body标签上,颜色确实是黑色的,但这是用于文本的。通常背景是其他元素的容器,一种方法是找到最大的容器并使用其颜色,但您的问题并不简单。您试图解决的问题是什么?为什么要以编程方式执行此操作?@Pointy正在尝试在PNG中创建页面摘要。提取一些信息,我想背景熟悉的网页。我所说的熟悉是指最明显的背景。如果背景是一个图像呢?你在哪里看到它说它是黑色的?这种颜色:333333;用于文本颜色,在主体id=xyz和主页面上没有背景/背景色。没问题,似乎每个人都有。:]德里克,假设我有一张截图。。。我如何找到背景色?逐像素计算每个像素的颜色?@HommerSmith打开photoshop,使用滴管工具:p@HommerSmith-实际上,这取决于你如何定义背景色。举个例子,背景颜色是白色还是灰色?这是一个可怕的答案……右键单击、检查元素并查看CSS有多困难?lol@HommerSmith如果您需要一个复杂的函数来查找图像和DOM元素中的颜色,那么您需要做大量的研究,或者查找某人制作的函数。@MikeBarwick我看到这个答案的唯一好处是,您不能只检查图像的颜色。@MikeBarwick如果元素上应用了CSS的渐变,或者,如果该元素是半透明的,并且覆盖在另一个具有不同颜色的元素上,CSS不会告诉你太多。嗯?哈哈,同样的事情。对于每个直播网站,你都可以得到每一个CSS功能…渐变应用于相同的背景CSS元素…所以我不理解你的问题。