7

:-moz-system-metric(touch-enabled)は、モバイル サイトで作業するための非常に便利な CSS セレクターのように見えます。

残念ながら、モバイル タッチ デバイスでは Webkit が優勢です。Webkit に相当するものがあるかどうか知っている人はいますか?

(理想的には、これが CSS3 メディア クエリによって管理されているとよいでしょう)

編集: メディアクエリとしてGeckoでサポートされているようです

4

3 に答える 3

5

現在のところ、Javascript に頼らずにこれを達成する方法はありません。

@easwee が言ったように、Modernizrは機能検出に重点を置いた定評のある JS ライブラリです。ユースケースにそのtouchテストを使用できます。

Modernizr のすべての機能が必要ない場合は、次の操作を実行できます。

<body>A) 次の JS をタグのできるだけ早い段階でロードします。

<script type="text/javascript">
if( !!window.TouchEvent ) body.className += " touch-enabled ";
</script>

B) CSS を記述します。Gecko はメディア クエリを使用してタッチが利用可能かどうかを通知するため、次のようにタッチ固有の CSS を複製する必要があります。

BODY.touch-enabled DIV.foo
{
    /* touch-specific CSS */
}

@media screen and (-moz-touch-enabled)
{
DIV.foo
{
    /* touch-specific CSS */
}

}

セレクターごとのコードが両方の状況で同一である場合、GZIP は重複の一部を最適化する必要があります。(圧縮を使用していると思います。)

于 2011-06-16T17:47:51.877 に答える
2

Ian Wessmanの回答では、テスト!!window.TouchEventは正しく機能しません。現在のデスクトップでは、Chrome(23.0.1271.52、Linux)window.TouchEventは関数であるため、Ianのコードはブラウザーがタッチ対応であると見なします。

短いコードが必要な場合は、Modernizrから関連するコードをコピーして貼り付けるのがおそらく最善です。

于 2012-10-28T10:09:12.563 に答える
1

Chromeは、同様のセレクターを実装しようとした別のブラウザーですが、残念ながら、現時点では削除されています。

Modernizrは、タッチイベントも検出できるため、興味深い検出ツールになる可能性があります。

http://www.modernizr.com/docs/#touch

于 2011-04-07T15:29:15.393 に答える