【问题标题】:click on mobile/tablet, hover on other devices (future-proofing)单击手机/平板电脑,将鼠标悬停在其他设备上(面向未来)
【发布时间】:2014-08-29 07:18:53
【问题描述】:

需要一个想法,我陷入了一个难题。我正在构建一个响应式的未来证明网页设计。

在台式机和类似设备上:我有一个菜单,在悬停时会显示 CSS 动画来显示隐藏在链接后面的内容的描述,并在点击时导航到新页面。

在移动设备上:我希望有一个触发悬停的触摸事件(从而显示描述),然后在触摸 2 时它应该导航到新页面。

以上是可行的,但是如何在不检查用户代理的情况下做到这一点,这是我的情况。如何对上述内容进行未来验证。

欢迎任何伟大的想法。 :)

【问题讨论】:

  • 你可以只测试宽度。如果低于 600,请将 isMobile 设置为 true 并使用该变量来测试屏幕宽度。虽然为什么没有用户代理?您是否在前端公开敏感数据?你为什么在乎?
  • 嗅探用户代理并继续下一个项目。遗憾的是,除非是纯 html,否则没有真正的未来证明。即便如此……
  • 检查用户代理在未来将是一个问题,原因很明显,因此我希望避免它并且检查屏幕也是一个问题,因为那里有大量奇怪尺寸的触摸设备.我想如果我可以检查它是否是支持触摸的设备,我会解决我的问题。
  • 很抱歉,但从用户体验的角度来看,这是一个可怕的想法。用户不必多次触摸链接即可导航到新页面。
  • 你是否同意我的用户体验决定并不是真正的问题,也几乎不相关:)

标签: javascript jquery css mobile responsive-design


【解决方案1】:

使用 Javascript 在touchstart/touchend 事件上添加一个类。浏览器不会发出这些事件:

Javascript:

document.querySelector("#myMenu").addEventListener("touchstart", function() {
    this.classList.add("mobileHovered ");
});
document.querySelector("#myMenu").addEventListener("touchend", function() {
    this.classList.remove("mobileHovered");
});

CSS:

#myMenu:hover,
#myMenu.mobileHovered {
    /* CSS styles */
}

【讨论】:

  • 完美而简单的解决方案,现在我怎么没想到呢? :) 谢谢分配 :)
猜你喜欢
  • 2012-11-29
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多