Menu

Margin מול Padding ב-CSS: ההבדל, זה לצד זה

Padding הוא מרווח בתוך הגבול של אלמנט; margin הוא מרווח מחוץ לו. ראו את שניהם על אותה קופסה, זה לצד זה ובזמן אמת, ואז למדו במה להשתמש לרקעים, לאזורי לחיצה, למרווח בין אלמנטים ולמרכוז.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

ההבדל בתמונה אחת

Padding נמצא בתוך הגבול. Margin נמצא מחוץ לו. לשתי הקופסאות למטה יש אותו תוכן ואותו ערך של 24px; רק המאפיין שונה. האפור הוא המיכל שמאחוריהן.

עם padding, ה-24px כחולים: הם חלק מהקופסה, בתוך הגבול, והקופסה גדלה. עם margin, ה-24px אפורים: הקופסה נשארת צמודה לטקסט שלה והמרווח שבחוץ דוחף את קצוות המיכל.

נסו את שניהם על קופסה אחת

הזיזו את שני המחוונים. padding מגדיל את הקופסה הכחולה; margin מרחיק את הקופסה מהקצוות האפורים בלי לשנות אותה.

שימו לב לשורת הגודל: היא משתנה כשמזיזים את מחוון ה-padding ונשארת אותו דבר כשמזיזים את מחוון ה-margin.

Margin מול padding במבט אחד

PaddingMargin
איפהבתוך הגבולמחוץ לגבול
רקעמציג את הרקע של האלמנטתמיד שקוף
חלק מאזור הלחיצהכןלא
מוסיף לגודל האלמנטכן, תחת 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.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל