モバイルデバイスでタップした時に擬似的に発生する :hover ステートを CSS 上で効かなくする
レスポンシブな HTML + CSS を書いている時、デスクトップでだけマウスカーソルのホバー時にツールチップを出したいとかあると思うんです。
こんな感じで。
<a class="link">ちょっと見て!<span class="tooltip">やっぱ見ちゃダメ</span></a>
.tooltip {
display: none;
}
.link:hover .tooltip {
display: block;
/* 位置合わせする */
}
で、モバイルデバイスには :hover ステートが無いのでツールチップは表示されません。…と思うじゃないですか。ところが、モバイルデバイスには :hover ステートは無いものの、タップ時に擬似的に :hover が発生して、他の場所をタップするまで発生したままになるんですね。なので、このままだとタップした時にツールチップが表示されそのままになっちゃうんです。ちょっと嫌ですね。
これ、簡単に抑制できます。
.tooltip {
display: none;
}
@media (hover: hover) {
.link:hover .tooltip {
display: block;
/* 位置合わせする */
}
}
メディアクエリの hover 特性を使って、実際に :hover ステートをサポートするデバイスでのみ CSS が有効なようにすればいいんですね。
分かってしまえば簡単な話なんですが、すぐに忘れそうなので自分用の備忘録に残しておきます。
Author And Source
この問題について(モバイルデバイスでタップした時に擬似的に発生する :hover ステートを CSS 上で効かなくする), 我々は、より多くの情報をここで見つけました https://qiita.com/otchy/items/f220624fdbb38edee2bf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .