这与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通道完成的.
我正在为我的一个类编写一个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上对此进行了测试,以仔细检查是否进行了一些优化,但是其表现类似。
我假设一个站点上没有与滚动相关的事件的事件处理程序,那么有一个用于基本滚动的特殊线程。这是因为我注意到带有粘性标头的站点将允许滚动,但直到循环结束后才具有粘性效果。