Bootstrap显然使用“hide”、“fade”和“in”类来实现转换效果。
我的问题是,使用“fade”和“in”会将不透明度从0变为1。过渡效果很完美,但即使您看不到它,内容仍会占据页面上的空间。例如,如果它的容器有一个边框,在边框之前会有一个大的白色空间。
我想利用他们现有的CSS转换通过添加和删除“in”类实现,但我也希望正在淡出的任何元素在过渡结束后被隐藏,而不是立即消失。因此,基本上就是他们在模态框中所做的事情,但我不知道他们是如何做到的。
在下面的示例中,添加或删除“hide”意味着div会在淡入淡出效果发生之前立即出现或消失。
HTML示例:
<div class="control-group">
<label class="control-label">Choose one:</label>
<div class="controls">
<label class="radio inline">
<input type="radio" name="color-radio" id="yellow-trigger" value="yellow" />Yellow Box</label>
<label class="radio inline">
<input type="radio" name="color-radio" id="red-trigger" value="red" />Red Box</label>
</div>
</div>
<div id="yellow-box" class="hide fade">
<p>I'm yellow</p>
</div>
<div id="red-box" class="hide fade">
<p>I'm red</p>
</div>
JS示例:
$(document).ready(function () {
$('#yellow-trigger').click(function () {
$('#yellow-box').addClass('in').removeClass('hide');
$('#red-box').addClass('hide').removeClass('in');
});
$('#red-trigger').click(function () {
$('#red-box').addClass('in').removeClass('hide');
$('#yellow-box').addClass('hide').removeClass('in');
});
});