【发布时间】:2017-06-08 11:58:00
【问题描述】:
我试图显示一个元素一秒钟,然后隐藏它。单击按钮时,将添加一个类,该类具有 opacity 和 max-height 值。当动画完成后,类被移除,并且元素在屏幕上停留一秒钟,由于转换延迟。
问题是,当按钮被选中时,元素不会达到其全高,除非:
-
transition从max-height 400ms ease, opacity 100ms ease更改为all 400msJSFiddle -
elem.classList.remove('show');已从transition callback中删除。 JSFiddle - 如果按钮被快速重复点击。
我做错了什么,我该如何解决? (我需要max-height,而不是height。)
var btn = document.getElementById('btn');
var elem = document.getElementById('elem');
btn.addEventListener('click', function() {
elem.classList.add('show');
});
elem.addEventListener("transitionend", function() {
elem.classList.remove('show');
}, false);
#reference {
height: 100px;
background-color: lightblue;
font-size: 20px;
text-align: center;
}
#elem {
background-color: orange;
font-size: 20px;
text-align: center;
max-height: 0px;
opacity: 0;
transition: max-height 400ms ease, opacity 100ms ease;
transition-delay: 1000ms;
}
#elem.show {
opacity: 1;
max-height: 100px;
transition-delay: 0ms;
}
#inner-content {
padding: 20px;
}
<div id="reference">Height of 100px</div>
<button id="btn">Press Me</button>
<div id="elem">Should get a height of 100px
<div id="inner-content">Some Text</div>
</div>
【问题讨论】:
标签: javascript css css-transitions transition