小编Ray*_*Ray的帖子

浏览器如何处理rgb(百分比); 对于奇怪的数字

这与CSS颜色代码有关:

对于十六进制代码,我们可以表示从#000000到#FFFFFF的16,777,216种颜色

根据W3C Specs,有效RGB百分比适合(0.0%至100.0%),基本上为您提供1,003,003,001种颜色组合.(1001 ^ 3)

根据规格:

当色域已知时,应将设备色域外的值剪裁或映射到色域:红色,绿色和蓝色值必须更改为落在设备支持的范围内.用户代理可以执行从一个色域到另一个色域的更高质量的颜色映射.对于典型的CRT监视器,其设备色域与sRGB相同,以下四个规则是等效的:

我怀疑浏览器是否真的可以渲染所有这些值.(但如果他们这样做请告诉我并忽略这篇文章的其余部分)

我假设有一些从rgb(百分比)到十六进制的映射.(但我再也不确定这是如何工作的)

理想情况下,我想找出函数rgb(百分比) - > HEX

如果我不得不猜测它可能是这3个中的一个.

1)舍入到最近的十六进制

2)CEIL到最近的HEX

3)FLOOR到最近的HEX

问题是我需要准确的映射,我不知道在哪里搜索.我的眼睛无法区分那个级别的颜色,但也许有一些聪明的方法来测试这三个中的每一个.

它也可能取决于浏览器.这可以测试吗?

编辑:

Firefox seems to round from empirical testing.
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在正在浏览Firefox的源代码,

nsColor.h
// A color is a 32 bit unsigned integer with four components: R, G, B
// and A.
typedef PRUint32 nscolor;
Run Code Online (Sandbox Code Playgroud)

似乎Fiefox每个R,G和B只有255个值的空间.暗示舍入可能是答案,但也许有些事情是通过alpha通道完成的.

css browser hex colors

7
推荐指数
1
解决办法
511
查看次数

浏览器中是否有用于滚动的特殊线程?

我正在为我的一个类编写一个JavaScript教程,我想说明一下调用堆栈可以阻止其他进程,并且在这种情况下,页面交互将排队,直到调用堆栈为空。

const print = function(){
	console.log( "Hello World" );
}
setTimeout(print,0);
for(let i=0 ; i < 2000000000 ; i++);
console.log();
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后,我让他们单击链接并调整窗口大小,以查看该页面没有重新呈现,但是在Stack Overflow之类的许多网站上滚动似乎都可以正常工作。它在Reddit上被阻止。我已经在Chrome和Firefox上对此进行了测试,以仔细检查是否进行了一些优化,但是其表现类似。

我假设一个站点上没有与滚动相关的事件的事件处理程序,那么有一个用于基本滚动的特殊线程。这是因为我注意到带有粘性标头的站点将允许滚动,但直到循环结束后才具有粘性效果。

javascript blocking dom-events

3
推荐指数
1
解决办法
97
查看次数

标签 统计

blocking ×1

browser ×1

colors ×1

css ×1

dom-events ×1

hex ×1

javascript ×1