动画文本输入高度

Animating text input height

我正在尝试为文本输入高度设置动画。我可以有点实现这一点,在聚焦时使用 animate() 并在模糊时移除。 问题是,当我想同时移动底部和顶部时,它只会移动底部边框。

$(document).ready(function(){
     $("input[type=text]").on("focus", function(){
          $(this).animate({height:40}, 200);
           }).blur(function(){
          $(this).animate({height:10}, 200);
          })
      });

代码在这里:Codepen

您可以单独使用 CSS 来执行此操作,如果您愿意,也可以不使用 javascript。

在下面的例子中,我将一个输入放入居中的弹性盒子中,只是为了让高度可以垂直向上和向下扩展。将变换原点 Y 轴设置为 50% 可确保在更改时从中心开始更改,并且不会增长 'downwards'。这个例子有点夸张,您需要根据自己的需要进行调整。

#formWrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100px;
}

input {
  height: 12px;
  transform-origin: 50% left;
    -webkit-transition: .5s ease-out;
    -moz-transition: .5s ease-out;
    -o-transition: .5s ease-out;
    transition: .5s ease-out;
}

input:focus {
 height: 50px;
}
<div id="formWrapper">
<input type="text" />
</div>