我经常在使用 iPad 时点击网站上的按钮,而 iOS 所做的实际上是切换了设计师创建的 :hover 状态,这只是一个实际的 :hover 事件。我制作了一个网站,该网站正遭受这种毫无意义的行为。例如,您可以单击不离开页面的按钮,但在 iOS 中,它将永久显示该按钮的悬停状态。如何优雅地消除这种不明智的行为?
问问题
989 次
2 回答
0
这将需要一些 javascript,但这是我能想到的最佳解决方案。
基本上,您将覆盖默认样式,然后切换一个类而不是依赖悬停事件。
我想说这个解决方案非常简单,并且允许用户既可以单击顶级链接又可以展开/折叠链接
的HTML
<ul>
<li><a href="some-url">link name <span></span></a>
<ul>
<li><a href="some-url">link name</a></li>
</ul>
</li>
<li><a href="some-url">link name <span></span></a></li>
<li><a href="some-url">link name <span></span></a></li>
</ul>
CSS
li{width:200px;}
li a span{
display:inline-block;
height:10px;
width:10px;
background:#000;
float:right;
}
/* Standard menu system */
li ul{display:none}
li:hover ul {display:block}
/* Override for ios */
/* Needs to be inside some media query */
/* Something like @media(max-width:497px) */
li:hover ul{display:none;}
li.hovered ul{display:block}
Javascript (jquery)
$('nav li a span').click(function (e) {
e.preventDefault();
$('nav li').not($(e.target).parents('li')).removeClass('hovered');
$(e.target).parent('a').parent('li').toggleClass('hovered');
})
工作 JsFiddle
于 2013-07-26T19:09:50.980 回答
0
例如,通过添加新的 CSS 文件并为最大宽度设备使用条件注释,然后在这些新的 CSS 文件中重置悬停状态......
苹果手机
<link media="only screen and (max-device-width: 480px)" rel="stylesheet" href="css/iphone.css" type="text/css" title="no title"/>
iPad
<link media="only screen and (device-width: 768px)" rel="stylesheet" href="css/ipad.css" type="text/css" title="no title"/>
然后只需调整为这些设备输出的 css 内容。
于 2012-05-14T14:41:07.953 回答