【发布时间】:2015-10-13 17:28:47
【问题描述】:
我有两个盒子。单击按钮时,左框应该变小,右框应该变大。我的目标是平稳过渡。当右框变大时,我希望包含一个边距。
我使用 CSS3 过渡效果。我怎样才能实现右框的宽度和边距右过渡同时正确地发生?
JS 小提琴: http://jsfiddle.net/bmzw80py/4/
我的代码:
HTML:
<div class="container">
<div class="box-left"></div>
<div class="box-right"></div>
</div>
<button id="animate">Animate</button>
CSS:
.container {
width: 100%;
height: 200px;
padding: 40px 0 0 60px;
}
.box-left {
float: left;
width: 60%;
height: 100px;
background: blue;
}
.box-left-smaller {
-webkit-transition: width 1s ease-in-out;
-moz-transition: width 1s ease-in-out;
-o-transition: width 1s ease-in-out;
transition: width 1s ease-in-out;
width: 355px;
}
.box-right {
float: right;
width: 30%;
height: 100px;
background: orange;
}
.box-right-bigger {
-webkit-transition: width 1s ease-in-out;
-moz-transition: width 1s ease-in-out;
-o-transition: width 1s ease-in-out;
transition: width 1s ease-in-out;
-webkit-transition: margin 1s ease-in-out;
-moz-transition: margin 1s ease-in-out;
-o-transition: margin 1s ease-in-out;
transition: margin 1s ease-in-out;
width: 62%;
margin-right: 80px;
}
JS:
$('#animate').click(function() {
$('.box-left').addClass('box-left-smaller');
$('.box-right').addClass('box-right-bigger');
});
【问题讨论】:
-
它们已经同时发生了。您必须更好地定义“正确”的含义。
-
我希望宽度和边距右过渡都能平滑而缓慢地出现。如果我删除 .box-right-bigger 类中的边距部分,宽度转换会根据需要发生。但是,除了边距正确设置平滑而不突然,我该如何实现呢?
-
@max 另请参阅下面我的方法,以进行小幅改进
-
啊 - 您看到的抖动是因为您还将 div 的
float更改为right,这不是由转换管理的,它是非此即彼的。