我还是移动/流畅/响应式游戏的新手,并且在此站点上的子菜单上有问题:http ://www.medowsconstruction.com/
移动设备上的点击应该自动替换 :hover 功能,对吗?似乎是标准基金会主题的情况。
我没有更改框架的那些移动特定区域中的任何内容,那么我做了什么来搞砸它并导致子菜单无法在 iPad / touch 上显示?
谢谢你的帮助
我还是移动/流畅/响应式游戏的新手,并且在此站点上的子菜单上有问题:http ://www.medowsconstruction.com/
移动设备上的点击应该自动替换 :hover 功能,对吗?似乎是标准基金会主题的情况。
我没有更改框架的那些移动特定区域中的任何内容,那么我做了什么来搞砸它并导致子菜单无法在 iPad / touch 上显示?
谢谢你的帮助
似乎问题在于这不是一个标准的纯 CSS 下拉菜单,正如人们所假设的那样。相反,它由 jQuery 控制。您可以在 app.js 文件中看到它:
$('.nav-bar>li.has-flyout').hover(function() {
$(this).children('.flyout').show();
}, function() {
$(this).children('.flyout').hide();
});
因此,您应该修改脚本以便对选定的设备进行触摸操作(此处对此主题进行了很好的讨论)。这里我使用一个简单的语句。我无法在 iPad 上对其进行测试,但如果您尝试使用类似(untested!)之类的东西,您可能会得到很好的结果:
if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
$('.nav-bar>li.has-flyout').bind('touch', function() {
$(this).children('.flyout').slideToggle();
});
} else {
$('.nav-bar>li.has-flyout').hover(function() {
$(this).children('.flyout').show();
}, function() {
$(this).children('.flyout').hide();
});
}
这应该会给你一些关于如何处理的线索。让我们知道它是否有效。
在这个stackoverflow 讨论中也有很多关于悬停和触摸设备的信息。
感谢@hernan 让我在事情上朝着正确的方向前进。
我最终通过将 Foundation 代码与他的代码与一些更好的选择器混合来修复它。这是我登陆的:
if (navigator.userAgent.match(Modernizr.touch || navigator.userAgent.match(/Windows Phone/i))) {
$('.nav-bar>li.has-flyout').on('click.fndtn touchstart.fndtn', function(e) {
e.preventDefault();
var flyout = $(this).children('.flyout').first();
if (lockNavBar === false) {
$('.nav-bar .flyout').not(flyout).slideUp(500);
flyout.slideToggle(500, function(){
lockNavBar = false;
});
}
else
{
flyout.slideToggle(500);
}
});
我肯定会检查你提到的那两个链接/讨论,hernan。
再次感谢-