javascript - 要素がない場合、iPhone で :hover を修正するにはどうすればよいですか?
6 に答える
iPhone がホバー状態を尊重するようにします。
<ul>
<li onclick="//">test</li>
<li onclick="//">test</li>
<li onclick="//">test</li>
</ul>
これは、JavaScript を使用して修正できます。次のスクリプトは、ホバーをクラスとして<li>
要素に追加します。
<script type="text/javascript">
$("li").hover(
function () {
$(this).addClass("hover");
},
function () {
$(this).removeClass("hover");
}
);
</script>
次のように、CSSli.hover
に取得した場所を追加するだけです。li:hover
これ:
ul li:hover ul{
display:block;
}
次のようになります。
ul li:hover ul,
ul li.hover ul,{
display:block;
}
jQuery ドキュメント:
http://api.jquery.com/hover/
http://api.jquery.com/addClass/
iPhoneで動作するようにdiv:hoverを処理する最良の方法を見つけました。JavaScriptを使わずに
要素を cursor: pointer
アンカータグのように機能させる
CSS
ul li { カーソル: ポインタ}
また、プルダウン メニューの外側をクリックしても、実際のリンクをクリックしない限り iPhone では閉じないことに気付くでしょう。モバイルではカーソルが表示されないため、これが私が作成したソリューションです。
CSS
本体 { カーソル: ポインター }
iPhone などには特にホバー状態はありませんが、リンクのホバー状態は、ユーザーがリンクをタップすると起動されます。通常、ダブルタップすると実際にリンクがたどられます。
おそらく HTML を再構築して、リスト アイテムだけでなく、ホバー状態のアンカーを持つようにします。JS は必要ありません。
http://blog.0100.tv/2010/05/fixing-the-hover-event-on-the-ipadiphoneipod/
//ipad and iphone fix
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
$(".menu li a").click(function(){
//we just need to attach a click event listener to provoke iPhone/iPod/iPad's hover event
//strange
});
}
スタイルに :focus と :active を追加します。
ul li ul{display:none} ul li:focus ul,ul li:active ul{display:block}