2

嗨,我的页面上有一个简单的 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;
}
4

2 回答 2

3

您可以在:focus每次使用时添加,:hover这将使菜单与选项卡和移动设备一起使用。

希望这对您有所帮助。

编辑:注意:您可以更好地隐藏折叠打开的菜单并使其在悬停和聚焦时可见。它现在构建的方式点击选项卡仍然会通过“不可见”链接。而且,遗憾的是,它们现在不会下降焦点。

解决方案?:我做了一些努力并找到了“修复”。这个 jsFiddle应该可以工作。但仍应:focus在其他 CSS 规则中添加以使样式在所有情况下都正常。当“下拉”中的链接成为焦点时,菜单应保持打开状态。(但我认为这不会在移动设备上造成任何问题。)

我只是改变了一点CSS:

.Menu li a:hover + ul,
.Menu li a:focus + ul,
.Menu li a:active + ul
{
    left: -4px;
    z-index: 100;
    opacity: 1;
}

注意'+'。

于 2013-04-16T08:58:23.300 回答
3

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

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

于 2013-08-11T16:14:37.257 回答