На это ответили много раз и много способов для div и изображений, но я не могу найти пример того, как это сделать для textarea
.
Я хочу, чтобы textarea
расширялось и не перемещало другие элементы под ним, а расширялось поверх них. У меня есть рабочий пример ниже, просто расширяя его, но я хочу, если я смогу его получить, чтобы оживить расширение, а не просто его больше и меньше.
Я не хочу использовать position: absolute
и не хочу использовать какой-либо другой элемент html, отличный от textarea
. Мне нужно все это для работы в таблице, как показано ниже в моем html.
Это мой html:
<table>
<tr>
<td><textarea class="expand" rows="1" cols="10"></textarea></td>
</tr>
<tr>
<td>Here is some text just below. I want it to not move.</td>
<tr>
<tr>
Мой javascript:
$(document).ready(function () {
$('#txt1').focus(function () {
$(this).addClass('focused');
});
$('#txt1').blur(function () {
$(this).removeClass('focused');
});
});
И мой CSS:
.focused {
position: relative;
height: 10em !important;
z-index: 1000;
}
textarea {
width: 350px;
height: 1em;
line-height: 1em;
resize: none;
}
table
с position: absolute;
или div
с float: left
... Из того, что я вижу, с решением использовать таблицу, нужно использовать positon: absolute;
потому что вам нужно использовать z-index:
и перетекание других элементов. Использование float: left
и table
будет очищать поплавки. В противном случае вы можете использовать float: left
довольно легко.
См. Рабочий сценарий: http://jsfiddle.net/digitalextremist/JdA6L/
$(window).load(function () {
$('textarea.expand').focus(function () {
$(this).addClass("expanding")
$(this).animate({
height: "10em"
}, 500);
});
$('textarea.expand').blur(function () {
$(this).animate({
height: "1em"
}, 500);
$(this).removeClass("expanding")
});
});
Добавлен один класс CSS:
.expanding {
position: absolute;
z-index: 9;
}