更改:悬停触摸/单击移动设备

Dan*_*Boy 60 css css-animations

我环顾四周但却找不到我想要的东西.

我目前在我的页面上有一个css动画,由以下内容触发:hover.当页面调整为使用媒体查询超过宽度700px时,我希望将其更改为"单击"或"触摸".

这就是我现在所拥有的:http://jsfiddle.net/danieljoseph/3p6Kz/

正如您所看到的,:hover将无法在移动设备上运行,但我仍然希望确保它只是通过单击而不是悬停来以相同的方式工作.

如果可能的话我宁愿使用css但也对JQuery感到满意.

我有一种感觉,这很容易做到,但我只是遗漏了一些非常明显的东西!任何帮助,将不胜感激.

这是css动画:

.info-slide {
  position:absolute;
  bottom:0;
  float:left;
  width:100%;
  background:url(../images/blue-back.png);
  height:60px;
  cursor:pointer;
  overflow:hidden;
  text-align:center;
  transition: height .4s ease-in-out;
  -webkit-transition: height .4s ease-in-out;
  -moz-transition: height .4s ease-in-out;
}

.info-slide:hover {
  height:300px;
}
Run Code Online (Sandbox Code Playgroud)

LOT*_*SMS 70

如果你使用:主动选择器与:hover你可以根据w3schools实现这一点,只要在:hover选择器之后调用:active选择器.

 .info-slide:hover, .info-slide:active{
   height:300px;
 }
Run Code Online (Sandbox Code Playgroud)

您必须在移动环境中测试FIDDLE.我现在不能.
更正 - 我刚刚在手机上测试过,它运行正常

  • w3schools不是最好的资源,因此我想引用https://developer.mozilla.org/en-US/docs/Web/CSS/%3Aactive (17认同)
  • 嗯...抱歉?大声笑.是的,当我发布这个时,微软的优势还没出现......我想 (7认同)
  • 这在支持触摸的Windows 10笔记本电脑上的Microsoft Edge上不起作用. (2认同)
  • 这似乎不适用于移动 Safari。下面带有 onclick="" 的答案可以解决问题! (2认同)
  • 这一切都非常好,直到用户再次点击按钮关闭它,除非用户点击按钮外的任何地方,否则它将不会关闭.尝试Chrome开发工具响应视图,您可以在其中使用触摸模拟器.如果它可以在纯CSS中以某种方式完成,那么按下按钮会关闭它,现在这将是非常棒的! (2认同)

Min*_*ger 17

您可以添加onclick=""到悬停元素.哈弗将在那之后工作.

编辑:但你真的不应该添加任何与你的标记相关的样式,只是作为替代发布.

  • 更新2019年:不推荐使用onclick =“” (2认同)

Rya*_*ker 12

在大多数设备上,其他答案都有效。对我来说,为了确保它在每个设备上都能工作(在反应中),我必须将其包装在锚标记中<a>并添加以下内容: :hover:focus:active(按此顺序)以及role="button"tabIndex="0"

  • “tabIndex”为我做到了,非常感谢! (2认同)

ind*_*lic 9

document.addEventListener("touchstart", function() {}, true);
Run Code Online (Sandbox Code Playgroud)

此代码段将为触摸屏启用悬停效果

  • 我认为这值得更多解释。 (12认同)

小智 5

在带有Microsoft Edge浏览器的移动设备中,我也遇到了同样的麻烦。我可以使用解决此问题aria-haspopup="true"。对于其他移动浏览器,它需要添加到div和:hover,中。:active:focus

范例html:

<div class="left_bar" aria-haspopup="true">
Run Code Online (Sandbox Code Playgroud)

CSS:

.left_bar:hover, .left_bar:focus, .left_bar:active{
    left: 0%;
    }
Run Code Online (Sandbox Code Playgroud)