סיבוב אלמנט
שתי דרכים, אותה תוצאה: הפונקציה rotate() בתוך transform, או המאפיין rotate בפני עצמו. זוויות חיוביות מסובבות עם כיוון השעון:
הקופסה הכחולה והירוקה מסובבות בדיוק באותה צורה, 45 מעלות עם כיוון השעון סביב המרכז שלהן. לקופסה הענברית יש זווית שלילית, ולכן היא נוטה נגד כיוון השעון. סיבוב אף פעם לא מזיז את הפריסה: כל קופסה עדיין תופסת את המקום המקורי שלה של 90 על 60, ולכן אלמנטים מסובבים יכולים לחפוף את השכנים שלהם.
יחידות זווית
| יחידה | סיבוב מלא | 90 מעלות |
|---|---|---|
deg | 360deg | 90deg |
turn | 1turn | 0.25turn |
rad | 6.2832rad | 1.5708rad |
grad | 400grad | 100grad |
deg היא הבחירה הרגילה; turn נקרא טוב לסיבובים (rotate: 1turn). זוויות מעל 360 מותרות ומשנות באנימציות: rotate(720deg) ב-keyframe מסתובב פעמיים. תמיד כתבו את היחידה: rotate(45) לא תקין ונזנח.
גררו את המחוון כדי לראות זווית בכל יחידה:
סיבוב סביב פינה: transform-origin
אלמנט מסתובב סביב המרכז שלו כברירת מחדל. transform-origin מזיז את נקודת הציר. מחוג של שעון מסתובב סביב הקצה שלו, לא סביב האמצע:
הקצה התחתון של המחוג יושב על הפין הענברי במרכז השעון, ו-rotate: 120deg מסובב אותו לארבע. הסירו את השורה של transform-origin והמחוג מסתובב במקום זאת סביב האמצע שלו, מחוץ לפין.
סיבוב טקסט ותוויות אנכיות
הטיה קטנה עם rotate מתאימה לתג או למדבקה. לתווית אנכית באמת, writing-mode עדיף, כי הוא משנה את הפריסה: האלמנט נעשה גבוה וצר במקום לחפוף את מה שלידו.
התצוגה מראה את גודל הפריסה של כל תווית. התווית המסובבת עדיין תופסת את הקופסה המקורית שלה, הרחבה והנמוכה: היא משאירה רווח ריק לידה ובולטת מעל ומתחת לשורה שלה, לתוך מה שנמצא שם. זו עם writing-mode תופסת קופסה גבוהה וצרה. הוספת rotate: 180deg גורמת לה להיקרא מלמטה למעלה, שזה הכיוון הרגיל לתווית אנכית.
סיבוב אייקון בלחיצה או במעבר עכבר
סיבוב חץ ב-180 מעלות הוא הדרך הסטנדרטית להראות שמקטע פתוח. שלבו את rotate עם transition:
ה-chevron הוא ריבוע עם שני גבולות, מסובב ב-45 מעלות כך שהוא מצביע למטה. כשהכפתור מורחב הוא עובר ל-225 מעלות, מצביע למעלה, וה-transition מנפיש את חצי הסיבוב. המאפיין aria-expanded מניע את הסגנון, כך שהמצב הוויזואלי והמצב שקוראי מסך מכריזים עליו לעולם לא יסתרו זה את זה.
טוען מסתובב
סיבוב הוא רוטציה מ-0 עד 360 מעלות, שחוזרת עם תזמון linear כדי שהמהירות לא תשתנה אף פעם:
עם keyframe של to בלבד, האנימציה מתחילה מהסיבוב של האלמנט עצמו (אין) ומסתיימת ב-360deg, ו-infinite חוזר עליה בלי קפיצה, כי 360deg נראה אותו דבר כמו 0. לאנשים שביקשו מהמערכת שלהם פחות תנועה, הטוען מסתובב פי שלושה לאט יותר. עוד על keyframes בדף על אנימציה.
סיבוב תלת-ממדי: 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>שנשארים במקום. אלמנטים inline רגילים מתעלמים מ-transforms. הוסיפוdisplay: inline-block. - סיבוב שנעלם ב-hover. כלל hover עם
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, כך שכלל hover יכול לשנות scale או translate בלי להסיר את הסיבוב, ולכל אחד יכול להיות transition משלו. יחד הם מתנהגים כמו 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 להטיות דקורטיביות קטנות.