Menu
flag Ar iconالعربيةdown icon

التدوير rotate في CSS: الدالة rotate() والخاصية rotate والدوران

دوّر عنصرًا بـ transform: rotate(45deg) أو بالخاصية الأحدث rotate. تعلّم وحدات الزوايا (deg وturn وrad)، والتدوير حول زاوية بـ transform-origin، وتدوير النص والأيقونات، ومؤشر تحميل دوّار، والتدوير ثلاثي الأبعاد بـ rotateX وrotateY.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

تدوير عنصر

طريقتان بالنتيجة نفسها: الدالة rotate() داخل transform، أو الخاصية rotate وحدها. الزوايا الموجبة تدور مع عقارب الساعة:

الصندوقان الأزرق والأخضر مُداران بالطريقة نفسها تمامًا، 45 درجة مع عقارب الساعة حول مركزيهما. أما الكهرماني فزاويته سالبة، فيميل عكس عقارب الساعة. التدوير لا يحرّك التخطيط أبدًا: ما زال كل صندوق يشغل خانته الأصلية بحجم 90 في 60، ولهذا قد تتداخل العناصر المدارة مع جيرانها.

وحدات الزوايا

الوحدةالدائرة الكاملة90 درجة
deg360deg90deg
turn1turn0.25turn
rad6.2832rad1.5708rad
grad400grad100grad

deg هي الخيار المعتاد؛ وturn مقروءة جيدًا للدوران (rotate: 1turn). الزوايا فوق 360 مسموحة ومهمة في الحركات: rotate(720deg) في إطار مفتاحي تدور مرتين. اكتب الوحدة دائمًا: rotate(45) غير صالحة وتُتجاهل.

اسحب المنزلق لترى زاوية بكل وحدة:

التدوير حول زاوية: transform-origin

يدور العنصر حول مركزه افتراضيًا. تنقل transform-origin نقطة الارتكاز. عقرب الساعة يرتكز على طرفه لا على منتصفه:

يقع الطرف السفلي للعقرب على الدبوس الكهرماني في مركز الوجه، وتديره rotate: 120deg إلى الساعة الرابعة. احذف سطر transform-origin فيدور العقرب حول منتصفه بدلًا من ذلك، بعيدًا عن الدبوس.

تدوير النص والتسميات العمودية

الميلان الصغير بـ rotate مناسب لشارة أو ملصق. أما لتسمية عمودية حقًا فـ writing-mode أفضل، لأنها تغيّر التخطيط: يصبح العنصر طويلًا وضيقًا بدل أن يتداخل مع ما بجانبه.

تعرض القراءة حجم كل تسمية في التخطيط. المدارة ما زالت تشغل صندوقها الأصلي العريض القصير: تترك فجوة فارغة بجانبها وتبرز فوق صفها وتحته، داخل ما يوجد هناك. أما تسمية writing-mode فتشغل صندوقًا طويلًا ضيقًا. وإضافة rotate: 180deg تجعلها تُقرأ من الأسفل إلى الأعلى، وهو الاتجاه المعتاد للتسمية العمودية.

تدوير أيقونة عند النقر أو التمرير

تدوير سهم 180 درجة هو الطريقة المعتادة لإظهار أن قسمًا مفتوح. اجمع rotate مع انتقال:

الشارة مربع بحدين، مُدار 45 درجة كي يشير إلى الأسفل. حين يكون الزر موسّعًا يدور إلى 225 درجة، فيشير إلى الأعلى، ويحرّك الانتقال نصف الدورة. السمة aria-expanded هي التي تتحكم في النمط، فلا يمكن أبدًا أن تختلف الحالة البصرية عن الحالة التي تعلنها قارئات الشاشة.

مؤشر تحميل دوّار

الدوران تدوير من 0 إلى 360 درجة، يتكرر بتوقيت linear كي لا تتغير السرعة أبدًا:

مع إطار مفتاحي to وحده، تبدأ الحركة من تدوير العنصر نفسه (لا شيء) وتنتهي عند 360deg، وتكررها infinite من دون قفزة لأن 360deg تبدو مثل 0. وللأشخاص الذين طلبوا من أنظمتهم تقليل الحركة، يدور المؤشر أبطأ بثلاث مرات. المزيد عن الإطارات المفتاحية في صفحة animation.

التدوير ثلاثي الأبعاد: rotateX وrotateY

تميل rotateX() العنصر إلى الخلف حول المحور الأفقي، وتديره rotateY() حول المحور العمودي، كالباب. من دون منظور يبدوان مضغوطين فقط؛ وperspective على الأب تضيف العمق:

.scene { perspective: 600px; }
.card  { transform: rotateY(35deg); }
.flip  { transform: rotateY(180deg); backface-visibility: hidden; } /* card flip */

لعكس عنصر بدل تدويره، استخدم scale: -1 1 (قلب أفقي). التدوير بمقدار 180 درجة يقلبه رأسًا على عقب، وهذا ليس الشيء نفسه.

أخطاء شائعة

  • تدوير <span> أو <a> يبقى في مكانه. العناصر السطرية العادية تتجاهل التحويلات. أضف display: inline-block.
  • تدوير يختفي عند التمرير. قاعدة تمرير فيها transform: scale(1.1) تستبدل transform: rotate(...). استخدم الخاصيتين المنفصلتين rotate وscale، أو اذكر الدالتين معًا.
  • توقع أن يفسح التخطيط مكانًا. الصورة المدارة تحتفظ بصندوقها غير المدار وتتداخل مع جيرانها. أعطِ الحاوية الحجم بعد التدوير، أو استخدم writing-mode للنص.
  • مؤشرات دوّارة بـ ease. التوقيت الافتراضي يسرّع ويبطئ في كل دورة. استخدم linear.
  • التدوير حول النقطة الخطأ. اضبط transform-origin قبل ضبط الزاوية.

الأسئلة الشائعة

كيف أدوّر عنصرًا في CSS؟

استخدم transform: rotate(45deg); أو الخاصية المنفصلة rotate: 45deg;. الزوايا الموجبة تدور مع عقارب الساعة والسالبة عكسها، حول مركز العنصر ما لم تغيّر transform-origin.

ما الفرق بين transform: rotate() والخاصية rotate؟

ترسمان النتيجة نفسها. الخاصية rotate مستقلة عن transform، فتستطيع قاعدة التمرير تغيير scale أو translate من دون إزالة التدوير، ولكل منها انتقالها الخاص. ومعًا تتصرف مثل transform: translate() rotate() scale()، مهما كان ترتيب تصريحك بها.

كيف أدوّر صورة 90 درجة في CSS؟

أضف transform: rotate(90deg); (أو rotate: 90deg;) إلى img. تحتفظ الصورة بمساحتها الأصلية في التخطيط، فالصورة الطويلة المدارة إلى الوضع الأفقي قد تتداخل مع جيرانها؛ أعطِ حاويتها مساحة تتسع للحجم بعد التدوير.

كيف أجعل عنصرًا يدور باستمرار في CSS؟

عرّف @keyframes spin { to { rotate: 360deg; } } وطبّق animation: spin 1s linear infinite;. استخدم linear كي تبقى السرعة ثابتة، وأبطئها أو أوقفها تحت prefers-reduced-motion: reduce.

كيف أدوّر النص عموديًا في CSS؟

لتسمية عمودية تكون writing-mode: vertical-rl عادةً أفضل من rotate(90deg)، لأنها تغيّر التخطيط أيضًا: يشغل العنصر مساحة عمودية بدل أن يتداخل. استخدم rotate للميلان الزخرفي الصغير.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن