javascript - 在特定操作上使用 javascript 运行 css 动画

标签 javascript css css-animations

我正在尝试将自动增长动画效果的类添加到 textarea 元素。

演示: 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你可以做到,唯一需要关心的是transitionmax-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>

关于javascript - 在特定操作上使用 javascript 运行 css 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841277/

相关文章:

html - 如果 :active isn't working?,如何更改链接的事件颜色

html - Chrome 和 Camino 中的奇怪 div 行为,但在 Safari 中没有

html - 在 css 中,父 ul 后面的子 ul

javascript - 在 Google map 中绘制折线的圆圈

javascript - `Cannot instantiate non-constructior` 关闭编译器警告?

javascript - Angular JS 从 1.1.0 升级到 1.1.1 后失败

javascript - Prettier 和 eslint 缩进不一起工作

html - 使用 css3 动画关键帧继续滑动

html - png旋转时隐藏滚动条

html - 3D立方体中的css3 transform-origin问题