我知道img.align
是deprecated甚至是过时的,仍然...... Firefox正在改变我的属性值。特别参见示例
const img = document.querySelector("img");
console.log("img.align:", img.align);

<img src="http://www.gravatar.com/avatar" align="center" >
&#13;
结果:
img.align: center
img.align: middle
知道为什么firefox会更改属性的值吗?是否有其他属性值firefox更改?
这对像
这样的代码有影响document.querySelectorAll("img[align=center]")
在Firefox(仅)上失败,因此任何使用相同选择器的CSS都会失败;例如img[align=center] { ... }
。
答案 0 :(得分:3)
知道为什么firefox会更改属性的值吗?
因为middle
是RFC 1866 (HTML 2.0),HTML 3.2和HTML 4中定义的正确值,而不是center
。 align
元素上的img
属性从未将center
作为可能值,因为center
历来总是指水平对齐(浮动),您可以&#39 ; t将图像浮动在一条线的中心。当时的其他实现,例如IE, 允许center
作为可能的值,其含义与middle
相同(参见Stefan的答案),等等我的猜测是Firefox正在提供互操作,同时仍然通过对值进行别名来遵守标准。
我不清楚为什么Chrome不会这样做。在任何情况下,出于渲染的目的,它似乎都将center
视为middle
。但是,如果重写Firefox的价值选择器的价值,我会考虑一个缺陷(尽管他们可能并不倾向于修复,因为该属性已经过时)。
真正的问题是MDN claims唯一可能的值为left
,right
,justify
和center
的原因。当然,DOM level 2 spec包含对align
属性的更准确描述,但它并未列出可能的值,因为它们已经在HTML规范中列出。
答案 1 :(得分:1)
html specification不知道img标记的align属性的值 center (但对于其他标记)。但是,firefox可能会将 center 识别为值(而不是其他废话)并将其作为 middle 接受,因为firefox和其他可能的浏览器在他们生活中的某个时刻根据这rather ancient bug report