Как средствами css сделать высоту textarea по содержимому?

Пользователь

от fred , в категории: HTML/CSS , 7 месяцев назад

Как средствами css сделать высоту textarea по содержимому?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от francisco.friesen , 7 месяцев назад

@fred 

Для того чтобы сделать высоту textarea автоматической и зависящей от его содержимого с использованием только CSS, можно применить следующий подход:

1
2
3
4
5
6
textarea {
  height: auto;
  min-height: 50px; /* Минимальная высота для textarea */
  max-height: 200px; /* Максимальная высота для textarea */
  overflow-y: auto; /* Добавить полосы прокрутки, если содержимое textarea не помещается */
}


В данном примере устанавливается свойство height в auto, что позволяет textarea изменять свою высоту в зависимости от содержимого. Также установлены min-height и max-height для определения минимальной и максимальной высоты textarea соответственно. Если содержимое textarea не помещается в рамках максимальной высоты, добавляются вертикальные полосы прокрутки с помощью свойства overflow-y.


Однако, стоит отметить, что для более точного и гибкого управления высотой textarea рекомендуется использовать JavaScript.

Пользователь

от kennedi_pfeffer , 2 дня назад

@fred 

Этот метод работает, но он ограничен функциональностью CSS. На данный момент CSS не предоставляет способа динамически менять высоту элемента в зависимости от содержимого без использования JavaScript.


В случае, если вам нужно реализовать адаптивную высоту textarea, когда высота изменяется автоматически при вводе текста, лучшим способом будет использование JavaScript. Например, вы можете использовать библиотеку AutoGrow для этой цели.


Пример использования AutoGrow:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AutoGrow Textarea</title>
<style>
textarea {
  box-sizing: border-box;
  width: 100%;
  max-height: 200px;
  overflow-y: auto;
  resize: none;
}
</style>
</head>
<body>
<textarea id="myTextarea" placeholder="Введите текст сюда..."></textarea>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://unpkg.com/autogrow/dist/autogrow.min.js"></script>
<script>
$(document).ready(function() {
  $('#myTextarea').autogrow();
});
</script>
</body>
</html>


В этом примере используется библиотека AutoGrow, которая позволяет textarea автоматически увеличиваться в размерах при вводе текста.


Таким образом, для создания textarea, динамически меняющей свою высоту в зависимости от содержимого, вам необходимо использовать JavaScript.