IE选择悬停问题

Posted

技术标签:

【中文标题】IE选择悬停问题【英文标题】:IE select issue with hover 【发布时间】:2011-04-11 18:26:53 【问题描述】:

我和一个朋友正在尝试解决 IE (7/8)。我们在这里建立了一个规范的例子:

http://www.mathgladiator.com/share/ie-select-bug-hover-css-menus.htm

使用 CSS 菜单,我们希望在其中进行选择。但是,在 IE 中,当您与选择框交互时,菜单就会消失。我们认为这与选择如何影响事件的错误有关。

有解决方法吗?至少使用纯 CSS 或 DOM hack?

【问题讨论】:

你说的是哪个IE版本? 我发现 IE7 和 Chrome 没有区别 edit 您需要与选择框进行交互。感谢您的帮助! 我要说没有解决方法,因为 IE 似乎没有传播选择选项的鼠标悬停功能。我尝试了几种方法,CSS 和 javascript,但没有得到任何结果。哦,好吧,也许别人会有东西。 您是否正在寻找仅使用 CSS 和 html(无 javascript)的解决方案? 【参考方案1】:

我认为没有一种纯 CSS 方法可以解决这个问题。这是由于 IE 在选择元素上处理事件的方式存在一个非常常见的错误。

您可以使用 Javascript 解决它:

<script type="text/javascript">
    $(document).ready(function () 
        $('.nav_element a').mouseover(function() 
            $('.submenu').hide();
            $(this).parent().find('.submenu').show();
        );

        $('.submenu').mouseover(function() 
            $(this).show();
        );

        $('.submenu').mouseout(function (e) 
            // Do not close if going over to a select element
            if (e.target.tagName.toLowerCase() == 'select') return;
            $(this).hide();
        );

    );    
</script>

上面的代码使用了jQuery。

【讨论】:

【参考方案2】:

这是一种改进 IE7/8 中选择行为的方法,但它不能解决问题

更改文档类型

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

添加脚本

<script>

    function ddlOut(e) 
        setTimeout(function()  e.className = e.className.replace(' over', ''); , 1000)
    

</script>

添加 CSS

    #nav .over div.submenu
    
         display: block;
    

    #nav .nav_element
        behavior: expression(
            this.onmouseover = new Function("this.className += ' over'"),
            this.onmouseout = new Function("ddlOut(this)"),
            this.style.behavior = null
        );
    

至少它会更好,但当然不是完美的。

我的建议是将选择控件更改为等效的 html。我使用OboutDropDown,它的视野很好。有许多实现可以满足您的需求。

【讨论】:

【参考方案3】:

首先,您需要展开菜单下方的 :hover 表面。 所以在你的css中添加width:310px;height:220px#nav .nav_element a。 (还可以在第二个 div 上添加一个类或一个 id,样式为 top:220px

现在您只需要模拟一个 单击 触发的 mousedown,当您在选择完成时将停止该选择 - 您可能可以做最后一个如果您检查将停止鼠标按下的选择的 onfocus 状态的一部分。

【讨论】:

以上是关于IE选择悬停问题的主要内容,如果未能解决你的问题,请参考以下文章

IE 中的 jQuery 悬停 w 粘滞点击/选择问题

IE8 上的鼠标悬停/悬停效果缓慢

IE9:悬停故障

在 IE9 中悬停在精灵图像上时悬停不活动

Facebook/Twitter/+1 按钮的 IE CSS 悬停问题

悬停效果不适用于 IE8