【发布时间】:2015-08-24 12:29:04
【问题描述】:
应该如何管理 CSS 多行容器(例如内容块或警报)展开动画?
http://plnkr.co/edit/Qq5fzeb3GBengviVNimC?p=preview
.alert {
background: turquoise;
color: white;
padding: 10px;
overflow: hidden;
opacity: 0;
max-height: 0;
}
body:hover .alert {
display: block !important;
opacity: 1;
-webkit-transition: 2s;
-moz-transition: 2s;
-ms-transition: 2s;
transition: 2s;
max-height: 100px;
}
这里的问题是'多行',正如你所看到的,块高度不是一个固定值。
<div class="alert">Alert!<br>Alert!<br>Alert!</div>
虽然max-height: 100px 接近实际块高度,但它工作正常。如果max-height 较小,动画最后会出现锯齿,max-height: 9999px 会使过渡过快。
在 JS 中不计算精确高度可以做到吗?
【问题讨论】:
-
据我所知,CSS 高度在没有固定尺寸的情况下无法平滑过渡。请参阅stackoverflow.com/questions/6089548/… 进行讨论。如果您使用 JS,则不必提前在 CSS 中指定高度,如该链接所示,或者如 TijnvW 在他们的回答中所展示的那样。