جاري التحميل...

التحويلات (Transforms) في CSS

درس الانتقالات علّمك مدة التغيير. Transform يحدّد أين تذهب البكسلات: انزلاق شارة، دوران أيقونة تحميل، تكبير badge عند hover — غالباً دون دفع الجيران كما يفعل margin أو top.

ماذا يغيّر transform؟

transform يطبّق تحويلاً ثنائي الأبعاد (ولاحقاً ثلاثي) على صندوق الرسم. يبقى العنصر في مكانه في التدفق ما لم تغيّر خصائص التخطيط. لذلك translate() مثالي للحركة الدقيقة: hover، فتح/إغلاق، تصحيحات صغيرة.

خاصية واحدة، دوال متعددة — لا تفصل الدوال بفواصل داخل قيمة transform واحدة؛ سلّسها بمسافات: transform: translateX(1rem) rotate(8deg) scale(1.05);

دوال 2D الأساسية

📊 نظرة على دوال transform ثنائية الأبعاد

الدالة مهمة شائعة
translate(x, y) / translateX / translateY نقل بصري دون إعادة تدفق مزعجة
rotate(زاوية) دوران أيقونات وأسهم (deg، turn)
scale(x, y) / scale(n) تكبير/تصغير للتأكيد — بقيم معقولة
skew(x, y) ميل نادر — زوايا صغيرة

الزوايا بـ deg أو turn. النسب في translate() نسبةً لحجم العنصر نفسه — مفيدة مع أنماط التوسيط التي تعرفها.

translate أولاً — الحركة اليومية

للنقرة البصرية، استخدم translate قبل top أو margin. المتصفح غالباً يرفع الطبقة إلى compositor — ومع transition من الدرس السابق تصبح الحركة أنعم.

Chip nudge on hover

css
.chip {
display: inline-block;
padding: 0.35rem 0.75rem;
border-radius: 999px;
background: #e0e7ff;
color: #1e3a8a;
transition: transform 0.2s ease, background-color 0.2s ease;
}

.chip:hover,
.chip:focus-visible {
transform: translateY(-0.15rem);
background: #c7d2fe;
}

الشارة ترتفع بصرياً؛ صندوق السطر في المستند يبقى. جرّب نفس التأثير بـ margin-top سالب — سترى القفز.

rotate و scale معاً

الأيقونات والشارات تجمع غالباً scale صغيراً مع rotate. زوايا ضيقة تحافظ على مظهر احترافي.

Badge pop and chevron spin

css
.badge {
display: inline-flex;
align-items: center;
gap: 0.35rem;
font-size: 0.875rem;
transition: transform 0.25s ease;
}

.badge:hover {
transform: scale(1.06);
}

.chevron {
display: inline-block;
transition: transform 0.2s ease;
}

.menu-open .chevron {
transform: rotate(180deg);
}

scale(1.06) تأكيد؛ scale(2) خطأ شائع. rotate(180deg) للسهم يعني «مفتوح» — اربطه بتبديل class في HTML/JS.

transform-origin — محور الحركة

افتراضياً المحور في الوسط. transform-origin ينقله — أسفل-يسار كباب، أعلى-وسط، 50% 100% لتبويب ينحني من القاعدة.

Hinge from bottom edge with transition

css
.panel-tilt {
transform-origin: 50% 100%;
transition: transform 0.35s ease;
}

.panel-tilt.is-open {
transform: rotateX(12deg);
}

rotateX هنا تلميح خفيف. المسرح ثلاثي الأبعاد الكامل في جلسة 3D Transforms الاختيارية — الدرس هنا هو origin.

مع transition؛ تجنّب خصائص التخطيط

ضع transition على القاعدة وحرّك transform (وopacity) — لا width/top. احترم prefers-reduced-motion: reduce بإيقاف أو تقصير الدوران/التكبير الزخرفي.

جرّب بنفسك

  1. ارفع زراً بـ translateY(-0.2rem) وtransition — ثم جرّب margin-top ولاحظ الجيران.
  2. أدر chevron 180deg عند .is-open؛ مدة ~0.2s.
  3. transform-origin: left center على بطاقة مع rotate صغير — قارن بالوسط.
  4. سلسل translateX(0.5rem) scale(1.04) في transform واحد.
  5. emulate prefers-reduced-motion: reduce وأزل الحركة غير الضرورية.

أخطاء شائعة

  • استخدام top/margin للرفع بدل translate
  • rotate(45deg) على wrappers كبيرة
  • نسيان transform-origin في UI م hinged
  • scale(0) للإخفاء دون خطة accessibility
  • 3D ثقيل عندما يكفي 2D

ملخص

  • transform يحرّك الصندوق المرسوم؛ التدفق غالباً ثابت
  • translate و rotate و scale و skew — سلسل الدوال في transform واحد
  • transform-origin يحدد المحور
  • اربط transform مع transition؛ فضّل transform/opacity
  • التالي: Animations (@keyframes)

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
6
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى