Css IE用鼠标悬停选择问题
我和一个朋友正在努力解决IE(7/8)的问题。我们在此构建了一个规范示例: 使用CSS菜单,我们希望在其中有选择。但是,在IE中,当您与选择框交互时,菜单将消失。我们认为这与选择如何影响事件的缺陷有关Css IE用鼠标悬停选择问题,css,internet-explorer,select,hover,Css,Internet Explorer,Select,Hover,我和一个朋友正在努力解决IE(7/8)的问题。我们在此构建了一个规范示例: 使用CSS菜单,我们希望在其中有选择。但是,在IE中,当您与选择框交互时,菜单将消失。我们认为这与选择如何影响事件的缺陷有关 有解决办法吗?至少对于纯CSS或DOM黑客?我认为没有一种纯CSS的方法可以解决这个问题。这是由于IE处理选定元素事件的方式存在一个非常常见的错误 但是,您可以使用Javascript解决此问题: <script type="text/javascript"> $(docum
有解决办法吗?至少对于纯CSS或DOM黑客?我认为没有一种纯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>
$(文档).ready(函数(){
$('.nav_元素a').mouseover(函数(){
$('.submenu').hide();
$(this.parent().find('.submenu').show();
});
$('.submenu').mouseover(函数(){
$(this.show();
});
$('.submenu').mouseout(函数(e){
//如果转到“选择”元素,则不关闭
如果(e.target.tagName.toLowerCase()=='select')返回;
$(this.hide();
});
});
上面的代码使用jQuery。这里有一种改进IE7/8中选择行为的方法,但它并没有解决这个问题 更改DOCTYPE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
它至少会工作得更好,但当然不是完美的
我的建议是将select控件更改为html等效控件。我用的是一个视野很好的地方。有许多实现可以满足您的需要。首先,您需要展开菜单下方的:悬停界面。
因此,在css中添加
width:310px;高度:220px
至#导航.导航单元a
(还可以在第二个div上添加一个类或id,其样式为
top:220px
)
现在,您只需模拟当您在选项之间的选择完成后,单击选择按钮将停止的时触发的鼠标下移——如果您检查选择按钮的对焦状态,您可能可以执行最后一部分,该状态将停止鼠标下移。您正在谈论的IE版本关于?我看不出IE7和Chromeedit之间有什么区别,你需要与选择框交互。谢谢你的帮助!我要说的是没有解决办法,因为IE似乎没有传播selects选项的mouseover功能。我尝试了几种方法,CSS和Javascript,但都没有结果。哦,好吧,也许其他人会有一些东西。你是在寻找一个只使用CSS和HTML(没有javascript)的解决方案吗?
<script>
function ddlOut(e) {
setTimeout(function() { e.className = e.className.replace(' over', ''); }, 1000)
}
</script>
#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
);
}