CSS
フィーチャクエリ
サーチ…
構文
- @supports [条件] {/ *適用するCSSルール* /}
パラメーター
パラメータ | 詳細 |
---|---|
(property: value) | ブラウザがCSSルールを処理できる場合はtrueを評価します。ルールの周りのかっこが必要です。 |
and | 前の条件と次の条件の両方が真である場合にのみ真を返します。 |
not | 次の条件を否定します。 |
or | 前の条件または次の条件が真であれば真を返します。 |
(...) | グループ条件 |
備考
@supports
を使用した機能の検出は、Edge、Chrome、Firefox、Opera、Safari 9 @supports
でサポートされています。
基本的な@サポートの使用
@supports (display: flex) {
/* Flexbox is available, so use it */
.my-container {
display: flex;
}
}
構文に関して、 @supports
は@media
と非常に似ていますが、画面のサイズと向きを検出する代わりに、 @supports
はブラウザが特定のCSSルールを処理できるかどうかを検出します。
@supports (flex)
ようなものではなく、ルールが@supports (display: flex)
ことに注意してください。
機能検出の連鎖
一度に複数のフィーチャを検出するには、 and
演算子を使用します。
@supports (transform: translateZ(1px)) and (transform-style: preserve-3d) and (perspective: 1px) {
/* Probably do some fancy 3d stuff here */
}
また、 or
演算子とnot
演算子もあります。
@supports (display: flex) or (display: table-cell) {
/* Will be used if the browser supports flexbox or display: table-cell */
}
@supports not (-webkit-transform: translate(0, 0, 0)) {
/* Will *not* be used if the browser supports -webkit-transform: translate(...) */
}
究極の@supports
エクスペリエンスを得るには、括弧で論理式をグループ化してみてください。
@supports ((display: block) and (zoom: 1)) or ((display: flex) and (not (display: table-cell))) or (transform: translateX(1px)) {
/* ... */
}
これは、ブラウザ
-
display: block
をサポートdisplay: block
ANDzoom: 1
、または -
display: flex
をサポートしdisplay: flex
AND NOTdisplay: table-cell
、または -
transform: translateX(1px)
をサポートしています。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow