I've met this problem and found my workaround.
Firstly I tried to use max-height
. But there are two problems:
max-height
, since I'm expanding an unknown length text block.max-height
too large, there is a large delay when collapsing.Then, my workaround:
function toggleBlock(e) {
var target = goog.dom.getNextElementSibling(e.target);
if (target.style.height && target.style.height != "0px") { //collapsing
goog.style.setHeight(target, target.clientHeight);
setTimeout(function(){
target.style.height = "0px";
}, 100);
} else { //expanding
target.style.height = "auto";
//get the actual height
var height = target.clientHeight;
target.style.height = "0px";
setTimeout(function(){
goog.style.setHeight(target, height);
}, 100);
setTimeout(function(){
//Set this because I have expanding blocks inside expanding blocks
target.style.height="auto";
}, 600); //time is set 100 + transition-duration
}
}
The scss:
div.block {
height: 0px;
overflow: hidden;
@include transition-property(height);
@include transition-duration(0.5s);
}