انتقل إلى محتوى الدرس
الدرس 128
تاريخ النشر: تاريخ التحديث:
دورة لغة CSS

التحويلات ثلاثية الأبعاد في لغة CSSCSS 3D Transforms طريقة حفظ الفضاء الثلاثي للأبناء، وإخفاء الوجه الخلفي عند القلب، والمحور الثالث وإعداد المنظور

أتقن التحويلات ثلاثية الأبعاد في لغة CSS لضبط منظور المشهد وتدوير العناصر حول المحاور الثلاثة وتحريكها في العمق مع حفظ الفضاء الثلاثي للأبناء وإخفاء الوجه الخلفي للبطاقات.
أقسام الدرس
6
الأمثلة
3
اللغة
العربية
المشاهدات
4,374
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يضيف الفضاء ثلاثي الأبعاد في CSS محوراً ثالثاً هو محور العمق Z المتجه عمودياً من سطح الشاشة نحو عين المشاهد، إلى جانب المحور الأفقي X والرأسي Y؛ حيث تقرّب القيم الموجبة على محور Z العنصر نحوك، وتبعده القيم السالبة إلى داخل الشاشة.

غير أن التحويل الثلاثي يبدو مسطحاً بلا عمق ما لم تضبط خاصية المنظور perspective على الحاوية الأب بمسافة رؤية مناسبة تتراوح غالباً بين 600px و 1000px؛ فالقيم الصغيرة مثل 350px تمنح تقارباً حاداً كعدسة قريبة جداً، بينما تمنح القيم الكبيرة مثل 1200px عمقاً هادئاً ومتوازناً:

مخطط يوضح إعداد منظور المشهد والدوران حول محاور العمق وحفظ الفضاء الثلاثي وإخفاء الوجه الخلفي

تدير كل دالة دوران ثلاثية العنصرَ حول محور هندسي مختلف تماماً في الفراغ:

  • الدالة rotateX(angle): تدير العنصر حول محور أفقي فيميل طرفه العلوي للخلف أو للأمام كغطاء الحاسوب المحمول.
  • الدالة rotateY(angle): تدير العنصر حول محور رأسي فينفتح جانبياً نحو المشاهد أو للداخل كحركة باب الغرفة أو قلب البطاقة.
  • الدالة rotateZ(angle): تدير العنصر سطحياً على مستوى الشاشة حول محور العمق، وتكافئ التدوير الثنائي المعتاد.
CSS
.scene {
  perspective: 650px;
}
.door-y {
  transform: rotateY(35deg);
}
.flap-x {
  transform: rotateX(35deg);
}

داخل حاوية مزودة بخاصية perspective، تحرّك دالة translateZ(z) العنصرَ نحو عين المشاهد بالقيم الموجبة فيبدو أقرب وأكبر، أو تدفعه للخلف بالقيم السالبة فيبدو أبعد وأصغر. ولأن العناصر ثنائية السماكة بطبيعتها، تشترط translateZ(z) وحدات طول صريحة مثل px ولا تقبل النسب المئوية.

ويمكنك جمع المحاور الثلاثة في دالة موحدة translate3d(x, y, z) مثل translate3d(16px, -8px, 45px)، أو تحجيم الفضاء الثلاثي عبر scale3d(sx, sy, sz). جرّب الحالات الثلاث في المختبر التفاعلي التالي لمعاينة العمق والمنظور:

تطبّق المتصفحات افتراضياً القيمة transform-style: flat على أي عنصر أب خاضع للتحويل، مما يسطّح جميع عناصره الأبناء ويلصقهم بمستوى سطحه الواحد. وعند بناء بطاقات متعددة الطبقات أو مجسمات مركبة، اضبط transform-style: preserve-3d على الحاوية الدوارة ليحتفظ أبناؤها المباشرون بمواضعهم المستقلة في العمق عبر translateZ(z):

CSS
.stage {
  perspective: 700px;
}
.card-wrap {
  transform-style: preserve-3d;
  transform: rotateY(-28deg);
}
.badge-pop {
  transform: translateZ(36px);
}

عندما تقلب عنصراً بزاوية نصف دورة rotateY(180deg)، تعرض القيمة الافتراضية backface-visibility: visible نسخة معكوسة كالمرآة من محتواه الأمامي. أما ضبط backface-visibility: hidden فيخفي ظهر العنصر تماماً فور التفاته بعيداً عن المشاهد، وهو الأساس العملي لبناء البطاقات التعليمية ذات الوجهين الأمامي والخلفي:

CSS
.back-visible {
  transform: rotateY(180deg);
  backface-visibility: visible;
}
.back-hidden {
  transform: rotateY(180deg);
  backface-visibility: hidden;
}

يُلخّص الجدول المرجعي التالي توزيع خصائص المنظور والتحويل الثلاثي بين الحاوية الأم والعناصر المتحرّكة بداخلها، مع تذكّر أن القيمة transform: none تعيد العنصر فوراً إلى وضعه المسطح الطبيعي تمهيداً لتحريك هذه البطاقات بنعومة زمنية في الدرس القادم:

الخاصية أو الدالةالعنصر المستهدفالدور الوظيفي في الفضاء الثلاثي
perspectiveحاوية المشهد الأبتحديد مسافة عين المشاهد مثل 700px لإبراز العمق
perspective-originحاوية المشهد الأبتغيير موقع نقطة التلاشي عن المنتصف الافتراضي 50% 50%
rotateX(a) و rotateY(a)العنصر المتحرّكإمالة العنصر للأمام والخلف أو قلبه جانبياً
translateZ(z) و translate3d(x, y, z)العنصر المتحرّكتقريب العنصر أو إبعاده على محور العمق Z
transform-style: preserve-3dالغلاف الدوّار الأبمنع تسطّح العناصر الأبناء داخل مستوى واحد
backface-visibility: hiddenوجه البطاقةإخفاء الظهر المعكوس عند القلب بزاوية تتجاوز 90deg
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعلّمت في هذا الدرس إعداد خاصية المنظور perspective وتدوير العناصر حول المحاور الثلاثة وتحريكها في العمق مع تفعيل preserve-3d وإخفاء الظهر عبر backface-visibility: hidden. وفي الخطوة التالية سننتقل إلى درس الانتقالات في لغة CSS لتحويل التغيرات الفورية إلى حركة زمنية ناعمة ومتدرجة.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Perspective Distance مسافة المنظور
المسافة الافتراضية بين عين المشاهد ومستوى الشاشة التي تمنح التحويلات الثلاثية عمقاً واقعياً.
للمراجعة
02 Vanishing Point نقطة التلاشي البصرية
النقطة البؤرية التي تتحكم بها خاصية perspective-origin وتتقارب نحوها الحواف المبتعدة في العمق.
للمراجعة
03 Shared 3D Context الفضاء الثلاثي المشترك
وضع عرض تفعّله القيمة preserve-3d ليحتفظ الأبناء بمواضعهم المستقلة في العمق بدلاً من تسطيحهم.
للمراجعة
04 Element Backface الوجه الخلفي للعنصر
الجانب الخلفي المعكوس لصندوق العنصر الذي ينكشف عند تدويره بأكثر من 90 درجة حول المحور الأفقي أو الرأسي.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات3

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 3 مفهومةأول بطاقة، أول خطوة
01 3D 3D
Three-Dimensional
النظام الإحداثي الفراغي الذي يجمع المحور الأفقي X والمحور الرأسي Y ومحور العمق Z.
للمراجعة
02 FOV FOV
Field of View
زاوية الرؤية البصرية التي تزداد حدتها كلما صغرت قيمة خاصية المنظور بالبكسل.
للمراجعة
03 DOM DOM
Document Object Model
شجرة عناصر المستند التي تنظم علاقة الحاوية الأب بأبنائها داخل المشهد ثلاثي الأبعاد.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. غيّر قيمة perspective للحاوية من 350px إلى 1100px ولاحظ الفرق في حدة تقارب حواف البطاقة المائلة.

  2. بدّل قيمة transform-style بين flat و preserve-3d على البطاقة الأم لملاحظة بروز الشارة الداخلية للأمام.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

بأي اتجاه تحرّك القيمة الموجبة في translateZ(50px) العنصرَ عند تفعيل المنظور؟

02

أي دالة دوران ثلاثية تقلب البطاقة جانبياً حول محور رأسي كحركة فتح باب الغرفة؟

03

ما الأثر البصري لضبط قيمة صغيرة مثل perspective: 300px مقارنةً بقيمة كبيرة مثل 1200px؟

04

تُقبل النسب المئوية مثل translateZ(50%) في CSS لأن صناديق العناصر تمتلك سماكة افتراضية على محور العمق.

05

ما الخاصية والقيمة الواجب وضعهما على الحاوية الدوارة ليحتفظ أبناؤها بعمقهم المستقل في الفضاء الثلاثي؟

06

أي تصريح يمنع ظهور النص المقلوب المعكوس عند تدوير البطاقة بزاوية 180 درجة؟

07

تؤدي إضافة overflow: hidden على العنصر الحامل لـ transform-style: preserve-3d إلى إجبار المتصفح على تسطيح أبنائه.

08

لماذا يختفي العنصر بصرياً عند ضبط دورانه على الزاوية rotateY(90deg) تماماً؟