序章
問題はあなたが思うほど単純ではありません。サポートされているCSSプロパティの「公式」リストのリビジョンを比較し、それらが導入または廃止されたリビジョンを判別するのは簡単です。ただし、レガシープレフィックスの使用のサポートは、CSSパーサー実装によるそれらの処理方法によっても決定されます。したがって、タイムラインと以下のレガシープレフィックスプロパティの完全なリストの両方を参照して、特定のWebKitリビジョンでサポートがどのように処理されるかを判断する必要があります。
レガシープロパティのサポートに関連するパーサーの変更のタイムライン
導入/廃止されたレガシープロパティとリビジョンのリスト
以下のリストは、サポートされているプロパティのリストのコミット履歴から収集されたものです。最初の番号は、このプロパティのサポートがリストに追加されたリビジョンです。2つ目は、削除されたリビジョンです。完全に削除されるのではなく、名前が変更されるプロパティは区別されません。
r13874で削除されたプロパティは、プレフィックスの下でしばらく存続していたため-webkit
、パーサーによる処理方法によっては、レガシープレフィックスが引き続き機能する可能性があります。(詳細については、上記のタイムラインを参照してください。)
- -apple-dashboard-region: r7588からr9101
- -アップルラインクランプ: r6391からr9101
- -apple-text-size-adjust: r6805からr9101
- -khtml-外観: r9828からr13874
- -khtml-バインディング: r5967からr13874
- -khtml-border-horizontal-spacing: r5212からr13874
- -khtml-border-vertical-spacing: r5212からr13874
- -khtml-box-align: r4704からr13874
- -khtml-box-direction: 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-dashboard-region: r9101からr13874
- -khtml-flow-mode: r4704からr8041
- -khtml-font-size-delta: r8382からr13874
- -khtml-horizontal-border-spacing: r5200からr5212
- -khtml-改行: r7763からr13874
- -khtml-line-clamp: r9101からr13874
- -khtml-margin-bottom-collapse: r7362からr13874
- -khtml-margin-collapse: r7362からr13874
- -khtml-margin-start: r7708からr13874
- -khtml-margin-top-collapse: r7362からr13874
- -khtml-マーキー: r5301からr13874
- -khtml-marquee-direction: r5301からr13874
- -khtml-marquee-増分: r5301からr13874
- -khtml-marquee-繰り返し: r5301からr13874
- -khtml-marquee-speed: r5301からr13874
- -khtml-marquee-style: r5301からr13874
- -khtml-match-nearest-mail-blockquote-color: r8642からr13874
- -khtml-nbsp-mode: r7763からr13874
- -khtml-不透明度: r4704からr5340 *
- -khtml-padding-start: r7708からr13874
- -khtml-rtl-順序: r12027からr13874
- -khtml-text-decorations-in-effect: r8466からr13874
- -khtml-text-size-adjust: r9101からr13874
- -khtml-user-drag: r6728からr13874
- -khtml-user-modify: r5970からr13874
- -khtml-user-select: r6728からr13874
- -khtml-vertical-border-spacing: r5200からr5212
*廃止されましたが、 -khtml-opacity
CSSProperties.inがr85212-webkit-opacity
でエイリアスのサポートを導入するまで、パーサーによって尊重され、最新のリビジョンに関しては引き続き利用可能です。-webkit-opacity
-konq
非常に初期のリビジョンでは、いくつかのプレフィックス付きプロパティがサポートされていました。
- -konq-flow-mode: r4からr4704
- -konq-js-clip: 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は、これらのプロパティのサポートを削除または段階的に廃止することを提案しました。とを除いて、すべてのレガシープロパティが一時的に無効になりましたが、互換性の問題が無数にあるため、これは数日後に元に戻されました。新しいリビジョンでは、でビルドされない限り、レガシーとプレフィックスは無効になります。この機能フラグが有効になっている場合、パーサーは上記の古い動作を許可します。-apple-dashboard-region
-apple-line-clamp
-apple
-khtml
ENABLE(LEGACY_CSS_VENDOR_PREFIXES)