HTML5 คือ ตอนที่ 5 : กราฟิก (Graphics) และเอฟเฟกต์ (Effects)

  1. แคนวาส (Canvas) API
  2. กราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ (Scalable Vector Graphics) (SVG)
  3. เอฟเฟกต์ (Effects) CSS3

การทำเว็บและทำแอพพัฒนาไปไกลจากหน้าเพจคงที่และอินเทอร์เฟซที่ยุ่งยาก ปัจจุบัน มันเป็นเรื่องของการสร้างประสบการณ์ผู้ใช้แบบโต้ตอบและราบรื่น กราฟิกและเอฟเฟ็กต์ภาพมีบทบาทสำคัญในเรื่องนี้ และ HTML5 นำเสนอตัวเลือกมากมายมาสู่ตาราง การเปิดตัว HTML5 ได้ปฏิวัติวงการนี้ โดยนำเสนอการรองรับเนทิฟสำหรับเนื้อหากราฟิกและเอฟเฟกต์เชิงโต้ตอบ โดยไม่ต้องใช้ปลั๊กอินของบุคคลที่สามหรือไลบรารี JavaScript ที่กว้างขวาง ในบทความนี้ เราจะเจาะลึกถึงวิธีสำคัญที่ HTML5 ปรับปรุงกราฟิกและเอฟเฟกต์ในการทำเว็บและทำแอพ

1. แคนวาส (Canvas) API

องค์ประกอบ HTML5 <canvas> เป็นตัวเปลี่ยนเกมในการทำเว็บและทำแอพ เป็นภูมิภาคที่วาดได้พร้อมอินเทอร์เฟซ JavaScript สำหรับเรนเดอร์กราฟิกและรูปภาพได้ทันที ก่อนหน้านี้ นักพัฒนาเว็บต้องพึ่งพา Flash หรือไลบรารี JavaScript จำนวนมากเพื่อสร้างกราฟิก ภาพเคลื่อนไหว หรือแม้แต่แผนภูมิง่ายๆ แบบกำหนดเอง

ทำไมต้องแคนวาส

  1. กราฟิกแบบไดนามิก : ด้วย <canvas> คุณจะสามารถวาดรูปร่าง เส้น ข้อความ และเพิ่มรูปภาพแบบไดนามิกได้ มีประโยชน์สำหรับการสร้างกราฟิกแบบเรียลไทม์ เช่น กราฟิกเกม การแสดงข้อมูลเป็นภาพ หรือเครื่องมือแก้ไขแบบโต้ตอบ
  2. ประสิทธิภาพ : เนื่องจาก Canvas เป็นแบบบิตแมป จึงให้ประสิทธิภาพการเรนเดอร์ที่ยอดเยี่ยม มีประสิทธิภาพสูงในการจัดการพิกเซล ทำให้เหมาะสำหรับแอปแก้ไขรูปภาพหรือแอนิเมชั่นที่ซับซ้อน
  3. การแสดงผลฝั่งไคลเอ็นต์ : การดำเนินการของ Canvas เกิดขึ้นบนฝั่งไคลเอ็นต์ ซึ่งช่วยลดภาระบนเซิร์ฟเวอร์ นี่เป็นสิ่งสำคัญสำหรับการทำเว็บและทำแอพซึ่งเวลาแฝงต่ำและเวลาในการโหลดที่รวดเร็วเป็นสิ่งสำคัญ

ตัวอย่างโค้ด: การวาดรูปร่างอย่างง่าย

นี่คือตัวอย่างง่ายๆ ของการวาดรูปสี่เหลี่ยมผืนผ้าโดยใช้ Canvas API

<!DOCTYPE html>
<html>
<head>
  <title>Canvas Example</title>
</head>
<body>
  <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000;">
  </canvas>
  <script>
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    ctx.fillStyle = "#FF0000";
    ctx.fillRect(0, 0, 150, 75);
  </script>
</body>
</html>

ในตัวอย่างนี้ เราสร้างองค์ประกอบ canvas และรับบริบทการวาดโดยใช้ JavaScript จากนั้นเราวาดรูปสี่เหลี่ยมผืนผ้าที่เต็มไปด้วยสีแดง

2. กราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ (Scalable Vector Graphics) (SVG)

แม้ <canvas> จะเหมาะสำหรับกราฟิกบิตแมปและการเรนเดอร์ที่ซับซ้อน แต่ Scalable Vector Graphics (SVG) ก็เชี่ยวชาญด้านกราฟิกแบบเวกเตอร์ตามชื่อ รูปภาพ SVG ไม่ขึ้นกับความละเอียด ซึ่งหมายความว่ารูปภาพจะไม่สูญเสียคุณภาพเมื่อขยายหรือลดขนาด

ทำไมต้อง SVG

  1. ความสามารถในการปรับขนาด : เนื่องจาก SVG ไม่ใช่แบบพิกเซล จึงสามารถปรับขนาดได้โดยไม่สูญเสียคุณภาพ ทำให้เหมาะสำหรับโลโก้และไอคอนในการออกแบบเว็บและแอปแบบตอบสนอง
  2. การจัดการ DOM : SVG เป็นส่วนหนึ่งของ HTML5 Document Object Model (DOM) คุณสามารถใช้ JavaScript เพื่อจัดการองค์ประกอบ SVG แบบไดนามิก ทำให้สามารถโต้ตอบและภาพเคลื่อนไหวได้โดยไม่ต้องใช้ไลบรารีเพิ่มเติม

ตัวอย่างโค้ด: การสร้างองค์ประกอบ SVG อย่างง่าย

<!DOCTYPE html>
<html>
<head>
  <title>SVG Example</title>
</head>
<body>
  <svg width="100" height="100">
    <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
  </svg>
</body>
</html>

ในตัวอย่างนี้ เราสร้างองค์ประกอบ SVG ที่มีวงกลม เราตั้งค่าพิกัดศูนย์กลาง รัศมี และสีของวงกลมสำหรับเส้นขีดและการเติม

3. เอฟเฟกต์ (Effects) CSS3

CSS3 ซึ่งมักใช้ร่วมกับ HTML5 นำเสนอเอฟเฟกต์และการเปลี่ยนภาพมากมายที่ช่วยปรับปรุงด้านการมองเห็นของการทำเว็บและทำแอพได้อย่างมาก ขณะนี้รองรับฟีเจอร์ต่างๆ เช่น การไล่ระดับสี เงา และภาพเคลื่อนไหวแล้ว ซึ่งช่วยลดการพึ่งพาไฟล์รูปภาพและ JavaScript

เหตุใดจึงต้องใช้เอฟเฟกต์ CSS3

  1. ความเข้ากันได้ข้ามเบราว์เซอร์ : เว็บเบราว์เซอร์สมัยใหม่ส่วนใหญ่รองรับเอฟเฟกต์ CSS3 ทำให้ง่ายต่อการรักษารูปลักษณ์ที่สอดคล้องกันบนแพลตฟอร์มต่างๆ
  2. ประสิทธิภาพ : โดยทั่วไปเอฟเฟกต์ CSS3 จะได้รับการเพิ่มประสิทธิภาพมากกว่าเมื่อเทียบกับภาพเคลื่อนไหวที่ใช้ JavaScript หรือไลบรารีของบุคคลที่สาม
  3. ใช้งานง่าย : ด้วยโค้ดเพียงไม่กี่บรรทัด นักพัฒนาสามารถสร้างแอนิเมชั่นและการเปลี่ยนภาพที่ซับซ้อน ปรับปรุงขั้นตอนการพัฒนา

ตัวอย่างโค้ด: การเปลี่ยน CSS3 อย่างง่าย

<!DOCTYPE html>
<html>
<head>
  <title>CSS3 Transition Example</title>
  <style>
    .box {
      width: 100px;
      height: 100px;
      background: red;
      transition: width 2s;
    }
    .box:hover {
      width: 200px;
    }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

ที่นี่ เรากำหนดองค์ประกอบ .box ที่จะขยายความกว้างภายใน 2 วินาทีเมื่อวางเมาส์เหนือ ทำให้เกิดเอฟเฟกต์การเปลี่ยนแปลงที่ราบรื่น


HTML5 พร้อมด้วย CSS3 ได้นำความก้าวหน้าที่สำคัญในด้านความสามารถด้านกราฟิกและเอฟเฟ็กต์ภาพสำหรับการทำเว็บและทำแอพ คุณสมบัติเช่นเอฟเฟกต์ Canvas API, SVG และ CSS3 ไม่เพียงทำให้งานของนักพัฒนาง่ายขึ้น แต่ยังช่วยยกระดับประสบการณ์ผู้ใช้อีกด้วย ไม่ว่าคุณกำลังพัฒนาเกมที่ซับซ้อน เครื่องมือแสดงข้อมูลเป็นภาพ หรือเพียงแค่ต้องการเพิ่มองค์ประกอบเชิงโต้ตอบที่น่าสนใจให้กับไซต์ของคุณ HTML5 ก็มีเครื่องมือที่คุณต้องการเพื่อทำให้มีรูปลักษณ์ที่สวยงามและทนทานต่อการใช้งาน


HTML5 คืออะไร

HTML5 คือ ตอนที่ 4 : มัลติมีเดีย (Multimedia) ใน HTML5
HTML5 คือ ตอนที่ 6 : การลากและวาง (Drag-and-Drop API)