我明白你的意思,我得到的结果不一致。如您所料,显示不是可动画的,这可能是在将过渡与它结合时的问题。我尝试转换高度,但这让它看起来很奇怪。
最后,我使用 setTimeout 将更改显示属性和进行转换分开:
http://jsfiddle.net/BYossarian/GDj7v/28/
HTML 更改:
<div id="check-boxes" class="hidden">
添加的CSS:
.hidden {
display: none;
}
JS:
$(document).ready(function () {
$("#field-type").change(function () {
var $val = $(this).val(),
checkboxes = $("#check-boxes");
if ($val === "checkbox") {
checkboxes.removeClass('hidden');
setTimeout(function () {
checkboxes.addClass('shown');
}, 10);
} else {
checkboxes.removeClass('shown');
setTimeout(function () {
checkboxes.addClass('hidden');
}, 1210);
}
});
});
编辑/替代解决方案:此外,将transition
属性规则移动到规则中#check-boxes.shown
意味着过渡只发生在一个方向上,这解决了我遇到的高度看起来很糟糕的问题:
http://jsfiddle.net/BYossarian/GDj7v/30/
CSS:
#check-boxes {
-webkit-transform: translateX(250px) rotateX(135deg);
transform: translateX(250px) rotateX(135deg);
opacity: 0;
height: 0;
}
#check-boxes.shown {
transition: all 1.2s ease-in-out;
-webkit-transform: translateX(0px) rotateX(0deg);
transform: translateX(0px) rotateX(0deg);
opacity: 1;
height: auto;
}