Betrachten wir die endgültige Ausgabe, die an den Benutzer gerendert wird, was wir erreichen möchten: einen gepolsterten Textbereich mit Rand und Polsterung. Diese Eigenschaften sind, dass durch Klicken der Fokus auf unseren Textbereich übertragen wird, und der Vorteil einer automatischen Breite von 100% typisch für Blockelemente.
Meiner Meinung nach ist es am besten, so weit wie möglich Low-Level-Lösungen zu verwenden, um die maximale Browserunterstützung zu erreichen. In diesem Fall könnte der einzige HTML-Code einwandfrei funktionieren und die Verwendung von Javascript vermeiden (was wir jedenfalls alle lieben).
Das LABEL-Tag wird in unserer Hilfe angezeigt, da es ein solches Verhalten aufweist und die Eingabeelemente enthalten darf, an die es adressieren muss. Der Standardstil ist der eines Inline-Elements. Wenn Sie dem Etikett einen Blockanzeigestil geben, können Sie die automatische Breite von 100% einschließlich Polsterung und Rahmen nutzen, während der innere Textbereich keinen Rand, keine Polsterung und eine Breite von 100% aufweist .
Wenn wir uns die W3C-Besonderheiten ansehen, können wir folgende weitere Vorteile feststellen:
- Es wird kein "for" -Attribut benötigt: Wenn ein LABEL-Tag die Zieleingabe enthält, fokussiert es automatisch die untergeordnete Eingabe, wenn darauf geklickt wird.
- Wenn bereits eine externe Beschriftung für den Textbereich entworfen wurde, treten keine Konflikte auf, da eine bestimmte Eingabe eine oder mehrere Beschriftungen haben kann.
Weitere Informationen finden Sie in den W3C-Spezifikationen .
Einfaches Beispiel:
.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>
Das Auffüllen und der Rand der .textareaContainer-Elemente sind diejenigen, die wir dem Textbereich geben möchten. Bearbeiten Sie sie, um sie nach Ihren Wünschen zu gestalten. Ich habe dem .textareaContainer-Element große und sichtbare Auffüllungen und Rahmen gegeben, damit Sie ihr Verhalten beim Klicken sehen können.