สร้างเอฟเฟ็คซูมภาพ Hover ไม่ล้นกรอบ ด้วย CSS (Image Zoom Effect)

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

เอฟเฟกต์ซูมรูปภาพเมื่อเอาเมาส์ไปชี้ (Hover Zoom) เป็นเทคนิคยอดนิยมในเว็บไซต์สมัยใหม่ โดยเฉพาะเว็บอสังหาริมทรัพย์ โรงแรม รีสอร์ต และแบรนด์ระดับพรีเมียม ✨
จุดสำคัญที่สุดคือ ภาพต้องซูมได้ แต่ต้องไม่ล้นกรอบ เพื่อให้ดูเรียบร้อย หรู และเป็นมืออาชีพ

บทความนี้อธิบายแบบครบ 👇
✅ โค้ดพร้อมใช้ (Production Ready)
✅ ซูมแล้วไม่ล้นกรอบ
✅ ปรับความเร็ว / ความแรงการซูมได้
✅ อธิบายทุกบรรทัดว่าใส่แล้วเกิดอะไรขึ้น

ตัวอย่างเอฟเฟกต์ที่ได้

เมื่อเอาเมาส์ไปชี้ที่รูป:

✨ ภาพจะค่อย ๆ ขยาย
✨ ขยายอยู่ในกรอบเดิม
✨ ไม่ล้น ไม่กระโดด
✨ ให้ความรู้สึก Luxury / Cinematic

หัวใจหลักที่ทำให้การซูมภาพไม่ล้นกรอบคือ

							
							
					overflow: hidden;				
			

เมื่อภาพถูกขยาย (scale)
ส่วนที่เกินขอบ container จะถูก “ตัดทิ้ง”

❌ ถ้าไม่มีบรรทัดนี้

  • ภาพจะล้นออกมา

  • อาจทับ element อื่น

  • ดูไม่มืออาชีพ

✅ เมื่อใส่แล้ว

  • ภาพถูก crop ภายในกรอบ

  • ดูสะอาด เรียบร้อย

  • ใช้ในเว็บระดับ production

หัวใจหลักที่ทำให้การซูมภาพไม่ล้นกรอบคือ

📌 กำหนด animation

ความหมาย

  • transform → property ที่จะ animate

  • 3s → ใช้เวลา 3 วินาที

  • ease-out → เริ่มเร็ว แล้วช้าลง


🎛️ จุดปรับ “ระยะเวลาการซูม”

⏱️ ระยะเวลา 🎨 ความรู้สึก 💡 เหมาะกับการใช้งาน
0.3s ⚡ เร็ว UI ทั่วไป, ปุ่ม, การ์ดสินค้า
1s 🙂 ปกติ เว็บไซต์ทั่วไป
2–4s ✨ Premium อสังหาฯ, โรงแรม, Portfolio
5s+ 🎬 Cinematic Luxury Brand, Hero Image

ส่วนที่กำหนด “ความนุ่มของการซูม”

📌 ใช้กับรูปที่กำหนด width/height

ผลลัพธ์:

  • ภาพจะเติมเต็มพื้นที่

  • ไม่ยืด ไม่บิด

  • Crop แบบสวยงามอัตโนมัติ

CSS Code

							
							
					/* ============================= */
/* Container ครอบรูป */
/* ============================= */

.img-zoom-hover {
    width: 400px;              /* ปรับขนาดกรอบ */
    height: 260px;

    overflow: hidden;          /* ⭐ สำคัญ: ซูมแล้วไม่ล้นกรอบ */
    position: relative;

    border-radius: 6px;        /* มุมโค้ง (ไม่จำเป็น) */
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);
}

/* ============================= */
/* รูปภาพด้านใน */
/* ============================= */

.img-zoom-hover img {
    width: 100%;
    height: 100%;

    object-fit: cover;         /* ⭐ ภาพเต็มกรอบเสมอ */

    transition: transform 3s ease-out;  /* ⭐ ระยะเวลาการซูม */
    will-change: transform;    /* ⭐ ทำให้ animation ลื่น */
}

/* ============================= */
/* Hover — สั่งให้ซูม */
/* ============================= */

.img-zoom-hover:hover img {
    transform: scale(1.05);    /* ⭐ ระดับการซูม */
}				
			

HTML

							
							
					<h2>ตัวอย่าง Effect Zoom แบบไม่ล้นกรอบ</h2>

<div class="img-zoom-hover">
    <img src="https://images.unsplash.com/photo-1505693416388-ac5ce068fe85?q=80&w=1200" alt="Sample Image">
</div>				
			

โค้ดตัวอย่างเต็มๆ

โค้ดสำเร็จรูปสามารถ Copy ไปใช้งานได้เลยครับ

							
							
					<style>

/* ============================= */
/* Container ครอบรูป */
/* ============================= */

.img-zoom-hover {
    width: 400px;              /* ปรับขนาดกรอบ */
    height: 260px;

    overflow: hidden;          /* ⭐ สำคัญ: ซูมแล้วไม่ล้นกรอบ */
    position: relative;

    border-radius: 6px;        /* มุมโค้ง (ไม่จำเป็น) */
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);
}

/* ============================= */
/* รูปภาพด้านใน */
/* ============================= */

.img-zoom-hover img {
    width: 100%;
    height: 100%;

    object-fit: cover;         /* ⭐ ภาพเต็มกรอบเสมอ */

    transition: transform 3s ease-out;  /* ⭐ ระยะเวลาการซูม */
    will-change: transform;    /* ⭐ ทำให้ animation ลื่น */
}

/* ============================= */
/* Hover — สั่งให้ซูม */
/* ============================= */

.img-zoom-hover:hover img {
    transform: scale(1.05);    /* ⭐ ระดับการซูม */
}

</style>


<h2>ตัวอย่าง Effect Zoom แบบไม่ล้นกรอบ</h2>

<div class="img-zoom-hover">
    <img src="https://images.unsplash.com/photo-1505693416388-ac5ce068fe85?q=80&w=1200" alt="Sample Image">
</div>

				
			

ผลลัพธ์

Sample Image

สรุป

เอฟเฟกต์ Zoom รูปภาพแบบไม่ล้นกรอบเกิดจากการทำงานร่วมกันของ 3 ส่วนหลัก:

⭐ Containeroverflow: hidden
⭐ Animationtransition
⭐ การขยายtransform: scale()

เมื่อใส่ครบ:

✅ ภาพซูมได้
✅ ไม่ล้นกรอบ
✅ เคลื่อนไหวนุ่ม
✅ ดูเป็นมืออาชีพ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึก