3

( jQuery を介して)クリックできるdivがあります$('.mydiv').click-これによりdivが展開され、2回目のクリックで折りたたまれます。

同じ div にはいくつかの CSS:hoverルールが適用されています (ホバー時に詳細情報を表示するなど) - これは PC で意図したとおりに機能します。

iOS デバイスを使用している場合、クリックが機能し、:hover疑似クラスも適用されるため、追加情報が表示されます。これはまさに私が望んでいたことです (驚くべきことに)。

ただし、:hoverCSS に疑似クラスがあるからといって、クリックしてもそれが表示されるわけではありません。

:hoverでは、状態を適用する (または適用しない) ために iOS が従う規則は何ですか? どこかに表示できるドキュメントはありますか?

ホバーの下に機能を隠したり、それらを機能させるためにタッチ固有のJavaScriptを作成したりする必要はありません。iOSがすでにその機能の一部を実行しているように見えるためです。それを横切って起こっているだけではありません!

4

1 に答える 1

4

おそらくご存じのとおり、iOS は:hoverタッチベースのインターフェイスを使用するという理由だけで疑似クラスを実際にはサポートしていません。互換性の理由から、特定の状況でマウス イベントを発生させますが、この動作は要素の:hover状態をエミュレートまたはトリガーするための最も信頼できる方法ではありません。ポインター。このテクニカルノートから:

さらに、iPhone OS の Safari ユーザーは、マウスを使用するのではなく、指で Web コンテンツを直接操作します。これにより、タッチ対応インターフェイスの新しい機会が生まれますが、ホバー状態ではうまく機能しません。たとえば、マウス ポインターを Web ページ要素の上に置いて、イベントをトリガーすることができます。マルチタッチ スクリーン上の指ではできません。このため、マウス イベントは iPhone OS の Safari でエミュレートされます。mousemoveその結果、 、mouseovermouseoutまたは CSS 疑似クラスのみに依存する要素は:hover、iPad や iPhone などのタッチスクリーン デバイスで常に期待どおりに動作するとは限りません。

とはいえ、マウス イベントは CSS のマウス ベースの UI 状態に対応しているため、ドキュメントではある程度カバーされていますが、それほど多くはありません。ここで何かを見つけました:

次の Web テクノロジは、iOS ではサポートされていません。

これ:hoverは、 がクリック可能な要素でのみサポートされていることを意味します。クリック可能なイベントは、次のように定義されています

mousemoveクリック可能な要素は、リンク、フォーム要素、イメージ マップ エリア、または、mousedownmouseup、またはonclickハンドラを持つその他の要素です。

そうは言っても、iOS で一貫した信頼性の高いユーザー エクスペリエンスを提供したい場合は、タッチ用に設計するのが最善の策です。

于 2013-06-19T10:21:56.103 に答える