我有两个div元素并排。当我将鼠标移到第一个上并激活它时,下一个奇怪地摇动。请参阅此处:http://jsfiddle.net/YqZSv/1/我注意到只有在涉及填充和边框时才会发生这种情况。如果我用边距替换边框,则“摇动”效果会停止。
HTML
<div class='a'></div>
<div class='b'></div>
CSS
.a {
width: 80px;
height: 80px;
padding: 10px;
border: 0px solid yellow;
background-color: red;
display: inline-block
}
.b {
width: 100px;
height: 100px;
background-color: blue;
display: inline-block;
margin-left: 20px;
}
的jQuery
$('.a').mouseenter(function(){
$(this).animate({
'padding': 0,
'borderWidth': 10
});
}).mouseleave(function(){
$(this).animate({
'padding': 10,
'borderWidth': 0
});
});
我不能使用边距而不是边框,因为我使用带边框原点的背景图像,因此我不希望它与其内容一起移动。
任何帮助?
答案 0 :(得分:3)
告诉浏览器将填充和边框宽度保持在定义的高度/宽度内,这样就不会认为尺寸正在改变:
div.a { box-sizing:border-box; }
答案 1 :(得分:3)
如果你不介意进行一些修改......我会选择CSS定位。
虽然这会有额外的标签 类似的东西:
<div id="mother">
<div class='a'></div>
<div class='b'></div>
</div>
和你原来的CSS:
#mother{
position:relative; width:210px;
}
.a {
width: 80px;
height: 80px;
padding: 10px;
border: 0px solid yellow;
background-color: red;
display: inline-block;
position:absolute;
left:0px;
}
.b {
width: 100px;
height: 100px;
background-color: blue;
display: inline-block;
margin-left: 20px;
position:absolute;
right:0px;
}
jQuery的:
$('.a').mouseenter(function(){
$(this).animate({
'padding': 0,
'borderWidth': 10
});
}).mouseleave(function(){
$(this).animate({
'padding': 10,
'borderWidth': 0
});
});
试试....
答案 2 :(得分:2)
如果小的html / css更改不是问题: http://jsfiddle.net/YqZSv/8/
HTML:
<div class="box">
<div class='a'></div>
</div>
<div class="box">
<div class='b'></div>
</div>
CSS:
.box {
width:100px;
height:100px;
margin-right:20px;
float:left;
}
.a {
width: 80px;
height: 80px;
padding: 10px;
border: 0px solid yellow;
background-color: red;
display: inline-block
}
.b {
width: 80px;
height: 80px;
padding: 10px;
background-color: blue;
display: inline-block;
}
基本上,一个div作为包装...