ลองพิจารณาผลลัพธ์สุดท้ายที่ให้กับผู้ใช้ในสิ่งที่เราต้องการเพื่อให้บรรลุ: ข้อความแบบเต็มที่มีทั้งเส้นขอบและแผ่นขยายซึ่งลักษณะใดที่ถูกคลิกพวกมันจะมุ่งเน้นไปที่ textarea ของเราและข้อดีของความกว้างอัตโนมัติ 100% องค์ประกอบทั่วไปของบล็อก
วิธีที่ดีที่สุดในความคิดของฉันคือการใช้โซลูชันระดับต่ำที่สุดเท่าที่จะทำได้เพื่อเข้าถึงการสนับสนุนเบราว์เซอร์สูงสุด ในกรณีนี้ HTML เท่านั้นที่สามารถใช้งานได้ดีหลีกเลี่ยงการใช้ Javascript (ซึ่งเราทุกคนรัก)
แท็ก LABEL มาในความช่วยเหลือของเราเนื่องจากมีพฤติกรรมดังกล่าวและได้รับอนุญาตให้มีองค์ประกอบอินพุตที่ต้องระบุ สไตล์เริ่มต้นของมันคือหนึ่งในองค์ประกอบแบบอินไลน์ดังนั้นเพื่อให้ป้ายแสดงรูปแบบบล็อกเราสามารถใช้ประโยชน์จากความกว้างอัตโนมัติ 100% รวมถึงช่องว่างภายในและเส้นขอบในขณะที่พื้นที่ข้อความภายในไม่มีขอบไม่มีช่องว่างและความกว้าง 100% .
ดูที่ W3C เฉพาะข้อดีอื่น ๆ ที่เราอาจสังเกตเห็นคือ:
- ไม่จำเป็นต้องมีแอตทริบิวต์ "สำหรับ": เมื่อแท็ก LABEL มีอินพุตเป้าหมายมันจะเน้นอินพุตเด็กโดยอัตโนมัติเมื่อคลิก
- หากมีการออกแบบป้ายชื่อภายนอกสำหรับ textarea แล้วจะไม่มีข้อขัดแย้งเกิดขึ้นเนื่องจากอินพุตที่ระบุอาจมีป้ายกำกับอย่างน้อยหนึ่งรายการ
ดูข้อมูลเฉพาะของ 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 เพื่อให้คุณเห็นพฤติกรรมของพวกเขาเมื่อคลิก