当悬停/取消悬停按钮时,底部边框在IE9中再次向下和向下移动:
<!DOCTYPE html>
<html>
<head>
<style>
.btn:hover {
box-shadow: 0 0 0 2px #b1b3b4;
}
</style>
<head>
<body>
<div style="overflow: auto; border: 1px solid black;">
<div style="width: 110%; height: 20px;">
Wide content causing horizontal scrolling....
</div>
<button class="btn">Hover Me</button>
</div>
</body>
</html>
小提琴:http://jsfiddle.net/WW3bh/6353/
这是一个已知的IE9问题吗?我该如何解决这个问题?
答案 0 :(得分:3)
将display:block
放在.btn:hover
。
猜猜会解决它!
.btn:hover {
box-shadow: 0 0 0 2px #b1b3b4;
display:block;
}
答案 1 :(得分:2)
选项1:
设置可滚动div的高度似乎可以解决问题:
<强> Working Example 1 强>
<div style="overflow: auto; border: 1px solid black; height:65px;">
<div style="width: 110%; height: 20px;">Wide content causing horizontal scrolling...</div>
<button class="btn">Hover Me</button>
</div>
选项2:
使用overflow-x:scroll;
而不是overflow:auto;
:
<强> Working Example 2 强>
<div style="overflow-x: scroll; border: 1px solid black;">
<div style="width: 110%; height: 20px;">Wide content causing horizontal scrolling....</div>
<button class="btn">Hover Me</button>
</div>
可能是最佳选择,因为它允许在IE9中显示框阴影。
用类.btn
包裹div中的按钮,而不是直接将类放在按钮上。
.btn {
display:inline;
}
.btn:hover {
display:inline-block;
border-radius:2px;
box-shadow: 0 0 0 2px #b1b3b4;
}
<div style="overflow: auto; border: 1px solid black;padding:2px;">
<div style="width: 110%; height: 20px;">Wide content causing horizontal scrolling...</div>
<div class="btn">
<button>Hover Me</button>
</div>
<div class="btn">
<button>Hover Me</button>
</div>
<div class="btn">
<button>Hover Me</button>
</div>
</div>
选项4:
只是为了笑......
<强> Working Example 4 强>
<!--[if IE]>
<div id="noIE"><a href="http://www.mozilla.org/en-US/">Please download a Real Browser!</a>
<br><sub>Internet Explorer is hateful non-compliant browser that kicks puppies... </sub>
</div>
<![endif]-->
答案 2 :(得分:1)
要更正此问题,请将overlow: auto
更改为overflow: visible
,这样就可以了。
答案 3 :(得分:1)
先生,你有一个非常奇怪的错误。它肯定是一个错误,如果你在ie10上使用ie9模式,这将不会发生。
我无法弄明白为什么但如果您手动调整窗口大小,它似乎会回到原始状态。也许你可以用javascript假装这个?
我发现的另一件事是,如果你使用滚动在元素上设置:hover {zoom: 1}
,它会在悬停时“重置”自身。也许有人可以用它来弄清楚它为什么会这样做。
答案 4 :(得分:1)
试试这个:
选项1(稍微更改html):
<div style="overflow: auto; border: 1px solid black;">
<div style="width: 110%; height: 20px;">Wide content causing horizontal scrolling...</div>
<span><button class="btn">Hover Me</button></span>
</div>
http://jsfiddle.net/WW3bh/10615/
选项2(使用提供的html,使用js):
$('.btn').hover(function () {
var $btn = $(this);
var originalPosition = $btn.css('position');
$btn.css('position', 'fixed');
// this.offsetHeight is needed to trigger browser reflow.
this.offsetHeight;
$btn.css('position', originalPosition);
});
答案 5 :(得分:0)
请试试这个css:
.btn:hover {
box-shadow: 1px 2px 0px 1px #b1b3b4;
}
<div style="overflow: auto; border: 1px solid black;">
<div style="width: 110%; height: 80px;">Wide content causing horizontal scrolling....</div>
<button class="btn">Hover Me</button>
<div> </div>
</div>
答案 6 :(得分:0)
为div添加100%的高度应解决您的问题
<div style="overflow: auto; border: 1px solid black;height: 100%">
<div style="width: 110%; height: 20px;">Wide content causing horizontal scrolling....</div>
<button class="btn">Hover Me</button>
</div>
这是工作的JSFiddle:http://jsfiddle.net/c2sBp/
答案 7 :(得分:0)
我在Ie9中检查了这一点,并没有发现边界底部扩大。 请试一试。让我知道
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>hover demo</title>
<style>
.btn{
box-shadow: 0 0 0 2px #b1b3b4;
}
.noBtn{
box-shadow: none;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div style="overflow: auto; border: 1px solid black;" >
<div style="width: 110%; height: 20px;">
Wide content causing horizontal scrolling....
</div>
<button id="hover">Hover Me</button>
</div>
<script>
$(document).ready(function(){
try{
$('#hover').hover(function () {
$("#hover").addClass('btn');
$("#hover").removeClass('noBtn');
});
$('#hover').mouseleave(function () {
$("#hover").removeClass('btn');
$("#hover").addClass('noBtn');
});
}catch(e){
alert(e);
}
});
</script>
</body>
</html>
尝试后请告诉我。