html - IE10 css Hover 不适用于触摸设备

标签 html css menu touch internet-explorer-10

您好,我的页面上有一个简单的 css 悬停菜单,但在使用触摸设备时它似乎无法在 IE10 上运行。

这个问题有什么解决办法吗?

样本:http://jsfiddle.net/Z8Q8T/

HTML:

<ul class="Menu">
  <li>
    <a href="javascript:void(0);">First</a>
    <ul>
      <li>
        <a href="#1" class="Active">1</a>
      </li>
      <li>
        <a href="#2">2</a>
      </li>
      <li>
        <a href="#3">3</a>
      </li>
      <li>
        <a href="#4">4</a>
      </li>
    </ul>
  </li>
  <li>
    <a href="javascript:void(0);">Second</a>
    <ul>
      <li>
        <a href="#5">5</a>
      </li>
      <li>
        <a href="#6">6</a>
      </li>
      <li>
        <a href="#7">7</a>
      </li>
      <li>
        <a href="#8">8</a>
      </li>
    </ul>
  </li>
</ul>

CSS:

.Menu, .Menu ul {
    list-style: none;
    display: block;
    margin: 0;
}
.Menu > li {
    float: left;
    padding-bottom: 1px;
    margin: 0 10px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    text-transform: uppercase;
}
.Menu > li:hover, .Menu > li:active {
    position: relative;
}
.Menu li a {
    display: block;
    color: #000000;
    text-decoration: none;
}
.Menu > li > a {
    border-bottom-style: solid;
    border-bottom-width: 3px;
    border-bottom-color: transparent;
}
.Menu > li > a:hover, .Menu > li > a:active {
    border-bottom-color: #A9A9A9;
}
.Menu li > ul {
    margin-top: 0px;
    /* to ensure that we dont leave the ul and the hovering effect stops */
    border-radius: 0 0 3px 3px;
    -o-border-radius: 0 0 3px 3px;
    -ms-border-radius: 0 0 3px 3px;
    box-shadow: 0px 0px 3px #888;
    padding: 0px 2px 2px 2px;
    background-color: White;
    position: absolute;
    left: -4000px;
    /* Hack to fix animation */
    min-width: 100%;
    opacity: 0;
    transition: opacity 0.2s linear;
    -webkit-transition: opacity 0.2s linear;
    -moz-transition: opacity 0.2s linear;
}
.Menu li:hover > ul, .Menu li a:active + ul {
    left: -4px;
    z-index: 100;
    opacity: 1;
}
.Menu li ul > li {
    border-left-style: solid;
    border-left-width: 3px;
    border-left-color: transparent;
    padding: 0 3px;
    margin: 3px 0;
    white-space: nowrap;
}
.Menu li ul > li:hover, .Menu li ul > li:active {
    border-left-color: #A9A9A9;
}
.Menu li ul > li.Active {
    border-left-color: black;
}

最佳答案

Win8 上的 IE 10 似乎有一个通过 aria 属性的解决方案:http://msdn.microsoft.com/en-us/library/jj152141%28v=vs.85%29.aspx

“在具有切换交互式内容可见性的悬停行为的页面元素上,将元素的 aria-haspopup 属性设置为“true””
“当支持触摸的设备上的 Internet Explorer 10 用户首次点击页面元素时,用户的体验将与将光标悬停在该元素上的用户的体验相同。直到用户点击页面上的其他地方,点击再次元素,或导航到另一个页面,该元素将保持其悬停状态。此外,第一次点击页面元素时,不会执行 onclick 事件的默认操作(例如链接的导航)。”

关于html - IE10 css Hover 不适用于触摸设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032448/

相关文章:

javascript - 使用 flexbox 显示数据

html - 是否可以仅使用 CSS 制作圆 Angular 三 Angular 形?

javascript - 从 javascript 设置溢出 css 属性

java - 如何从禁用菜单键的按钮打开菜单

jquery - 如何与hoverIntent集成?

html - 图像无法使用 Sprite 表正确渲染

javascript - 从 Jquery slider 提交值

javascript - 数据表单重置未发生

css - 菜单栏在我点击之前就消失了?

html - CSS - 如何在一行中显示下拉文本?