我对您的 JS Fiddle 进行了修改,我相信这就是您想要的;请在这里查看。
您最初需要在 div 上指定一个高度(0)并且不要忘记溢出:隐藏;这样内容就不会从 div 中“溢出”。但是,您仍然需要 jQuery / Javascript 来切换一个类,但这意味着需要更少的 Javascript。(我切换了您将在小提琴上看到的“更改”类)
input {
display:none;
}
label {
display:inline-block;
}
div {
white-space: pre;
background: #eee;
color: #333;
overflow:hidden;
height:0;
opacity:0;
-moz-transition:height 1s opacity 1s;
-webkit-transition:height 1s opacity 1s;
-o-transition:height 1s opacity 1s;
-ms-transition:height 1s opacity 1s;
transition:height 1s, opacity 1s;
}
.changed {
height:200px;
opacity: 1;
}
我在过渡 CSS 属性中添加了一些供应商前缀,因为我不确定您将使用哪种浏览器,而且我使用的是 firefox,所以我需要 -moz- 前缀哈哈:)
我能看到的唯一问题是 height:auto 或 height:100% 没有动画,所以你需要指定 ems 或 px ......如果这将是一个问题(比如内容是否会是动态的),我建议使用 jQuery 来制作高度动画。