メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

การสร้าง Parallax Scrolling Effect ด้วย CSS

บทความนี้อธิบายวิธีการสร้าง Parallax Scrolling Effect ด้วย CSS สองวิธีหลักๆ คือ การใช้ `background-attachment: fixed` ซึ่งง่ายแต่ปรับแต่งได้จำกัด และการใช้ `tra...

การสร้าง Parallax Scrolling Effect ด้วย CSS

Parallax Scrolling Effect เป็นเทคนิคที่สร้างความรู้สึกว่าภาพพื้นหลังเคลื่อนที่ช้ากว่าเนื้อหาด้านหน้า ทำให้เกิดมิติและความน่าสนใจในการเลื่อนหน้าเว็บ เทคนิคนี้เป็นที่นิยมในการสร้างเว็บไซต์แบบ Landing Page หรือเว็บไซต์ที่ต้องการเน้นประสบการณ์การใช้งาน (UX) ที่น่าประทับใจ

ในบทความนี้ เราจะมาเรียนรู้วิธีการสร้าง Parallax Scrolling Effect อย่างง่ายด้วย CSS โดยเน้นที่การทำความเข้าใจคุณสมบัติหลักที่ใช้ในการสร้างเอฟเฟกต์นี้ และข้อควรระวังในการใช้งาน

background-attachment: fixed: จุดเริ่มต้นของ Parallax

คุณสมบัติ background-attachment เป็นหัวใจสำคัญในการสร้าง Parallax Scrolling Effect แบบง่ายที่สุด ค่า fixed จะทำให้ภาพพื้นหลังไม่เลื่อนตามการเลื่อนหน้าจอ แต่จะคงที่อยู่กับ viewport เสมอ เมื่อเนื้อหาด้านหน้าเลื่อนผ่านไป จะเกิดภาพลวงตาว่าพื้นหลังเคลื่อนที่ช้ากว่า

ลองดูตัวอย่าง HTML และ CSS ด้านล่าง:

<div class="parallax-container">
  <div class="parallax-content">
    <h2>Parallax Section</h2>
    <p>เนื้อหาในส่วน Parallax.</p>
    <p>เลื่อนหน้าจอลงเพื่อดูเอฟเฟกต์!</p>
  </div>
</div>
.parallax-container {
  height: 500px; /* กำหนดความสูงของส่วน Parallax */
  background-image: url("your-image.jpg"); /* แทนที่ด้วย URL ของรูปภาพของคุณ */
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

.parallax-content {
  padding: 50px;
  background-color: rgba(255, 255, 255, 0.8); /* สีพื้นหลังโปร่งใสสำหรับเนื้อหา */
}

ในตัวอย่างนี้:

  • .parallax-container คือส่วนที่เรากำหนดให้เป็น Parallax Effect
  • height กำหนดความสูงของส่วนนั้น
  • background-image คือรูปภาพที่เราจะใช้เป็นพื้นหลัง
  • background-attachment: fixed; ทำให้รูปภาพพื้นหลังไม่เลื่อนตามการเลื่อนหน้าจอ
  • background-position: center; จัดตำแหน่งรูปภาพให้อยู่ตรงกลาง
  • background-repeat: no-repeat; ป้องกันไม่ให้รูปภาพแสดงซ้ำ
  • background-size: cover; ทำให้รูปภาพครอบคลุมพื้นที่ทั้งหมดของ container
  • .parallax-content คือส่วนที่ใส่เนื้อหา ซึ่งมีพื้นหลังโปร่งใสเพื่อให้เห็นภาพพื้นหลังได้

ข้อดีของวิธีนี้คือใช้งานง่ายและไม่ต้องใช้ JavaScript แต่มีข้อจำกัดคือ Parallax Effect จะเกิดขึ้นในแนวดิ่งเท่านั้น และไม่สามารถปรับแต่งความเร็วในการเลื่อนของพื้นหลังได้

transform: translateZ(): Parallax แบบ 3D (Pseudo-3D)

อีกวิธีหนึ่งในการสร้าง Parallax Scrolling Effect คือการใช้คุณสมบัติ transform: translateZ() ร่วมกับ perspective คุณสมบัตินี้จะสร้างความรู้สึกว่าองค์ประกอบต่างๆ อยู่ในระยะที่แตกต่างกันใน space 3 มิติ ถึงแม้ว่ามันจะเป็นเพียงภาพลวงตา

วิธีการนี้ซับซ้อนกว่า background-attachment: fixed เล็กน้อย แต่ให้ความยืดหยุ่นในการปรับแต่งมากกว่า

ตัวอย่าง HTML:

<div class="perspective-container">
  <div class="parallax-layer layer-back">
    <img src="your-background-image.jpg" alt="Background Image">
  </div>
  <div class="parallax-layer layer-front">
    <h2>Parallax Section</h2>
    <p>เนื้อหาในส่วน Parallax (ด้านหน้า).</p>
  </div>
</div>

ตัวอย่าง CSS:

.perspective-container {
  perspective: 500px; /* กำหนดระยะสายตา */
  height: 100vh; /* ใช้ความสูงเต็ม viewport */
  overflow-x: hidden; /* ป้องกัน scrollbar แนวนอน */
  overflow-y: auto; /* เปิดใช้งาน scrollbar แนวตั้ง */
  position: relative;
}

.parallax-layer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.layer-back {
  transform: translateZ(-300px) scale(4); /* เลื่อนไปด้านหลังและขยายขนาด */
  z-index: -1; /* วางไว้ด้านหลังเนื้อหา */
}

.layer-front {
  transform: translateZ(0); /* อยู่ในระนาบปกติ */
  background-color: rgba(255, 255, 255, 0.7);
  padding: 20px;
  text-align: center;
}

.parallax-layer img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

คำอธิบาย:

  • .perspective-container: เป็น container หลัก ที่กำหนด perspective ซึ่งกำหนดระยะสายตาในการมองเห็น (ยิ่งค่าน้อย ยิ่งเห็นผลของ perspective มาก)
  • overflow-x: hidden; และ overflow-y: auto;: ป้องกัน scrollbar แนวนอน และเปิดใช้งาน scrollbar แนวตั้ง
  • .parallax-layer: เป็น container สำหรับแต่ละ layer ที่จะสร้าง Parallax Effect
  • .layer-back: เลื่อนไปด้านหลังด้วย translateZ(-300px) และขยายขนาดด้วย scale(4) เพื่อให้ครอบคลุมพื้นที่ทั้งหมด
  • .layer-front: อยู่ในระนาบปกติด้วย translateZ(0)

หลักการทำงานคือ: เมื่อเราเลื่อนหน้าจอ, .perspective-container จะเลื่อนขึ้นลง แต่เนื่องจาก .layer-back ถูกเลื่อนไปด้านหลังและขยายขนาดไว้แล้ว, มันจะเลื่อนด้วยความเร็วที่แตกต่างกัน ทำให้เกิด Parallax Effect

ข้อดีของวิธีนี้คือสามารถปรับแต่งความเร็วในการเลื่อนของแต่ละ layer ได้อย่างอิสระ โดยการปรับค่า translateZ() และ scale()

ข้อควรระวังในการใช้งาน Parallax Scrolling Effect

ถึงแม้ว่า Parallax Scrolling Effect จะช่วยเพิ่มความน่าสนใจให้กับเว็บไซต์ แต่ก็มีข้อควรระวังที่ควรพิจารณา:

  • Performance: การใช้ Parallax Scrolling Effect มากเกินไป อาจส่งผลเสียต่อประสิทธิภาพของเว็บไซต์ โดยเฉพาะบนอุปกรณ์เคลื่อนที่ เนื่องจากต้องใช้ทรัพยากรในการประมวลผลกราฟิกมากขึ้น ควรทดสอบบนอุปกรณ์ต่างๆ เพื่อให้แน่ใจว่าเว็บไซต์ยังคงทำงานได้อย่างราบรื่น
  • Accessibility: Parallax Scrolling Effect อาจทำให้ผู้ใช้บางคนรู้สึกเวียนหัวหรือคลื่นไส้ โดยเฉพาะผู้ที่มีอาการเมารถ หรือความผิดปกติเกี่ยวกับการทรงตัว ควรมีตัวเลือกให้ผู้ใช้สามารถปิด Parallax Effect ได้
  • Mobile Responsiveness: ตรวจสอบให้แน่ใจว่า Parallax Effect ทำงานได้อย่างถูกต้องบนอุปกรณ์เคลื่อนที่ที่มีขนาดหน้าจอแตกต่างกัน บางครั้งอาจต้องปรับแต่ง CSS เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
  • Content Overload: อย่าใช้ Parallax Effect มากเกินไปจนทำให้ผู้ใช้เสียสมาธิจากเนื้อหาหลัก ควรใช้ Parallax Effect เพื่อเน้นจุดสำคัญ หรือสร้างความน่าสนใจให้กับส่วนต่างๆ ของเว็บไซต์

แนวปฏิบัติที่ดี:

  • ใช้รูปภาพที่มีขนาดเหมาะสม: รูปภาพขนาดใหญ่เกินไปจะทำให้เว็บไซต์โหลดช้า
  • Optimize CSS: ลดขนาดไฟล์ CSS และใช้เทคนิคต่างๆ เพื่อเพิ่มประสิทธิภาพ
  • ทดสอบบนอุปกรณ์ต่างๆ: ตรวจสอบให้แน่ใจว่า Parallax Effect ทำงานได้อย่างถูกต้องบนทุกอุปกรณ์
  • ใส่ใจเรื่อง Accessibility: ให้ผู้ใช้สามารถปิด Parallax Effect ได้หากต้องการ

สรุป

ในบทความนี้ เราได้เรียนรู้วิธีการสร้าง Parallax Scrolling Effect ด้วย CSS สองวิธีหลักๆ คือ การใช้ background-attachment: fixed และ transform: translateZ() แต่ละวิธีมีข้อดีและข้อเสียที่แตกต่างกัน ควรเลือกใช้วิธีที่เหมาะสมกับความต้องการและข้อจำกัดของโครงการ

สิ่งสำคัญคือต้องระลึกถึงข้อควรระวังในการใช้งาน Parallax Scrolling Effect เพื่อให้เว็บไซต์ไม่เพียงแต่สวยงาม แต่ยังใช้งานง่ายและมีประสิทธิภาพอีกด้วย ในบทความต่อไป เราจะมาเรียนรู้เกี่ยวกับการใช้งาน CSS Containment ซึ่งเป็นเทคนิคในการปรับปรุงประสิทธิภาพของเว็บไซต์โดยการจำกัด scope ของการคำนวณ layout และ rendering

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る