介绍
问题并不像你想象的那么简单。比较受支持的 CSS 属性的“官方”列表的修订并确定它们被引入或停用的修订是很容易的;然而,支持use遗留前缀的数量还取决于 CSS 解析器实现处理它们的方式。因此,您应该查阅时间线和下面的旧版前缀属性的完整列表,以确定如何在给定的 WebKit 修订版中处理支持。
与遗留属性支持相关的解析器更改的时间表
-
2003 年 5 月 5 日 (r9101) http://trac.webkit.org/browser/trunk/WebCore/khtml/css/parser.y?rev=9101:
-apple
(并简要地-moz
!) 将被标准化为-khtml
在幕后。
-
2005 年 8 月 30 日 (r10397) http://trac.webkit.org/browser/trunk/WebCore/khtml/css/parser.y?rev=10397:
-webkit
添加作为替代-khtml
.
-
2006 年 6 月 14 日 (r13874) http://trac.webkit.org/browser/trunk/WebCore/css/CSSGrammar.y?rev=13874: all
-webkit
特性将使用旧前缀(即-apple
and -khtml
被标准化为-webkit
)。所有剩余的旧前缀均已更新为-webkit
在本次修订中。
-
2008 年 2 月 19 日 (r30393) http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=30393:旧的前缀处理移自
CSSGrammar.y
to CSSParser.cpp
.
-
2010 年 7 月 21 日 (r63854) http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=63854: no遗留前缀
均受支持,除了
-apple-dashboard-region
and
-apple-line-clamp
.
-
2010 年 7 月 26 日 (r64071) http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=64071: all
-webkit
特性再次使用旧前缀。 (之前的更改
已恢复。)
-
2012 年 4 月 10 日 (r113795) http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSParser.cpp?rev=113795: no遗留前缀
除非特别启用,否则受支持。
遗留属性和引入/淘汰的修订列表
下面的列表是从。第一个数字是修订版,其中对此属性的支持已添加到列表中;第二个是删除它的修订版。重命名属性与彻底删除属性之间没有区别。
删除的属性r13874 http://trac.webkit.org/browser/trunk/WebCore/css/CSSPropertyNames.in?rev=13874在以下情况下生活了一段时间-webkit
前缀,因此旧前缀可能会继续工作,具体取决于解析器如何处理它们。 (有关更多详细信息,请参阅上面的时间表。)
-
-苹果仪表板区域:r7588 至 r9101
-
-苹果线夹:r6391 至 r9101
-
-苹果文本大小调整:r6805 至 r9101
-
-khtml-外观:r9828 至 r13874
-
-khtml-绑定:r5967 至 r13874
-
-khtml-边框-水平间距:r5212 至 r13874
-
-khtml-边框-垂直间距:r5212 至 r13874
-
-khtml-box-align:r4704 至 r13874
-
-khtml-box-方向:r4704 至 r13874
-
-khtml-box-flex:r4704 至 r13874
-
-khtml-box-flex-group:r4704 至 r13874
-
-khtml-box-flex-group-transition:r6758 至 r6802
-
-khtml-box-lines:r4704 至 r13874
-
-khtml-box-ordinal-group:r4704 至 r13874
-
-khtml-box-orient:r4704 至 r13874
-
-khtml-box-pack:r4704 至 r13874
-
-khtml-仪表板区域:r9101 至 r13874
-
-khtml-流模式:r4704 至 r8041
-
-khtml-字体大小-增量:r8382 至 r13874
-
-khtml-水平边框间距:r5200 至 r5212
-
-khtml换行符:r7763 至 r13874
-
-khtml-线夹:r9101 至 r13874
-
-khtml-margin-bottom-collapse:r7362 至 r13874
-
-khtml-边距-折叠:r7362 至 r13874
-
-khtml-边距-开始:r7708 至 r13874
-
-khtml-margin-top-collapse:r7362 至 r13874
-
-khtml-选取框:r5301 至 r13874
-
-khtml-选取框方向:r5301 至 r13874
-
-khtml-选取框-增量:r5301 至 r13874
-
-khtml-选取框-重复:r5301 至 r13874
-
-khtml-选取框速度:r5301 至 r13874
-
-khtml 选取框样式:r5301 至 r13874
-
-khtml-match-nearest-mail-blockquote-color:r8642 至 r13874
-
-khtml-nbsp-模式:r7763 至 r13874
-
-khtml-不透明度:r4704 至 r5340*
-
-khtml-填充-开始:r7708 至 r13874
-
-khtml-rtl-排序:r12027 至 r13874
-
-khtml-text-decorations-in-effect:r8466 至 r13874
-
-khtml-文本大小调整:r9101 至 r13874
-
-khtml-用户拖动:r6728 至 r13874
-
-khtml-用户修改:r5970 至 r13874
-
-khtml-用户选择:r6728 至 r13874
-
-khtml-垂直边框间距:r5200 至 r5212
*虽然已被弃用,-khtml-opacity
-然后-webkit-opacity
—直到 CSSProperties.in 引入对别名的支持之前,解析器一直很荣幸r85212 http://trac.webkit.org/changeset/85212,并且仍然可用-webkit-opacity
到最新版本。
几个-konq
很早的版本就支持前缀属性:
-
-konq-流模式:r4 至 r4704
-
-konq-js-剪辑:r798 至 r3695
今天的故事
自 r13874 起,WebKit CSS 解析器只是将任何旧版前缀标准化为-webkit
。本质上,所有-webkit
前缀属性与-apple
or -khtml
前缀:
// If the prefix is -apple- or -khtml-, change it to -webkit-.
// This makes the string one character longer.
if (hasPrefix(buffer, length, "-apple-") || hasPrefix(buffer, length, "-khtml-")) {
memmove(buffer + 7, buffer + 6, length + 1 - 6);
memcpy(buffer, "-webkit", 7);
++length;
}
(这也解释了为什么你不能在document.body.style
- 这些属性已被解析器替换为相应的-webkit
财产。)
Peter Beverloo 建议对这些财产的支持应该是删除或逐步淘汰 https://bugs.webkit.org/show_bug.cgi?id=42093短暂的一段时间所有旧属性均已禁用 http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=63854,除了-apple-dashboard-region
and -apple-line-clamp
,但这是几天后就恢复了 http://trac.webkit.org/browser/trunk/WebCore/css/CSSParser.cpp?rev=64071由于无数的兼容性问题。在较新的修订版 http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSParser.cpp?rev=113795, 遗产-apple
and -khtml
前缀是除非使用以下内容构建,否则禁用ENABLE(LEGACY_CSS_VENDOR_PREFIXES) https://bugs.webkit.org/show_bug.cgi?id=83256。当启用此功能标志时,解析器允许上述旧行为。