ลองพิจารณาผลลัพธ์สุดท้ายที่ให้กับผู้ใช้ในสิ่งที่เราต้องการเพื่อให้บรรลุ: ข้อความแบบเต็มที่มีทั้งเส้นขอบและแผ่นขยายซึ่งลักษณะใดที่ถูกคลิกพวกมันจะมุ่งเน้นไปที่ 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 เพื่อให้คุณเห็นพฤติกรรมของพวกเขาเมื่อคลิก