3

http://jsfiddle.net/Calum/5dqwJ/

CSS:

 textarea {
        height: 20px;
        margin: 20px;
        width: 585px;
        resize: none;
        overflow: hidden;
        vertical-align: top;
        transition: height 3s;
        -webkit-transition: height 3s;
        -moz-transition: height 3s;
        -o-transition: height 3s;
    }

Javascript:

 $(document).ready(function () {

     $("textarea").focus(function (event) {
         if ($(this).val().length === 0) {
             $(this).height(100);
             $(this).css('resize', 'vertical');
             $(this).attr('placeholder', null);
         }
     });


     $("textarea").blur(function (event) {
         if ($(this).val().length === 0) {
             $(this).height(20);
             $(this).attr('placeholder', "Enter comment");
             $(this).css('resize', 'none');
         }
     });

 });

HTML:

<textarea placeholder='Enter comment'></textarea>

在 Chrome、IE 和 Opera 中,当您关注 textarea 时,它会随着 CSS3 过渡而扩展和收缩。

当我对 FireFox 做同样的事情时,它不会为任何东西设置动画。

任何想法为什么?

谢谢!

4

4 回答 4

3

请参阅此页面了解转换

https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_transitions

你可以完全通过 css 完成,无需使用 js

删除$(this).height(20); $(this).height(100); 从 JS 并将这个添加到 css

textarea:focus{
   height: 100px;    
}
于 2013-02-06T17:00:40.560 回答
2

好吧,--> http://jsfiddle.net/FSEqT/

textarea:focus {
height: 300px;
margin: 20px;
width: 585px;
resize: none;
overflow: hidden;
vertical-align: top;
}

textarea {
height: 200px;
margin: 20px;
width: 585px;

transition: height 3s;
-webkit-transition: height 3s;
-moz-transition: height 3s;
-o-transition: height 3s;
}
于 2013-02-06T17:02:06.127 回答
2

如果required在 textarea 上添加属性,则可以使用:invalid伪类来定位空的 textarea:

textarea {
    height: 100px;
    margin: 20px;
    width: 585px;
    resize: vertical;
    overflow: hidden;
    vertical-align: top;
    -webkit-transition: height .3s;
    -moz-transition: height .3s;
    -o-transition: height .3s;
    transition: height .3s;    
}

textarea:invalid{  /* single line*/
    height: 20px;
    resize: none;
}

textarea:focus{
    height: 100px;
    resize: vertical;
}

演示

box-shadow: none;如果您不想要红色边框,请添加)

于 2013-02-06T17:11:33.407 回答
1

您的代码中没有 css 转换。但是如果你想要它,下面的东西应该可以工作。只需在下面添加它textarea {...}

textarea:hover {
  height: 100px;
}
于 2013-02-06T16:59:42.857 回答