Bootstrap 显然使用 'hide'、'fade' 和 'in' 类进行转换。
我遇到的问题是使用 'fade' 和 'in' 会将不透明度从 0 更改为 1。过渡效果是完美的,但内容仍然占用页面空间,即使你不能看见。例如,如果它的容器有边框,那么边框前会有一个很大的空白。
我想通过添加和删除“in”类来利用他们现有的 CSS 过渡,但我也希望隐藏任何淡出的元素,但只有在过渡结束后才能隐藏。所以基本上,他们在模态中做了什么,但我不知道他们是怎么做的。
在下面的示例中,添加或删除隐藏意味着 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');
});
});