0

現時点では、次の問題が発生しています。最初に何かをタップすると、:hover 状態がトリガーされ、実際に要素をクリックするために 2 回目のタップが必要になります。私が見つけた修正は、一部の要素のみを対象としており、1 年以上前に提供されていました。この問題を普遍的に修正できる最近の何かが発生したのではないかと思いましたか? ユーザーがタッチデバイスを使用している場合、すべての :hover ルールを一度に削除できますか?

4

3 に答える 3

0

これは、あなたが求めているものに少し近いものです。解析された CSS からホバー スタイルを削除します。

iOS:ホバー修正

// disable :hover on touch devices
// based on https://gist.github.com/4404503 
// via https://twitter.com/javan/status/284873379062890496
// + https://twitter.com/pennig/status/285790598642946048
// re http://retrogamecrunch.com/tmp/hover
if ('createTouch' in document)
{
    try
    {
        var ignore = /:hover/;
        for (var i=0; i<document.styleSheets.length; i++)
        {
            var sheet = document.styleSheets[i];
            for (var j=sheet.cssRules.length-1; j>=0; j--)
            {
                var rule = sheet.cssRules[j];
                if (rule.type === CSSRule.STYLE_RULE && ignore.test(rule.selectorText))
                {
                    sheet.deleteRule(j);
                }
            }
        }
    }
    catch(e){}
}
于 2013-09-07T05:49:34.133 に答える
0

:hover が起こっていることは確かですか? 多くの場合、CSS ルールがオンになります

:hover, :focus

またはそのようなもの。:hover はタッチ デバイスではまったく発生しないはずですが、リンクがタッチされると :focus が発生します。ホバーとフォーカスのルールを互いに切り離すことができます。または、modernizr を使用して、body 要素で作成されるクラスに対してタッチ サポートとスタイルを検出することもできます。

于 2013-05-01T20:31:43.560 に答える