【问题标题】:HTML menu behavior on smartphones智能手机上的 HTML 菜单行为
【发布时间】:2013-01-29 18:29:08
【问题描述】:

目前正在尝试制作一个响应智能手机和平板电脑的网站。我在网站的菜单上遇到了一些麻烦。菜单基本上是一个像这样的无序列表:

<ul class="navigation">
    <li><a href="page1.html">Page1</a></li>
    <li><a href="page2.html">Page2</a></li>
    <li>
        <a href="page3.html">Page3</a>
        <!-- Dropdown menu -->
        <ul class="subnav">
            <li><a href="page4.html">Page4</a></li>
        </ul>
    </li>      
</ul>

内部无序列表是当用户悬停page3.html 链接时出现的下拉菜单。

在手机和平​​板电脑上,我希望菜单像手风琴一样,所以当用户触摸page3.html 链接时,subnav 列表会出现并将其他列表项向下推。我只需将下拉列表设置为固定位置而不是position:absolute;,就可以在桌面上使用它。但是,在移动设备和平板电脑上,page3.html 上的触摸仍然可以作为链接使用,因此用户当然是,重定向到page3.html 而不是触发subnav 列表。

有什么方法可以在用户第一次触摸它时触发子导航列表而不触发链接? :-) 我正在尝试使用纯 CSS 解决方案,但如果需要 JS,我会很乐意使用它。

提前致谢!

【问题讨论】:

  • 我可能错了,但我认为没有任何方法可以在不诉诸 JS 的情况下阻止链接的默认行为。

标签: css html responsive-design


【解决方案1】:

有一个用 jQuery (Black Studio Touch Dropdown Menu) 编写的 Wordpress 插件,几乎可以满足您的需求。您可以查看源代码 here 并修改为独立于 Wordpress,如果这不是您正在使用的。它基本上检查设备是否是触摸屏设备,如果是,当您单击下拉菜单的父级时,它会展开它而不是单击链接。下一次,它会真正点击链接。

【讨论】:

  • 非常感谢 Nick :-) 试用了该插件,它适用于 Android (HTC Desire)、iPhone 和 iPad。然而,在诺基亚 Lumia (920) 上,它不起作用 :-( 所以必须找到解决方法。任何建议都非常受欢迎!;-)
  • @bomortensen 您可以修改black-studio-touch-dropdown-menu.js 以检查用户代理字符串中的诺基亚。所以基本上像if (navigator.userAgent.indexOf("NOKIA") !== -1) 这样你就有了诺基亚设备。您可能还应该检查 UA 字符串中的单词“Touch”。这是诺基亚用户代理字符串的参考:developer.nokia.com/Community/Wiki/…
猜你喜欢
  • 1970-01-01
  • 2013-04-02
  • 2013-12-06
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多