1. 導入
この節は参考(規範的でない)です。Webブラウザーが特定のベンダーCSSプロパティやDOM APIをサポートすることに依存したウェブコンテンツが、ますます増加している。
特にモバイル最適化されたウェブコンテンツでは
-webkit-
接頭辞付きプロパティへの依存度が非常に高い。
本仕様は、Web互換性のためにユーザーエージェントがサポートを要求される、他で明示的に規定されていない最小限の
-webkit-
接頭辞付きCSSプロパティおよびDOM APIについて記述することを目的とする。
主要ブラウザーで使われているHTTP User-Agent
ヘッダー・フィールドについても記述する。
2. 適合性
本仕様におけるすべての図、例、および注記は参考(規範的でない)であり、明示的に参考と記された節も同様である。 それ以外の本仕様の内容は規範的である。この文書における "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"NOT RECOMMENDED"、"MAY"、"OPTIONAL" というキーワードは、RFC 2119に記載されたとおりの意味で解釈される。 可読性のため、これらの単語は本仕様ではすべて大文字では表記されていない。 [RFC2119]
アルゴリズムの一部として命令形で表現されている要求(例えば "先頭の空白文字を除去せよ" や "false を返してこの手順を終了せよ" など)は、そのアルゴリズムの導入時に使われているキーワード("must", "should", "may" など)に従った意味として解釈される。
アルゴリズムや具体的な手順として表現された適合性要件は、その最終結果が等価である限り、どのような方法で実装してもよい。 (特に、本仕様で定義されるアルゴリズムは理解しやすさを重視しており、性能を意図したものではない。)
3. CSS互換性
3.1. CSSアットルール
以下の-webkit-
付きベンダー接頭辞付き
アットルールは、対応する非接頭辞付きアットルールのエイリアスとしてサポートされなければならない:
-webkit- 接頭辞付きアットルールのエイリアス
| 非接頭辞付きアットルール |
---|---|
@-webkit-keyframes
| @keyframes
|
3.2. CSSメディアクエリ
3.2.1.
-webkit-device-pixel-ratio
名前: | -webkit-device-pixel-ratio |
---|---|
対象: | @media |
値: | <number> |
型: | range |
-webkit-device-pixel-ratio
は
resolution
範囲型メディアフィーチャのエイリアスとして扱われ、その値は
dppx単位として解釈されなければならない。
min-
やmax-
の範囲フィーチャへの接頭辞は
-webkit-device-pixel-ratio
には適用されず、代わりに次のエイリアスが使われるべきである:
レガシー-webkit- 接頭辞付き範囲メディアフィーチャのエイリアス
| 標準接頭辞付き範囲メディアフィーチャ |
---|---|
-webkit-min-device-pixel-ratio
| min-resolution
|
-webkit-max-device-pixel-ratio
| max-resolution
|
3.2.2.
-webkit-transform-3d
名前: | -webkit-transform-3d |
---|---|
対象: | @media |
値: | <mq-boolean> |
型: | discrete |
-webkit-transform-3d
メディアフィーチャは、ユーザーエージェントがCSS 3D変形をサポートしているかどうかを判定するために使われる。[css-transforms-1]
ユーザーエージェントが3D変形をサポートしている場合、その値は1となる。サポートしていない場合は0となる。
3.3. CSSグラデーション関数
3.3.1.
-webkit-linear-gradient()
-webkit-linear-gradient()
グラデーション関数は、
linear-gradient([css3-images-20110217]で定義)
のエイリアスとして扱われなければならない。
3.3.2.
-webkit-radial-gradient()
-webkit-radial-gradient()
グラデーション関数は、
radial-gradient([css3-images-20110217]で定義)
のエイリアスとして扱われなければならない。
3.3.3.
-webkit-repeating-linear-gradient()
-webkit-repeating-linear-gradient()
グラデーション関数は、
repeating-linear-gradient([css3-images-20110217]で定義)
のエイリアスとして扱われなければならない。
3.3.4.
-webkit-repeating-radial-gradient()
-webkit-repeating-radial-gradient()
グラデーション関数は、
repeating-radial-gradient([css3-images-20110217]で定義)
のエイリアスとして扱われなければならない。
3.4. CSSプロパティ
3.4.1. レガシー名エイリアス
以下の-webkit-
ベンダー接頭辞付き
プロパティは、対応する非接頭辞付きプロパティの
レガシー名エイリアスとしてサポートされなければならない:
-webkit- 接頭辞付きプロパティのエイリアス
| 非接頭辞付きプロパティ |
---|---|
-webkit-align-items
| align-items
|
-webkit-align-content
| align-content
|
-webkit-align-self
| align-self
|
-webkit-animation-name
| animation-name
|
-webkit-animation-duration
| animation-duration
|
-webkit-animation-timing-function
| animation-timing-function
|
-webkit-animation-iteration-count
| animation-iteration-count
|
-webkit-animation-direction
| animation-direction
|
-webkit-animation-play-state
| animation-play-state
|
-webkit-animation-delay
| animation-delay
|
-webkit-animation-fill-mode
| animation-fill-mode
|
-webkit-animation
| animation
|
-webkit-backface-visibility
| backface-visibility
|
-webkit-background-clip
| background-clip
|
-webkit-background-origin
| background-origin
|
-webkit-background-size
実際にはレガシー名エイリアスではない。詳しくは issue #28を参照。 | background-size
|
-webkit-border-bottom-left-radius
| border-bottom-left-radius
|
-webkit-border-bottom-right-radius
| border-bottom-right-radius
|
-webkit-border-top-left-radius
| border-top-left-radius
|
-webkit-border-top-right-radius
| border-top-right-radius
|
-webkit-border-radius
| border-radius
|
-webkit-box-shadow
| box-shadow
|
-webkit-box-sizing
| box-sizing
|
-webkit-flex
| flex
|
-webkit-flex-basis
| flex-basis
|
-webkit-flex-direction
| flex-direction
|
-webkit-flex-flow
| flex-flow
|
-webkit-flex-grow
| flex-grow
|
-webkit-flex-shrink
| flex-shrink
|
-webkit-flex-wrap
| flex-wrap
|
-webkit-filter
| filter
|
-webkit-justify-content
| justify-content
|
-webkit-mask
| mask
|
-webkit-mask-box-image
| mask-border
|
-webkit-mask-box-image-outset
| mask-border-outset
|
-webkit-mask-box-image-repeat
| mask-border-repeat
|
-webkit-mask-box-image-slice
| mask-border-slice
|
-webkit-mask-box-image-source
| mask-border-source
|
-webkit-mask-box-image-width
| mask-border-width
|
-webkit-mask-clip
| mask-clip
|
-webkit-mask-composite
| mask-composite
|
-webkit-mask-image
| mask-image
|
-webkit-mask-origin
| mask-origin
|
-webkit-mask-position
| mask-position
|
-webkit-mask-repeat
| mask-repeat
|
-webkit-mask-size
| mask-size
|
-webkit-order
| order
|
-webkit-perspective
| perspective
|
-webkit-perspective-origin
| perspective-origin
|
-webkit-transform-origin
| transform-origin
|
-webkit-transform-style
| transform-style
|
-webkit-transform
| transform
|
-webkit-transition-delay
| transition-delay
|
-webkit-transition-duration
| transition-duration
|
-webkit-transition-property
| transition-property
|
-webkit-transition-timing-function
| transition-timing-function
|
-webkit-transition
| transition
|
3.4.2. 接頭辞付きレガシー名エイリアス
以下の-webkit-
ベンダー接頭辞付き
プロパティは、対応する非接頭辞付きプロパティの
レガシー名エイリアスとしてサポートされなければならない。
もしユーザーエージェントが非接頭辞付き等価プロパティを実装していない場合、-webkit-
接頭辞付きプロパティは
ユーザーエージェント自身のベンダー接頭辞付きプロパティのエイリアスとして扱われなければならない。
-webkit- 接頭辞付きプロパティのエイリアス
| (ベンダー接頭辞付き)プロパティ |
---|---|
-webkit-text-size-adjust
| (-prefix-)text-size-adjust
|
注記: 各プロパティが非接頭辞化された時点で レガシー名エイリアスとして定義できる。
3.4.3. 非エイリアスのベンダー接頭辞付きプロパティ
注記: この節はかつて-webkit-appearanceプロパティを規定していたが、 これは現在 CSS Basic User Interface Moduleで定義されている。
3.4.4. プロパティマッピング
以下の-webkit-
ベンダー接頭辞付き
プロパティは、対応する非接頭辞付きプロパティへのマッピングとしてサポートされなければならない:
-webkit- 接頭辞付きプロパティ
| 非接頭辞付きプロパティ |
---|---|
-webkit-box-align
| align-items
|
-webkit-box-flex
| flex-grow
|
-webkit-box-ordinal-group
| order
|
-webkit-box-orient
| flex-direction
|
-webkit-box-pack
| justify-content
|
-webkit-box-*
の定義はWeb互換性がないことが知られている。[Issue #87]
3.4.5. キーワードマッピング
以下の-webkit-
ベンダー接頭辞付き
キーワードは、対応する非接頭辞付きキーワードへのマッピングとしてサポートされなければならない:
-webkit- 接頭辞付きキーワード
| 非接頭辞付きプロパティキーワード |
---|---|
-webkit-box
| flex
|
-webkit-flex
| flex
|
-webkit-inline-box
| inline-flex
|
-webkit-inline-flex
| inline-flex
|
-webkit-box
の定義はWeb互換性がないことが知られている。[Issue
#87]
3.4.6. テキスト塗りつぶしとストローク
3.4.6.1.
前景テキスト色:
-webkit-text-fill-color
プロパティ
名前: | -webkit-text-fill-color |
---|---|
値: | <color> |
初期値: | currentcolor |
適用対象: | すべての要素 |
継承: | yes |
百分率: | N/A |
算出値: | RGBA色 |
正規順序: | 文法に従う |
アニメーション型: | 算出値型ごと |
メディア: | visual |
-webkit-text-fill-colorプロパティは、要素のテキスト内容の前景 塗りつぶし色を定義する。
-webkit-text-fill-color
が常に要素のテキストの前景塗りつぶし色を決定することを示す例である。
.one{ color : blue; /* 次は初期値なので省略可: -webkit-text-fill-color: currentcolor; */ } .two{ color : red; -webkit-text-fill-color : blue; }
one
または two
クラスを持つ要素のテキストは青色になる。
3.4.6.2.
テキストストローク色:
-webkit-text-stroke-color
プロパティ
名前: | -webkit-text-stroke-color |
---|---|
値: | <color> |
初期値: | currentcolor |
適用対象: | すべての要素 |
継承: | yes |
百分率: | N/A |
算出値: | RGBA色 |
正規順序: | 文法に従う |
アニメーション型: | 算出値型ごと |
メディア: | visual |
-webkit-text-stroke-colorプロパティは、要素のテキストに対してストローク色を指定する。
3.4.6.3.
テキストストロークの太さ:
-webkit-text-stroke-width
プロパティ
名前: | -webkit-text-stroke-width |
---|---|
値: | <line-width> |
初期値: | 0 |
適用対象: | すべての要素 |
継承: | yes |
百分率: | N/A |
算出値: | 絶対長さ |
正規順序: | 文法に従う |
アニメーション型: | discrete |
メディア: | visual |
-webkit-text-stroke-widthプロパティは、要素の各グリフの縁に描画されるストロークの幅を指定する。値が0の場合はストロークは描画されない。負の値は無効である。
3.4.6.4.
テキストストロークのショートハンド:
-webkit-text-stroke
プロパティ
名前: | -webkit-text-stroke |
---|---|
値: | <line-width> || <color> |
初期値: | 各プロパティを参照 |
適用対象: | 各プロパティを参照 |
継承: | yes |
百分率: | N/A |
算出値: | 各プロパティを参照 |
正規順序: | 文法に従う |
アニメーション型: | 各プロパティを参照 |
メディア: | visual |
-webkit-text-strokeプロパティは、 -webkit-text-stroke-widthおよび -webkit-text-stroke-color プロパティのショートハンドであり、要素テキストのストロークの幅と ストローク色を設定できる。
-webkit-text-stroke
プロパティを使って、白いテキストに黒いストロークを適用する例である。
.stroked-text-longhand{ color : #fff; -webkit-text-stroke-color : #000; -webkit-text-stroke-width : 1 px ; } .stroked-text-shorthand{ -webkit-text-fill-color : #fff; -webkit-text-stroke : thin #000; }
次のような要素
<p class="stroked-text-longhand">Serious typography</p>は 以下のように描画される:
3.5. CSSプロパティ値
3.5.1. 追加のtouch-action
値
この節は
touch-action
の定義([pointerevents2])
を拡張し、pinch-zoom
値を追加する。
名前: | touch-action |
---|---|
値: | auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation |
初期値: | auto |
適用対象: | すべての要素(ただし、非置換インライン要素、表の行・行グループ・列・列グループを除く) |
継承: | no |
百分率: | N/A |
算出値: | 指定値と同じ |
正規順序: | 文法に従う |
アニメーション型: | アニメーション不可 |
メディア: | visual |
pinch-zoom
トークンを指定すると、ページのマルチフィンガーパンおよびズームが有効になる。ズーム動作を行うには、すべての指が
pinch-zoom動作を有効にした要素(pinch-zoom
、manipulation
、または
auto
値が自身または先祖に指定されている)上で始まる必要がある。
touch-action: pan-y pinch-zoom
"
を使うことでズームを不要に無効化せずに済む。manipulation
は"pan-x pan-y pinch-zoom
"のエイリアスである。
4. DOM互換性
4.1. WebKitCSSMatrixインターフェース
注記: WebKitCSSMatrix
は現在DOM Geometry仕様で定義されている。[geometry-1]。
4.2.
window.orientation
API
partial interface Window {readonly attribute short orientation ;attribute EventHandler ; };
onorientationchange partial interface HTMLBodyElement {attribute EventHandler ; };
onorientationchange
orientation
属性を取得するとき、ユーザーエージェントは次の手順を実行しなければならない:
-
documentをthisの関連グローバルオブジェクトの関連付けられたDocumentとする。
-
documentの現在の
window.orientation
角度を返す。
ビューポートがデバイスの自然な向きと異なる角度で描画されるたびに、ユーザーエージェントは次の手順を実行しなければならない:
-
イベントを発火する名前は
orientationchange
とし、 アクティブなドキュメント のWindow
オブジェクトで発火する。
window.orientation
属性および関連するorientationchangeイベントを実装するユーザーエージェントは、非モバイルプラットフォーム上でそれらを公開してはならない。
orientationchange
イベントを
body
要素でも発火するが、他の実装はそうでなく、Web互換性のために必須ではないことを示唆している。
4.2.1.
window.orientation
角度
window.orientation
角度として可能な整数値は、-90
、0
、90
、180
である。ユーザーエージェントは-90
、0
、90
値をサポートし、180
は任意でサポートしてもよい。
0
は自然な向きを表す。-90
は自然な向きから時計回りに90度回転した状態。90
は自然な向きから反時計回りに90度回転した状態。180
は自然な向きから180度回転した状態。
現在のwindow.orientation
角度を決定するために、ユーザーエージェントは次の手順を実行しなければならない:
-
orientationAngleを現在のオリエンテーション角度とする。
- orientationAngleが180未満なら、orientationAngleを返す。
- orientationAngleが180で、ユーザーエージェント がその値をサポートする場合、orientationAngleを返し、そうでなければ0を返す。
- orientationAngleが180より大きければ、orientationAngle - 360 を返す。
4.2.2. Window
オブジェクトおよび
body
要素上のイベントハンドラ
body
すべてのWindow
オブジェクトおよび
要素に、属性としてサポートされなければならないイベントハンドラと対応するイベントハンドライベント型は以下のとおりである:
body
イベントハンドラ | イベントハンドライベント型 |
---|---|
|
orientationchange
|
5. ユーザーエージェント文字列
User-Agent
ヘッダーフィールドの構文は[HTTP-SEMANTICS]で正式に定義されており、その値に関してSHOULDレベルの指針が示されている。本節は、いわゆる主要なウェブブラウザーで見られるUser-Agent
パターンの記述的な記録として機能し、多くは同系統(フォークや組み込みなど)やUser-Agent
ヘッダーを送信するより一般的な意味でのユーザーエージェントにも適用される。
5.1. ユーザーエージェントトークン
ユーザーエージェントトークンは、User-Agent
文字列内の意味的な単位を抽象化した文字列である。本書ではトークンを、「<」で始まり「>」で終わる文字列(例:<version>
)として形式化する。トークンは他のトークンを含むこともできる。
ユーザーエージェント定数とは、値が変化しない文字列である。
トークンの値が1つ以上のトークンおよびオプションで定数から構成される場合、それはそれらのトークンと定数に分解されるという。
5.1.1. ユーザーエージェントトークンリファレンス
これは一般的なユーザーエージェントトークンの非網羅的なリストである。
トークン | 説明 |
---|---|
<deviceCompat>
| デバイスのフォームファクターを表す。主に「Mobile 」またはデスクトップや非モバイルデバイスでは空文字列。ブラウザーによっては「Tablet 」「TV 」「Mobile VR 」等やビルド情報を含む場合もある。
|
<majorVersion>
| ブラウザーのメジャーバージョン番号を表す。 |
<minorVersion>
| ブラウザーのメジャーでないバージョン番号を表す。 |
<oscpu>
| デバイスのオペレーティングシステムおよび(オプションで)CPUアーキテクチャを表す。 |
<platform>
| 基盤となるデバイスのプラットフォームを表す。 |
5.2. メタ構造
以下に示すユーザーエージェント文字列は共通のメタ構造を持つ:
"Mozilla/5.0
(a
) b
"
ここでa
はデバイス情報を表す1つ以上のトークン、b
はブラウザー情報を表す1つ以上のトークンである。
5.3. Chrome
5.3.1. Chromeユーザーエージェントパターン
"Mozilla/5.0 (<unifiedPlatform>)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.0.0.0
<deviceCompat>Safari/537.36
"
Mozilla/5.0 (Macintosh;
Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/110.0.0.0 Safari/537.36
"
モバイル: "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/110.0.0.0 Mobile
Safari/537.36
"
5.3.2. Chrome固有トークン
トークン | 説明 |
---|---|
<unifiedPlatform>
|
プラットフォームごとの定数で、次のいずれかの値となる:
" |
5.4. Firefox
5.4.1. Firefoxユーザーエージェントパターン
"Mozilla/5.0 (<firefoxPlatform>; rv: <firefoxVersion>) Gecko/<geckoVersion>
Firefox/<firefoxVersion>
"
Mozilla/5.0 (Windows NT 10.0;
Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
"
モバイル: "Mozilla/5.0 (Android 10; Mobile;
rv:100.0) Gecko/100.0 Firefox/100.0
"
5.4.2. Firefox固有トークン
<firefoxVersion>
は次のように分解される:
"<majorVersion>.0
"
デスクトッププラットフォーム(Windows, macOS, Linux等)では
<geckoVersion>
は固定のビルド日 "20100101
"。Firefox for Android では
<geckoVersion>
は
<firefoxVersion>
と同じ値。
<firefoxPlatform>
は次のように分解される:
デスクトッププラットフォームでは
"<platform>; <oscpu>
"。
Firefox for Android では
"<platform>; <deviceCompat>
"。
トークン | 説明 |
---|---|
<deviceCompat>
| 「Mobile 」という文字列(前後の空白なし)。
|
5.5. Safari
5.5.1. Safariユーザーエージェントパターン
"Mozilla/5.0 (<safariPlatform>) AppleWebKit/605.1.15 (KHTML, like Gecko)
Version/<safariVersion> <deviceCompat> Safari/<webkitVersion>
"
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15
(KHTML, like Gecko) Version/15.6 Safari/605.1.15
"
モバイル: "Mozilla/5.0 (iPhone; CPU iPhone OS
15_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)
Version/15.6 Mobile/15E148 Safari/604.1"
5.5.2. Safari固有トークン
<safariVersion>
は次のように分解される:
"<majorVersion>.<minorVersion>
"
ここで
<minorVersion>
は1桁の数字である。
<safariPlatform>
は次のように分解される:
デスクトップおよび大きなiPadフォームファクターでは、定数
「Macintosh; Intel Mac OS X 10_15_7
」。
モバイルプラットフォーム(小型iPad含む)では
"<appleProduct>; CPU <mobileOSName> <iOSVersion> like Mac OS X
"。
トークン | 説明 |
---|---|
<appleProduct>
| モバイルデバイスのマーケティング製品名。「iPad 」「iPhone 」「iPod 」のいずれか。
|
<iOSVersion>
| iOSバージョン番号(歴史的な互換性のためアンダースコア区切り、 参照)。 |
<mobileOSName>
| 定数で、2つの値のいずれか:「OS 」(iPad系デバイス用)または
「iPhone OS 」(非iPad系デバイス用)。
|
<webkitVersion>
| 定数で、2つの値のいずれか:「605.1.15 」(大型デバイス、非mini
iPad含む)または「604.1 」(小型モバイルデバイス、iPad mini含む)。
|
謝辞
Alan Cutter、Cameron McCormack、Chris Rebert、Chun-Min (Jeremy) Chen、Daniel Holbert、David Håsäther、Domenic Denicola、Eric Portis、hexalys、Jean-Yves Perrier、Jacob Rossi、Karl Dubost、Philip Jägenstedt、Rick Byers、Simon Pieters、Stanley Stuart、William Chen および Your Name Here 各氏に本標準へのフィードバックと貢献に感謝します。ScreenOrientation
インターフェースの定義にMounir
Lamouri氏とMarcos Cáceres氏にも感謝します。
[screen-orientation]
本仕様の多くの内容の初期説明を提供したApple社およびWebKit.orgブログの著者にも特別な謝意を表します。
本標準はMike Taylor (Google、 miketaylr@google.com)によって執筆されています。
知的財産権
Copyright © WHATWG (Apple, Google, Mozilla, Microsoft). この成果物はCreative Commons Attribution 4.0 International Licenseの下でライセンスされています。一部がソースコードに組み込まれている場合、当該部分はBSD 3-Clause Licenseの下でライセンスされます。
これは現行標準です。 特許レビュー版を閲覧したい場合は 現行標準レビュードラフト を参照してください。