kullanıcıya elde etmek istediğimiz şeyin elde ettiği son çıktıyı düşünelim : hem kenarlık hem de dolgu ile yastıklı bir textarea, hangi özellikler tıklandığında odağı textarea'mıza geçiriyorlar ve otomatik% 100 genişliğin avantajı blok elemanlarının tipik.
Bence en iyi yaklaşım, tarayıcı desteği maksimum seviyesine ulaşmak için olabildiğince düşük düzeyde çözümler kullanmaktır. Bu durumda tek HTML, Javascript (her nasılsa hepimiz seviyoruz) kullanmaktan kaçınarak iyi çalışabilir.
LABEL etiketi yardımımıza giriyor çünkü böyle bir davranışa sahip ve ele alması gereken girdi öğelerini içermesine izin verildi. Varsayılan stili satır içi öğelerin biridir, bu nedenle etikete bir blok görüntüleme stili vererek dolgu ve kenarlıklar da dahil olmak üzere otomatik% 100 genişlikten yararlanabiliriz, iç metin alanının kenarlığı, dolgu yok ve% 100 genişliği vardır. .
W3C spesifikasyonlarına göz attığımız diğer avantajlar şunlardır:
- "for" özelliği gerekli değildir: Bir LABEL etiketi hedef girişi içerdiğinde, tıklandığında otomatik olarak alt girdiye odaklanır;
- metin alanı için harici bir etiket önceden tasarlanmışsa, belirli bir girdinin bir veya daha fazla etiketi olabileceğinden çakışma olmaz.
Daha ayrıntılı bilgi için W3C teknik özelliklerine bakın .
Basit örnek:
.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 öğelerinin dolgusu ve kenarlığı, texatarea'ya vermek istediğimiz öğelerdir. İstediğiniz gibi biçimlendirmek için bunları düzenlemeyi deneyin. Tıklandığında davranışlarını görmenizi sağlamak için .textareaContainer öğesine büyük ve görünür dolgu ve kenarlıklar verdim.