问吧U们个颜色问题
javascript吧
全部回复
仅看楼主
level 1
严格来讲是html问题
html元素不是有个bgcolor吗 用法大概和css里的background差不多
但是嘞 如果bgcolor="red;"(有个分号)就会变成绿色
bgcolor="yellow;"就会变成黄色
bgcolor="grey;"也会变成绿色
而且这个再edge里有 在ie7里也有
是啥w3c标准吗?也不是取反色啊
2023年06月19日 10点06分 1
level 7
这确定不是红色?
2023年06月19日 11点06分 2
确定不是 是绿的
2023年06月20日 10点06分
level 13
bgcolor 属性已经是上古的东西了,早在 html 4 版本前就已经存在,也早在 html 4 变成了不推荐使用的属性,只不过没有被废弃,所以现今还能使用。
它只能作用于 body 标签上,指定整个网页的背景色,跟 css 的 background-color 没有区别。
至于你写 "red;" 会是绿色,是因为格式不对,这个属性的值末尾没有什么符号,你写了分号浏览器给识别成别的东西了。这个属性支持颜色名、十六进制颜色表示法、rgb颜色表示法,想要红色直接 "red" 就行了。
当然因为是不推荐使用的,工作上应该用 css 代替。
2023年06月19日 15点06分 3
我知道不推荐使用 只不过为了调试方便临时加了个bgcolor 一不小心就加了个分号 主要是好奇一下
2023年06月20日 10点06分
level 10
分号放在双引号外面
2023年06月20日 01点06分 4
level 1
2023年06月20日 10点06分 5
level 11
为了解答你这个问题,我特意花了两个小时clone了40个G的chromium源代码仓库,找到了相关的实现算法。虽然是C++写的,但是如果你英语还行的话也基本上能看懂。“red;”走的算法是ParseColorStringWithCrazyLegacyRules(光看名字就知道这算法很奇怪,很crazy),有兴趣也可以自己去看看实现逻辑。
直接用搜索引擎搜ParseColorStringWithCrazyLegacyRules这名字也能搜到webkit里的源码链接:https://github.com/adobe/webkit/blob/master/Source/WebCore/html/HTMLElement.cpp#L1078对于“red;”的情况,'r'和';'都不是合法的十六进制字符,会被替换成0,得到0ed0,然后后面又默认补了两个0,所以这个字符串实际上是当作"0ed000"处理的,#0ed00呈现的颜色是一种绿色。
2023年06月23日 12点06分 6
谢谢大佬 大佬牛逼
2023年06月24日 02点06分
依照这个函数名 意思应该是用**远古规则处理颜色字符串 所以ie7里也有这个规则也就不奇怪了
2023年06月24日 03点06分
1