เรียนรู้ทำ elements zoom/scale-up on hover ด้วย pure CSS ใช้ transform property transformation method: scale()
Zoom/Scale-Up on Hover
ลอง hover mouse บน box นี้:
มัน scale up 1.5 เท่าของขนาดเดิม — ใหญ่ขึ้น 50% ตอน hover
CSS
transformproperty scale method เพิ่มหรือลดขนาด elements ได้ ทั้ง 3D และ 2D ตัวอย่างนี้ใช้ 2D
สร้างตัวอย่างต้องการ 1 HTML element และ 2 CSS rule-sets
HTML
สร้าง HTML element class zoom-box:
<div class="zoom-box"></div>
CSS
เพิ่ม CSS ใน stylesheet:
.zoom-box { background-color:#CF4B32; width: 100px; height: 100px; margin: 32px auto; transition: transform .2s; /* Animation */ } .zoom-box:hover { transform: scale(1.5); }
เสร็จแล้ว!
Code ทำงานอย่างไร
- สร้าง HTML div element class
zoom-box - สร้าง 2 rule-sets: static default state
.zoom-boxและ dynamic hover state.zoom-box:hover - Rule-set แรก: cosmetic/size properties (height, width, color) margin center align (optional)
- สำคัญ:
transitionproperty ค่าtransformduration.2s(200ms) - Rule-set ที่สอง
.zoom-box:hoverเพิ่มtransformpropertyscale()method พารามิเตอร์1.5= 150% ของขนาดเดิม
Browser Compatibility
Code พร้อม vendor prefixes สำหรับ Chrome, Firefox, Safari, Opera:
.zoom-box { background-color: #cf4b32; width: 100px; height: 100px; margin: 32px auto; -webkit-transition: -webkit-transform 0.2s; transition: -webkit-transform 0.2s; transition: transform 0.2s; transition: transform 0.2s, -webkit-transform 0.2s; /* Animation */ } .zoom-box:hover { -webkit-transform: scale(1.5); transform: scale(1.5); }
ข้อมูลเพิ่มเติม
สังเกต box element scale up/down ด้วย transition duration เดียวกัน แม้เพิ่ม transition property แค่ .zoom-box class
เพราะ transition property เพิ่มใน original class selector (.zoom-box) values จะ auto-apply ให้ additional selectors attached กับ class นี้ คือ :hover (pseudo-class)
ถ้าเพิ่ม transition property แค่ :hover selector จะ animate แค่ scale-up — ไม่ animate scale down ตอน mouse ออกจาก box จะหดทันที 0s duration — harsh on the eyes
อยาก animation type/duration ต่างกันบน state ต่างๆ (up/down) เพิ่ม transition property ให้ :hover pseudo-class selector ให้ค่าต่างออกไป