ההבדל בתמונה אחת
Padding נמצא בתוך הגבול. Margin נמצא מחוץ לו. לשתי הקופסאות למטה יש אותו תוכן ואותו ערך של 24px; רק המאפיין שונה. האפור הוא המיכל שמאחוריהן.
עם padding, ה-24px כחולים: הם חלק מהקופסה, בתוך הגבול, והקופסה גדלה. עם margin, ה-24px אפורים: הקופסה נשארת צמודה לטקסט שלה והמרווח שבחוץ דוחף את קצוות המיכל.
נסו את שניהם על קופסה אחת
הזיזו את שני המחוונים. padding מגדיל את הקופסה הכחולה; margin מרחיק את הקופסה מהקצוות האפורים בלי לשנות אותה.
שימו לב לשורת הגודל: היא משתנה כשמזיזים את מחוון ה-padding ונשארת אותו דבר כשמזיזים את מחוון ה-margin.
Margin מול padding במבט אחד
| Padding | Margin | |
|---|---|---|
| איפה | בתוך הגבול | מחוץ לגבול |
| רקע | מציג את הרקע של האלמנט | תמיד שקוף |
| חלק מאזור הלחיצה | כן | לא |
| מוסיף לגודל האלמנט | כן, תחת content-box | לא |
יכול להיות auto | לא | כן (margin: 0 auto ממרכז) |
| יכול להיות שלילי | לא | כן |
| ערכים אנכיים מתמזגים | אף פעם | כן, margins אנכיים סמוכים מתמזגים |
| אחוזים ביחס ל | רוחב הבלוק המכיל | רוחב הבלוק המכיל |
| שימוש נפוץ | מרווח בתוך כפתורים, כרטיסים, שדות קלט | מרווח בין אלמנטים, מרכוז |
לכל מאפיין יש דף משלו עם כל הפרטים: CSS padding ו-CSS margin.
במה להשתמש
שאלו שאלה אחת: האם המרווח שייך לאלמנט, או יושב בין אלמנטים?
- מקום סביב התווית של כפתור, החלק הפנימי של כרטיס, מרווח בין הטקסט של שדה קלט לגבול שלו: padding. הוא מקבל את הרקע ומגדיל את המטרה.
- מרווח בין שתי פסקאות, בין כרטיסים, סביב מקטע: margin, או
gapכשההורה הוא מיכל flex או grid.
אזור הלחיצה הוא המקום שבו הבחירה הכי חשובה. שני הקישורים למטה תופסים אותו מקום בדף, אבל המרווח של הראשון הוא padding ושל השני הוא margin. רק על הראשון קל ללחוץ:
קו המתאר הענברי המקווקו הוא הקצה של האלמנט, כלומר האזור שמגיב ללחיצות ולהקשות. ה-margin סביב הקישור השני הוא מקום ריק שלא עושה כלום.
מרווח בין פריטים: margin או gap
לשורה או לרשת של פריטים, gap על ההורה מסוג flex או grid נקי יותר בדרך כלל מ-margins על כל ילד: הוא נכנס רק בין הפריטים, אף פעם לא לפני הראשון או אחרי האחרון, כך שאין מה לבטל.
כאן המיכל האפור משתמש ב-padding (מרווח בתוכו, אפור), הפריטים משתמשים ב-padding (מרווח בתוך כל אחד, ירוק), ו-gap מטפל במרווח ביניהם.
טעויות נפוצות
- שימוש ב-margin למרווח שצריך להיות צבוע. margin שקוף. אם המרווח צריך להציג את הרקע, זה padding.
- שימוש ב-margin כדי להגדיל קישור. אזור הלחיצה נגמר בגבול; השתמשו ב-padding.
- לצפות ששני margins אנכיים של 20px ייצרו 40px. margins אנכיים סמוכים מתמזגים ל-20px. padding אף פעם לא מתמזג.
- לנסות
padding: autoכדי למרכז. רק margin מקבלauto. - לשכוח ש-padding מגדיל את הקופסה. הוסיפו
box-sizing: border-boxכדי ש-widthיכלול אותו.
שאלות נפוצות
מה ההבדל בין margin ל-padding?
Padding הוא המרווח בין התוכן של אלמנט לגבול שלו, בתוך האלמנט. Margin הוא המרווח מחוץ לגבול, בין האלמנט לשכנים שלו. Padding מציג את הרקע של האלמנט; margin תמיד שקוף.
מתי להשתמש ב-padding ולא ב-margin?
השתמשו ב-padding למרווח ששייך לאלמנט: מקום סביב הטקסט של כפתור, החלק הפנימי של כרטיס, כל דבר שצריך לחלוק את הרקע או להיות לחיץ. השתמשו ב-margin (או ב-gap ב-flex וב-grid) למרווח בין אלמנטים נפרדים.
האם padding או margin מגדילים את האלמנט?
Padding כן, תחת ברירת המחדל box-sizing: content-box: הוא מתווסף לרוחב ולגובה. Margin אף פעם לא מתווסף לגודל האלמנט; הוא מוסיף מרווח סביבו (בלוק עם width: auto אפילו נעשה צר יותר, כי ה-margins שלו לוקחים חלק מהרוחב הזמין). עם box-sizing: border-box, ה-padding נלקח מתוך הרוחב במקום.
האם padding יכול להיות שלילי כמו margin?
לא. padding שלילי לא תקין ונזנח, בעוד ש-margin שלילי מותר ויכול לגרום לאלמנטים לחפוף. padding גם לא יכול להיות auto, ולכן מרכוז משתמש ב-margin: 0 auto.