我正在开发一个带有textarea的小项目,我需要帮助才能使文本区域像twitter和facebook一样在鼠标点击上扩展。 textarea应该首先看起来像文本字段然后点击时应该展开。
答案 0 :(得分:51)
这可以在不使用JavaScript / jQuery的情况下使用CSS transitions完成。
textarea {
height: 1em;
width: 50%;
padding: 3px;
transition: all 0.5s ease;
}
textarea:focus {
height: 4em;
}

<textarea rows="1" cols="10"></textarea>
&#13;
答案 1 :(得分:29)
像这样的东西会起作用......
... CSS
.expand {
height: 1em;
width: 50%;
padding: 3px;
}
HTML ...
<textarea class="expand" rows="1" cols="10"></textarea>
...的jQuery
$('textarea.expand').focus(function () {
$(this).animate({ height: "4em" }, 500);
});
答案 2 :(得分:8)
这对你有用:
<textarea rows="1" cols="40" onfocus="this.rows=10;" style="resize: none;">Tweet Tweet....</textarea>
我使用onfocus
代替onclick
,因为如果用户使用Tab键移动到textarea,则不会触发onclick
。您还需要确保用户无法自行调整大小 - 因此也就是样式属性。
您还可以添加onblur="this.rows=1;"
,以便在用户离开您的textarea后将其缩小。
答案 3 :(得分:2)
$("textarea").focus(function(){
$("textarea").animate({ height: "70px" }, 500);
});
默认css
textarea{ height: 50px;}
焦点textarea高度将增加:)简单的jquery
答案 4 :(得分:1)
使用此插件&gt; http://plugins.jquery.com/project/elastic
非常简单有效!
答案 5 :(得分:1)
基于doog abides comment使用jQuery,我增强了代码,根据内容的长度自动调整大约行数,并在焦点丢失时返回1。
HTML:
<textarea class="expand" rows="1" cols="10"></textarea>
jQuery的:
$('textarea.expand').focus(function () {
$(this).animate({rows: Math.max(1,Math.ceil($(this).val().length/this.cols))}, 500);
});
$('textarea.expand').blur(function () {
$(this).animate({rows: 1}, 500);
//Resize back to one row if the textarea is manually resized via the handle
$(this).css({height: ''});
$(this).css({width: ''});
});
答案 6 :(得分:0)
您只能使用position: absolute
和:focus
选择器对CSS进行此操作,<div class="textarea"><textarea></textarea></div>
div.textarea {
height: 50px;
width: 400px;
}
将使其浮在其他元素上,而textarea {
position: absolute;
height: 50px;
width: 400px;
transition: all 200ms;
}
选择器将仅在元素具有焦点时才应用。首先,您需要保留将textarea大小包含在元素中的大小:
textarea:focus {
z-index: 1001;
min-height:250px;
}
然后设置未聚焦的文本区域的样式
$(function() {
$("#slider-range").slider({
range: true,
min: 50,
max: 54,
values: [50, 54],
stop: function(event, ui) {
var selected = [];
$('input:checkbox[name=temple]').prop("checked", false);
$("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
for (var i = ui.values[0]; i <= ui.values[1]; i++) {
selected.push(i);
}
$.each(selected, function(index, value) {
$("input:checkbox[name=temple][value=" + value + "]").prop("checked", true);
$("input:checkbox[name=temple][value=" + value + "]").trigger("change");
})
}
});
$("#amount").val("$" + $("#slider-range").slider("values", 0) +
" - $" + $("#slider-range").slider("values", 1));
$('input:checkbox[name=temple]').on('change', function() {
if ($(this).prop("checked")){
console.log('Checked');
} else {
console.log('Un Checked');
}
});
});
最后是专注的人
public class TestActivity extends AppCompatActivity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mTextView = findViewById(R.id.test_text);
}
@Override
protected void onResume() {
super.onResume();
test2();
}
private void test2() {
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Util.log("AAA thread name " + Thread.currentThread().getName());
mTextView.setText("AAA");
}
}.start();
}
});
}
答案 7 :(得分:-1)
<textarea style="width:200px; height:50px;" id="ta"></textarea>
var ta = document.getElementById('ta');
ta.onclick = function(){
this.style.height = "400px";
}
答案 8 :(得分:-1)
您可以执行以下操作:
<textarea name="textBox" rows="1" cols="20" id="textBox" onfocus="document.getElementById('textBox').rows = 5;" >