[解決済み] タッチデバイスでボタンのホバーエフェクトがベタベタしないようにする方法
質問
私は、常に表示されている前と次のボタンがあるカルーセルを作成しました。これらのボタンにはホバー状態があり、青くなります。iPadなどのタッチデバイスでは、ホバー状態がスティッキーなので、ボタンをタップした後も青いままです。私はそれを望んでいません。
-
を追加することができました。
no-hover
クラスontouchend
を各ボタンに適用し のようなCSSを作成しました。button:not(.no-hover):hover { background-color: blue; }
しかし、これではパフォーマンス的にかなりまずいでしょう。 Chromebook Pixelのようなデバイスを扱うことができます。 タッチスクリーンとマウスを正しく使うことができます。 -
を追加することができました。
touch
クラスをdocumentElement
を作成し、私のCSSを このようにhtml:not(.touch) button:hover { background-color: blue; }
しかし、これも、タッチ操作と マウス
私が望むのは、ホバー状態を削除することです。
ontouchend
. しかし、それは不可能のようです。他の要素にフォーカスしても、ホバー状態は解除されない。別の要素を手動でタップすると削除されますが、JavaScript でそれをトリガーすることはできないようです。
私が見つけた解決策はすべて不完全なようです。完璧な解決策はないのでしょうか?
解決方法は?
のこの部分は CSS メディアクエリ レベル 4 は、現在では 2018年から広く実装された の場合、これを使用することができます。
@media (hover: hover) {
button:hover {
background-color: blue;
}
}
英語では "ブラウザが適切/真/実/非エミュレートホバリングをサポートしている場合(例えば、マウスのような主要入力デバイスを持っている場合)、次の場合にこのスタイルを適用します。
button
の上にカーソルを置くと、""
これが実装されていない(あるいはこの元回答の時点では実装されていなかった)ブラウザの場合。 ポリフィルを書きました に対応するためです。これを使うと、上記の未来的なCSSを変形させることができます。
html.my-true-hover button:hover {
background-color: blue;
}
(のバリエーションです。
.no-touch
テクニック) そして、ホバリングのサポートを検出する同じポリフィルのクライアントサイドのJavaScriptを使用することで、ホバリングのサポートがあるかどうかを切り換えることができます。
my-true-hover
クラスは、それに応じて
$(document).on('mq4hsChange', function (e) {
$(document.documentElement).toggleClass('my-true-hover', e.trueHover);
});
関連
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
Vueでルートネスティングを実装する例
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] CSS 100% height と padding/margin の関係
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
要素ツリー制御によるvueTreeテーブル
-
vue ディレクティブ v-html と v-text
-
vueの補間表現とv-textディレクティブの違いについて
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
[解決済み】タッチデバイスで:hoverのCSSスタイルを削除/無視する方法
-
[解決済み] jQueryでIFのホバーオーバーを検出する
-
[解決済み] デバイスがタッチスクリーンかどうかを検出するためのメディアクエリ