давайте розглянемо кінцевий висновок, що надається користувачеві того, чого ми хочемо досягти: м'які текстові області з окантовкою та оббивкою, характеристики яких полягають у натисканні, передають фокус нашому текстовому району, і перевага автоматичної 100% ширини характерні для блокових елементів.
Найкращий підхід, на мою думку, - максимально використовувати рішення низького рівня, щоб досягти максимальної підтримки браузерів. У цьому випадку єдиний HTML-код може працювати чудово, уникаючи використання Javascript (який ми всі любимо).
Тег LABEL нам допомагає, оскільки має таку поведінку і може містити вхідні елементи, до яких він повинен звертатися. Її стиль за замовчуванням - це стиль вбудованих елементів, тому, надаючи етикетці стиль відображення блоку, ми можемо скористатися автоматичною 100% -ною шириною, включаючи прокладки та рамки, тоді як внутрішня текстова область не має меж, немає прокладки та 100% -ної ширини. .
Ознайомившись зі специфікою W3C, ми можемо помітити:
- атрибут "для" не потрібен: коли тег LABEL містить цільовий вхід, він автоматично фокусує дочірнє введення при натисканні;
- якщо зовнішня мітка для текстової області вже була розроблена, конфліктів не виникає, оскільки даний вхід може мати одну або більше міток.
Детальнішу інформацію див. У специфікаціях W3C .
Простий приклад:
.container {
width: 400px;
border: 3px
solid #f7c;
}
.textareaContainer {
display: block;
border: 3px solid #38c;
padding: 10px;
}
textarea {
width: 100%;
margin: 0;
padding: 0;
border-width: 0;
}
<body>
<div class="container">
I am the container
<label class="textareaContainer">
<textarea name="text">I am the padded textarea with a styled border...</textarea>
</label>
</div>
</body>
Прокладки та межі елементів .textareaContainer - це те, що ми хочемо надати textarea. Спробуйте відредагувати їх так, як ви хочете. Я надав великі і видимі прокладки та рамки елементу .textareaContainer, щоб ви могли бачити їх поведінку при натисканні.