Чи слід розміщувати текстову область з атрибутами ширини / висоти CSS або атрибутами HTML cols / рядки?


307

Кожен раз, коли я розробляю нову форму, яка включає в себе, у textareaмене виникає така дилема, коли мені потрібно вказати її розміри:

Використовувати CSS або використовувати textareaатрибути 's colsі rows?

Які плюси і мінуси кожного методу?

У чому полягає семантика використання цих атрибутів?

Як це зазвичай робиться?

Відповіді:


268

Рекомендую використовувати обидва. Рядки та крапки потрібні та корисні, якщо клієнт не підтримує CSS. Але як дизайнер я їх перезаписую, щоб отримати саме той розмір, який я бажаю.

Рекомендований спосіб зробити це через зовнішній таблицю стилів, наприклад

textarea {
  width: 300px;
  height: 150px;
}
<textarea> </textarea>


4
Це нормально, але ви повинні усвідомити, що будь-який довільний простір, з яким ви встановлюєте розмір, витрачається на марно, і це справді лише для показу.
Вибухові таблетки

4
@tandu: Що ви маєте на увазі під "збирається марно і справді лише для показу"?
BoltClock

2
рядки / знаки з урахуванням розміру символу користувача. Отже, якщо у вас визначена css ширина / висота, яку неможливо розділити на пікселі символу в текстовій області, залишиться стільки пробілів по вертикалі та горизонталі. Напевно, ніхто ніколи не помітить, а просто скаже.
Вибухові таблетки

21
Ви можете використовувати "em" як вимірювання замість пікселів. 1em - ширина "M" у будь-якому шрифті та розмірі. Але cols доречні лише у тому випадку, якщо вони використовуються з однопросторовими шрифтами, що в більшості конструкцій не так. Щоб отримати ідеальну підгонку по висоті, використовуйте кратну величину line-heightдля висоти тексту.
kogakure

5
@LeoGalleguillos "Обов'язковий та корисний, якщо клієнт не підтримує CSS ". Ніхто нічого не сказав про валідацію.
Jaus Bahs Jacquet

96

textarea { height: auto; }
<textarea rows="10"></textarea>

Це запустить браузер встановити висоту текстової області ТОЧНО на кількість рядків плюс прокладки навколо неї. Встановлення висоти CSS на точну кількість пікселів залишає довільні пробіли.


4
Unfortunatelly, «Висота текстового поля не відповідає рядки в Firefox» - це «рядки + 1» stackoverflow.com/q/7695945/1266880
apurkrt

2
Не впевнений, чи змінилися зміни з 1313 року чи є щось надзвичайно очевидне в моїй конкретній ситуації, але налаштування height: auto;в CSS, схоже, не впливає на мою текстову область.
clozach

10

Відповідно до w3c, col та рядки є обома необхідними атрибутами для текстових областей. Рядки та Cols - це кількість символів, які мають вміститися в текстовій області, а не в пікселях чи іншому потенційно довільному значенні. Ідіть з рядками / кол.


8
w3c школи вказує, що ви можете встановити його за допомогою атрибута рядків і знаків, але налаштування висоти та ширини краще. У w3c.org не згадується про те, що рядки та знаки є обов'язковим атрибутом для textarea. w3schools.com/tags/tag_textarea.asp w3.org/wiki/HTML/Elements/textarea
Майкл Страмель

17
@MichaelStramel моїй відповіді чотири роки :) - до речі, це не школи W3c. Вони не пов'язані. Я не впевнений, що HTML5 вже має концепцію необхідних атрибутів, але я можу помилитися з цим. Я досі не бачу, чому налаштування ширини / висоти було б краще, ніж рядки / колби,
Таблетки з вибухом

3
Я зрозумів, що після того, як я прокоментував, але все ще відчув, що це актуально для всіх, хто читає цю публікацію. Крім того, за допомогою гнучкої конструкції рядки та знаки можуть викликати проблеми, якщо вони не встановлені через JavaScript. Саме IMO робить його налаштування через CSS набагато кращим способом.
Майкл Страмель

6

Відповідь "так". Тобто ви повинні використовувати і те, і інше. Без рядків і знаків (і є значення за замовчуванням, навіть якщо ви не використовуєте їх явно), текстова область незвично мала, якщо CSS вимкнено або замінено таблицею стилів користувача. Завжди пам’ятайте про проблеми доступності. Однак, якщо вашому таблицю стилів дозволено контролювати зовнішній вигляд текстової області, ви, як правило, закінчите щось, що виглядає набагато краще, добре вписується в загальний дизайн сторінки, і це може змінити розмір, щоб не відставати від введення користувача ( в межах гарного смаку, звичайно).


6

Для області тексту ми можемо використовувати нижче css, щоб виправити розмір

    <textarea  class="form-control" style=" min-width:500px; max-width:100%;min-height:50px;height:100%;width:100%;" ></textarea>

Випробуваний у angularjs та angular7


1
Що це стосується Angular? І як це додавати порівняно з існуючими відповідями з 2010 року /
Лазар Любенович

5
 <textarea style="width:300px; height:150px;" ></textarea>

19
@ user470962 Ad hominem. Якщо ви виправите синтаксичну помилку на '<textarea style = "width: 300px; height: 150px;">', код буде нормальним. Не потрібно когось ображати. Як бачите, найпопулярніша відповідь - це не на відміну від його. +1
TAAPSogeking

1
@TAAPSРозглядати справедливо, це та сама відповідь через 4 роки. -1
Рамбатіно,

4

Розмір текстової області може бути визначений атрибутами col та рядків, а ще краще; через властивості висоти та ширини CSS. Атрибут cols підтримується у всіх основних браузерах. Однією з головних відмінностей є <TEXTAREA ...>тег контейнера: він має початковий тег ().


2

Зазвичай я не вказую height, але вказую width: ...і rowsі cols.

Як правило, в моєму випадку, тільки widthі rowsнеобхідно, для текстового поля виглядати красиво по відношенню до іншої elems. (І colsце резервна копія, якщо хтось не використовує CSS, як пояснено в інших відповідях.)

((Вказуючи і те, rowsі heightтрохи схоже на дублювання даних, я думаю?))


2

Головною особливістю текстових областей є те, що вони розширюються. На веб-сторінці це може призвести до появи смуг прокрутки у текстовій області, якщо довжина тексту переповнює задане вами місце (будь то рядки або використовуйте CSS. Це може бути проблемою, коли користувач вирішує надрукувати, особливо з 'друк' у PDF - значить, встановіть зручну велику мінімальну висоту для друкованих текстових зображень за допомогою умовного правила CSS:

@media print { 
textarea {
min-height: 900px;  
}
}

2

якщо ви не використовуєте кожен раз, використовуйте висоту рядка: '..'; властивість керувати висотою textarea та властивістю width для ширини textarea.

або ви можете скористатися розміром шрифту, дотримуючись css:

#sbr {
  font-size: 16px;
  line-height:1.4;
  width:100%;
}

2

Рядки та знаки HTML не реагують!

Тому я визначаю розмір у CSS. Як підказка: якщо ви визначаєте невеликий розмір для мобільних телефонів, подумайте про використанняtextarea:focus {};

Додайте сюди додатковий простір, який розгортається лише в той момент, коли користувач захоче щось написати


-11

CSS


input
{
    width: 300px;
    height: 40px;
} 


HTML


<textarea rows="4" cols="50">HELLO</textarea>

Ви можете зробити це з css дуже легко
ASHU

Ви можете робити в обох напрямках за допомогою css або подавати вручну, як це <textarea rows = "4" cols = "50"> HELLO </textarea>
ASHU

Чому б ви застосували ці властивості до всіх елементів?
blackmambo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.