เครื่องสร้าง Transform
สร้างและดูตัวอย่างคุณสมบัติ CSS transform ด้วยภาพ
CSS Transform เป็นคุณสมบัติ CSS ที่ทรงพลังที่ช่วยให้คุณสามารถแปลงองค์ประกอบเว็บในพื้นที่ 2D หรือ 3D ได้ ด้วยการแปลงเช่น translate, rotate, scale และ skew คุณสามารถสร้างการออกแบบเว็บแบบไดนามิกและโต้ตอบได้ สร้างเอฟเฟกต์ที่ต้องการได้อย่างง่ายดายด้วยการแสดงตัวอย่างแบบเรียลไทม์
transform: none;
ฟังก์ชัน Transform
- • translate(x, y): translate(x, y): ย้ายองค์ประกอบตามจำนวน x, y
- • scale(x, y): scale(x, y): ปรับขนาดองค์ประกอบตามอัตราส่วน x, y
- • rotate(angle): rotate(angle): หมุนองค์ประกอบตามมุม
- • skew(x, y): skew(x, y): บิดเบือนองค์ประกอบตามองศา x, y
เคล็ดลับการใช้งาน
- • สามารถรวมฟังก์ชัน Transform หลายฟังก์ชันได้โดยคั่นด้วยช่องว่าง
- • เปลี่ยนจุดกำเนิดการแปลงด้วย transform-origin
- • ใช้ร่วมกับ transition เพื่อสร้างเอฟเฟกต์แอนิเมชันที่ราบรื่น
- • ใช้คุณสมบัติ perspective สำหรับการแปลง 3D
🎯 แนวคิดพื้นฐานของ Transform
CSS Transform เป็นคุณสมบัติ CSS ที่เปลี่ยนรูปร่าง ขนาด และตำแหน่งขององค์ประกอบ ช่วยให้สามารถแปลงองค์ประกอบด้วยภาพโดยไม่รบกวนการไหลของเอกสารปกติ
ไวยากรณ์พื้นฐาน:
transform: function(value) function(value) ...;
📐 รายละเอียดฟังก์ชัน Transform
🔄 Translate (การเคลื่อนที่)
- •
translate(x, y)
: translate(x, y): ย้ายตามแกน X, Y - •
translateX(x)
: translateX(x): ย้ายตามแกน X เท่านั้น - •
translateY(y)
: translateY(y): ย้ายตามแกน Y เท่านั้น - •
translate3d(x, y, z)
: translate3d(x, y, z): การเคลื่อนที่ 3D
transform: translate(50px, 100px);
📏 Scale (การปรับขนาด)
- •
scale(x, y)
: scale(x, y): ปรับขนาดแกน X, Y - •
scaleX(x)
: scaleX(x): ปรับขนาดแกน X เท่านั้น - •
scaleY(y)
: scaleY(y): ปรับขนาดแกน Y เท่านั้น - • มากกว่า 1 ขยาย, น้อยกว่า 1 ย่อ
transform: scale(1.5, 0.8);
🔄 Rotate (การหมุน)
- •
rotate(angle)
: rotate(angle): หมุนรอบแกน Z - •
rotateX(angle)
: rotateX(angle): หมุนรอบแกน X - •
rotateY(angle)
: rotateY(angle): หมุนรอบแกน Y - • ใช้หน่วย deg, rad, turn สำหรับมุม
transform: rotate(45deg);
📐 Skew (การเฉือน)
- •
skew(x, y)
: skew(x, y): เฉือนตามแกน X, Y - •
skewX(angle)
: skewX(angle): เฉือนตามแกน X - •
skewY(angle)
: skewY(angle): เฉือนตามแกน Y - • แปลงเป็นรูปร่างสี่เหลี่ยมด้านขนาน
transform: skew(15deg, 5deg);
🎨 Transform Origin (จุดแปลง)
คุณสมบัติ transform-origin กำหนดจุดกำเนิดการแปลง ค่าเริ่มต้นคือศูนย์กลางขององค์ประกอบ (50% 50%)
การใช้คำหลัก
transform-origin: top left;
การใช้เปอร์เซ็นต์
transform-origin: 25% 75%;
การใช้พิกเซล
transform-origin: 10px 20px;
⚡ เคล็ดลับการเพิ่มประสิทธิภาพ
✅ คำแนะนำ
- • สร้างแอนิเมชันเฉพาะ transform และ opacity
- • ใช้คุณสมบัติ will-change
- • ใช้การเร่งความเร็ว 3D (translateZ(0))
- • สร้างเลเยอร์คอมโพสิตเพื่อประสิทธิภาพที่ดีขึ้น
❌ สิ่งที่ควรหลีกเลี่ยง
- • การสร้างแอนิเมชันความกว้าง, ความสูง
- • การสร้างแอนิเมชันตำแหน่งซ้าย, บน
- • การซ้อน transform ที่มากเกินไป
- • การใช้ will-change ที่ไม่จำเป็น
ตัวอย่างการเพิ่มประสิทธิภาพ:
.optimized {
will-change: transform;
transform: translateZ(0); /* 3D 가속 */
transition: transform 0.3s ease;
}
🎬 แอนิเมชันและการเปลี่ยนผ่าน
Transform สามารถใช้ร่วมกับ CSS Transition และ Animation เพื่อสร้างเอฟเฟกต์ที่ราบรื่น
ตัวอย่าง Transition
.hover-effect {
transition: transform 0.3s ease;
}
.hover-effect:hover {
transform: scale(1.1) rotate(5deg);
}
ตัวอย่าง Keyframe Animation
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-20px); }
}
.bounce { animation: bounce 1s infinite; }
🌐 ความเข้ากันได้ของเบราว์เซอร์
CSS Transform รองรับในเบราว์เซอร์สมัยใหม่ทั้งหมด แต่เบราว์เซอร์รุ่นเก่าอาจต้องใช้คำนำหน้าผู้ขาย
ตัวอย่างคำนำหน้าผู้ขาย:
-webkit-transform: rotate(45deg); /* Safari, Chrome */
-moz-transform: rotate(45deg); /* Firefox */
-ms-transform: rotate(45deg); /* IE 9 */
transform: rotate(45deg); /* 표준 */
🎯 ตัวอย่างการใช้งานจริง
เอฟเฟกต์โฮเวอร์ของการ์ด
.card {
transition: transform 0.3s ease;
cursor: pointer;
}
.card:hover {
transform: translateY(-10px) scale(1.02);
}
ตัวหมุนโหลด
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.spinner {
animation: spin 1s linear infinite;
}
เอฟเฟกต์การเข้าของโมดอล
.modal {
transform: scale(0) rotate(180deg);
transition: transform 0.3s ease;
}
.modal.show {
transform: scale(1) rotate(0deg);
}
เอฟเฟกต์การคลิกปุ่ม
.button {
transition: transform 0.1s ease;
}
.button:active {
transform: scale(0.95);
}
🔧 เครื่องมือดีบักและการพัฒนา
เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์
- • การแก้ไขแบบเรียลไทม์ในแผง Elements
- • ตรวจสอบค่าสุดท้ายในแท็บ Computed
- • การวิเคราะห์ประสิทธิภาพด้วยแท็บ Performance
- • ตรวจสอบโครงสร้างเลเยอร์ด้วย 3D View
คุณสมบัติ CSS ที่มีประโยชน์
- •
transform-style: preserve-3d
- •
perspective: 1000px
- •
backface-visibility: hidden
- •
will-change: transform
💡 เคล็ดลับมืออาชีพ
เคล็ดลับประสิทธิภาพ
การใช้ transform3d() หรือ translateZ(0) เพื่อสร้างเลเยอร์คอมโพสิตสำหรับการเร่งความเร็ว GPU สามารถปรับปรุงประสิทธิภาพแอนิเมชันได้อย่างมาก
เคล็ดลับการเข้าถึง
ใช้ media query prefers-reduced-motion เพื่อให้ทางเลือกสำหรับผู้ใช้ที่ไวต่อการเคลื่อนไหว
เคล็ดลับการออกแบบ
การตั้งค่า transform-origin อย่างเหมาะสมสามารถสร้างเอฟเฟกต์การแปลงที่เป็นธรรมชาติมากขึ้น
เคล็ดลับการพัฒนา
การใช้ตัวแปร CSS เพื่อควบคุมค่า transform แบบไดนามิกทำให้การรวม JavaScript ง่ายขึ้น