Table of Contents
Toggleบทนำ
สำหรับวันนี้เราจะมาเรียนรู้เรื่อง การทำเอฟเฟ็คซูมกับรูปภาพกันนะครับ แต่ไม่ใช่การซูมธรรมดา แต่จะเป็นการซูมเข้าโดยที่ภาพขยายขึ้นแต่ภาพไม่ล้นกรอบ ทำยังไง ไปดูกันครับ
เอฟเฟกต์ซูมรูปภาพเมื่อเอาเมาส์ไปชี้ (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>
ผลลัพธ์
สรุป
เอฟเฟกต์ Zoom รูปภาพแบบไม่ล้นกรอบเกิดจากการทำงานร่วมกันของ 3 ส่วนหลัก:
⭐ Container → overflow: hidden
⭐ Animation → transition
⭐ การขยาย → transform: scale()
เมื่อใส่ครบ:
✅ ภาพซูมได้
✅ ไม่ล้นกรอบ
✅ เคลื่อนไหวนุ่ม
✅ ดูเป็นมืออาชีพ
Fullstack Developer ที่มีความเชี่ยวชาญด้านการตลาดออนไลน์ และ ได้รับรางวัล 1 Million Milestone จากการปิดการขายการทำเว็บไซต์ใน Fastwork ได้ยอดทะลุ 1 ล้านบาท และเป็นอดีต Backend Developer ธนาคารกรุงเทพ

