2010-10-09 1 views
228

Каждый раз, когда я разрабатываю новую форму, которая включает в себя textarea я имею следующую дилемму, когда мне нужно указать его размеры:Должен ли я размер текстовой области с атрибутами width/height CSS или атрибутами HTML cols/rows?

Используйте CSS или использовать textarea «s атрибуты cols и rows?

Каковы преимущества и недостатки каждого метода?

Какова семантика использования этих атрибутов?

Как обычно делается?

ответ

197

Рекомендую использовать оба варианта. Строки и столбцы необходимы и полезны, если клиент не поддерживает CSS. Но как дизайнер я переписываю их, чтобы получить именно тот размер, который я желаю.

Рекомендуемый способ сделать это через внешнюю таблицу стилей, например.

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

+2

Это нормально, но вы должны понимать, что любое произвольное пространство, которое вы задаете размер, будет расточительно и действительно просто для шоу. –

+1

@tandu: Что вы подразумеваете под словом «собирается потеряться и действительно просто для шоу»? – BoltClock

+1

Строки/столбцы основаны на размере символа пользователя. Поэтому, если у вас есть css-определенная ширина/высота, которую нельзя разделить пикселями персонажа в текстовом поле, будет так много белого цвета, которое останется вертикально и горизонтально. Наверное, никто никогда не заметит, а просто скажет. –

9

Согласно w3c, столбцы и строки являются обязательными атрибутами для текстовых областей. Строки и столбцы - это количество символов, которые будут помещаться в текстовое поле, а не в пикселях или какое-либо другое потенциально произвольное значение. Пойдите со строками/cols.

+5

В школах w3c указано, что вы можете установить его через атрибуты rows и cols, но лучше установить высоту и ширину. Нет упоминания о строках и столбцах, являющихся обязательным атрибутом для textarea на w3c.org. http://www.w3schools.com/tags/tag_textarea.asp http://www.w3.org/wiki/HTML/Elements/textarea –

+9

@MichaelStramel мой ответ четыре года :) - кстати, это * не * w3c школы. Они не являются аффилированными. Я не уверен, что HTML5 уже имеет концепцию * обязательных атрибутов *, но я мог ошибаться в этом. Я все еще не понимаю, почему установка ширины/высоты будет лучше, чем строки/столбцы, хотя –

+2

Я понял, что после того, как я прокомментировал, но все же почувствовал, что это важно для всех, кто читает это сообщение. Кроме того, с адаптивными конструкциями строки и столбцы могут вызывать проблемы, если они не установлены через JavaScript. Что ИМО делает настройку через CSS намного лучше. –

5

Ответ "да". То есть вы должны использовать оба. Без строк и столбцов (и есть значения по умолчанию, даже если вы не используете их явно), textarea неприемлемо мало, если CSS отключен или переопределен таблицей стилей пользователя. Всегда помните о проблемах доступности. При этом, если вашей таблице стилей разрешено контролировать внешний вид текстового поля, вы, как правило, получаете что-то, что выглядит намного лучше, вписывается в общий дизайн страницы, и, которые могут изменять размер, чтобы не отставать от пользователя вход (в пределах хорошего вкуса, конечно).

1
<textarea style="width:300px; height:150px;" ></textarea> 
+3

никогда не читайте стили, это вещь с 90-х годов. –

+16

@ user470962 Ad hominem. Если вы исправите синтаксическую ошибку до « ASHU

0

Главной особенностью текстовых областей является то, что они расширяемы. На веб-странице это может привести к появлению полос прокрутки в текстовой области, если длина текста переполняет заданное вами пространство (будь то с использованием строк или с использованием CSS. Это может быть проблемой, когда пользователь решает распечатать, особенно с «печать» в PDF - так установить с комфортом большой мин-высота для печатных прокручиваемым с условным правило CSS:

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

если вы не используете каждый раз использовать высоту строки: «..»; свойству свой контроль . высота и ширина текстового поля собственности для ширины текстового поля

или вы можете использовать размера шрифта с помощью следующих CSS:

#sbr { 
    font-size: 16px; 
    line-height:1.4; 
    width:100%; 
} 
Смежные вопросы