Я пытаюсь добавить класс для эффекта анимации автозагрузки для элемента textarea.
demo: http://jsfiddle.net/d0kmg7d3/15/
var tx = document.getElementsByTagName('textarea');
for (var i = 0; i < tx.length; i++) {
tx[i].setAttribute('style', 'height:' + (tx[i].scrollHeight) + 'px;overflow-y:hidden;');
tx[i].addEventListener("input", OnInput, false);
}
function OnInput(e) {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
}
как я могу переключать анимацию только при срабатывании высоты? что-то по этой линии:
this.classList.toggle("horizTranslate")
но как определить, когда изменяется высота?
возможно, вам не нужно, JS для этого, с чистым css вы можете это сделать, единственное, с чем вам нужно заботиться о transition
и атрибутах max-height
css.
Я просто изменил ваш код в примере, надеюсь, что смогу вам помочь.
См. Код ниже.
var tx = document.getElementsByTagName('textarea');
/*for (var i = 0; i < tx.length; i++) {
tx[i].setAttribute('style', 'height:' + (tx[i].scrollHeight) + 'px;overflow-y:hidden;');
tx[i].addEventListener("input", OnInput, false);
}*/
function OnInput(e) {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
}
textarea {
max-height: 40px;
height: 500px;
transition: max-height 0.5s;
appearance: none;
-webkit-appearance: none;
border: 1px solid rgba(0, 0, 0, 0.5);
border-radius: 3px;
padding: .5em;
font-size: 1em;
}
textarea:focus {
background: orange;
height: 200px;
max-height: 200px;
}
body {
font-family: sans-serif;
font-size: 16px;
}
<textarea class="horizTranslate" placeholder="Type, paste, cut text here..."></textarea>