Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

ตั้งค่าความกว้างขององค์ประกอบใน HTML ด้วยแอตทริบิวต์ width

แอตทริบิวต์ width ใช้กำหนดความกว้างขององค์ประกอบต่างๆ ใน HTML หน่วยค่าเริ่มต้นคือพิกเซล (pixels) สามารถใช้ได้กับหลายแท็กที่เกี่ยวข้องกับสื่อและฝังเนื้อหา

แท็กที่รองรับ width attribute

แท็ก คำอธิบาย หมายเหตุ
<img> ความกว้างรูปภาพ ควรระบุ height ด้วยเพื่อป้องกัน layout shift
<video> ความกว้างตัวเล่นวิดีโอ
<canvas> ความกว้างพื้นที่วาด สำคัญมาก - กำหนด resolution จริงของ canvas
<iframe> ความกว้างเฟรมฝัง
<embed> ความกว้างเนื้อหาฝัง
<input type="image"> ความกว้างปุ่มภาพ
<object> ความกว้างออบเจกต์ฝัง
<svg> ความกว้างกราฟิกเวกเตอร์

ตัวอย่างการใช้งาน

<!DOCTYPE HTML>
<html>
<body>
  <h2>ตัวอย่าง Video กำหนด width/height</h2>
  <video width="300" height="200" controls autoplay muted>
    <source src="/media/sample.mp4" type="video/mp4" />
    <source src="/media/sample.webm" type="video/webm" />
    เบราว์เซอร์ไม่รองรับ video
  </video>
  
  <br><br>
  
  <h2>Canvas ต้องกำหนด width/height แบบ attribute</h2>
  <canvas id="myCanvas" width="400" height="200" style="border:1px solid #333">
    เบราว์เซอร์ไม่รองรับ canvas
  </canvas>
  
  <script>
    const ctx = document.getElementById('myCanvas').getContext('2d');
    ctx.fillStyle = '#317EFB';
    ctx.fillRect(50, 50, 100, 100);
  </script>
</body>
</html>

ความแตกต่าง: width attribute vs CSS width

ด้านเปรียบเทียบ width attribute CSS width
Canvas กำหนด resolution จริง (drawing buffer) กำหนดขนาดแสดงผลเท่านั้น (scale)
Image/Video ขนาดเริ่มต้น ก่อนโหลด CSS ขนาดแสดงผล สามารถ override attribute ได้
หน่วย พิกเซลเท่านั้น (ไม่ต้องเขียน px) px, %, em, rem, vw, vh, etc.
Responsive ไม่ยืดหยุ่น ยืดหยุ่นได้ (max-width: 100%)

แนวทางปฏิบัติที่ดีที่สุด

  • Canvas: ต้องใช้ attribute เสมอ สำหรับ resolution
  • Image/Video: ใช้ attribute สำหรับขนาดจริง + CSS max-width: 100%; height: auto; สำหรับ responsive
  • Iframe: ใช้ CSS สำหรับ responsive layout
  • หลีกเลี่ยงการใช้ width/height attribute เพื่อบังคับขนาดที่ไม่สัดส่วน (aspect ratio) - ใช้ CSS object-fit แทน