Thursday, January 3, 2019

css3 - CSS height animation on element with dynamic height





I have a div with dynamic height, and I want to use animation when the height grows. The problem is that I can't set the div's height (it has to be dynamic), so there's nothing to animate on.



.text {
transition: all .3s ease-in-out;
min-height: 20px;
max-height: 200px;

overflow: auto;
}

.max {
transition: all .3s ease-in-out;
height: 200px;
min-height: 200px;
}



https://jsfiddle.net/abk7yu34/5/



Note that the shrinking animation works because the div has min-height.



Is there a way to solve this in pure CSS?


Answer



Remove the height: 200px;, so you have both animate for expand and collapse.



Also, use the following to add animate on new line:




@keyframes lineInserted {
from {
height: 0;
}
to {
height: 20px; /* your line height here */
}
}
div[contenteditable] > div {
animation-duration: 0.3s;

animation-name: lineInserted;
transition: height 0.3s;
}




document.querySelector('#button').addEventListener('click', function() {
document.querySelector('.text').classList.toggle('max');
});


.text {
background: green;
color: #fff;
transition: all .3s ease-in-out;
min-height: 20px;
max-height: 200px;
overflow: auto;
}

.max {

transition: all .3s ease-in-out;
min-height: 200px;
}

@keyframes lineInserted {
from {
height: 0;
}
to {
height: 20px; /* your line height here */

}
}
div[contenteditable] > div {
animation-duration: 0.3s;
animation-name: lineInserted;
transition: height 0.3s;
}







No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...