הקיצור border
border מצייר קו סביב אלמנט, בין ה-padding שלו ל-margin שלו. הקיצור מקבל שלושה חלקים בכל סדר: עובי, סגנון וצבע.
| חלק | מאפיין מלא | ערכים | ברירת מחדל |
|---|---|---|---|
| עובי | border-width | 1px, 0.2em, thin, medium, thick | medium |
| סגנון | border-style | solid, dashed, dotted, double, ועוד | none |
| צבע | border-color | כל צבע | currentColor (צבע הטקסט) |
את הסגנון אי אפשר לדלג עליו. ברירת המחדל שלו היא none, ולכן border: 2px #2563eb; לא מצייר כלום. אם משמיטים את הצבע, הגבול מקבל את צבע הטקסט של האלמנט.
סגנונות גבול
double צריך לפחות 3px כדי להציג שני קווים. groove, ridge, inset ו-outset מצללים את הצבע כדי שייראה תלת ממדי, ונראים מעט שונה בין דפדפנים. hidden נראה כמו none; ההבדל ביניהם קיים רק בטבלאות עם גבולות ממוזגים, שעליהן מסביר עמוד גבולות הטבלה ב-HTML.
צד אחד בכל פעם
לכל צד יש קיצור משלו (border-top, border-right, border-bottom, border-left), ולכל חלק יש מאפיינים מלאים לכל צד, כמו border-top-color. הגרסאות הלוגיות, border-inline-start ו-border-block-end, עוקבות אחרי כיוון הטקסט:
border-color, border-width ו-border-style מקבלים בין ערך אחד לארבעה, באותו סדר של כיוון השעון כמו ב-padding: למעלה, ימין, למטה, שמאל.
פינות מעוגלות עם border-radius
border-radius מעגל את הפינות של הגבול וגם של הרקע, כך שהוא עובד גם על אלמנטים בלי גבול בכלל.
| ערך | תוצאה |
|---|---|
border-radius: 8px | כל הפינות מעוגלות ב-8px |
border-radius: 50% | עיגול על אלמנט ריבועי, אליפסה על מלבן |
border-radius: 999px | גלולה: הצלעות הקצרות הופכות לחצאי עיגול מלאים |
border-radius: 8px 0 | עליונה שמאלית ותחתונה ימנית 8px, השתיים האחרות ישרות |
border-top-left-radius: 12px | פינה אחת בלבד |
border-radius: 50% / 25% | פינות אליפטיות: רדיוס אופקי / רדיוס אנכי |
ילד עם רקע יכול לבלוט מעבר לפינות המעוגלות של ההורה. overflow: hidden על ההורה חותך אותו לפי הקימור.
Border מול outline
Outline נראה כמו גבול, אבל מצויר מחוצה לו ולא תופס מקום, כך שהוספה שלו אף פעם לא מזיזה שום דבר. לכן דפדפנים משתמשים ב-outline לטבעות פוקוס.
| Border | Outline | |
|---|---|---|
| תופס מקום | כן, חלק מגודל התיבה | לא |
| לכל צד | כן (border-top, ...) | לא, מסביב לכל התיבה |
עוקב אחרי border-radius | כן | כן, בדפדפנים הנוכחיים |
| מרחק מהתיבה | לא | כן, outline-offset |
| שימוש טיפוסי | עיצוב | מחווני פוקוס, דיבוג |
טעויות נפוצות
- אין סגנון גבול.
border: 1px #111827;ו-border-color: red;לא מציירים כלום. כללוsolid(או סגנון אחר). - גבול שגורם לפריסה לקפוץ ב-hover. שמרו את המקום עם גבול שקוף, או השתמשו ב-outline או ב-
box-shadow. - שכחה של הגבול בחישוב הרוחב. אלמנט עם
width: 100%וגבול גולש מהמכל שלו תחתcontent-box. השתמשו ב-box-sizing: border-box. border-radiusעם ילד שבולט מהפינות. הוסיפוoverflow: hiddenלהורה המעוגל.- הסרת טבעות פוקוס עם
outline: none. משתמשי מקלדת צריכים אותן; עצבו את ה-outline מחדש במקום למחוק אותו.
שאלות נפוצות
איך מוסיפים גבול ב-CSS?
משתמשים בקיצור עם עובי, סגנון וצבע: border: 2px solid #2563eb;. הסגנון הוא החלק החשוב ביותר: בלעדיו, סגנון הגבול הוא none ושום גבול לא מצויר.
למה הגבול שלי ב-CSS לא מופיע?
כמעט תמיד כי לא הוגדר סגנון גבול. border: 2px #2563eb; או border-color: red; לבד לא מציירים כלום, כי ברירת המחדל של border-style היא none. הוסיפו solid, dashed או סגנון אחר.
איך יוצרים פינות מעוגלות ב-CSS?
משתמשים ב-border-radius: border-radius: 8px; מעגל את כל ארבע הפינות. border-radius: 50%; על ריבוע יוצר עיגול, וערך גדול כמו 999px יוצר צורת גלולה. הוא מעגל גם את הרקע, גם בלי גבול.
איך מוסיפים גבול רק לצד אחד?
משתמשים במאפיין של צד: border-bottom: 2px solid #e5e7eb;, או border-inline-start לצד שבו הטקסט מתחיל, שעובד גם בשפות שנכתבות מימין לשמאל.
מה ההבדל בין border ל-outline?
גבול הוא חלק מהתיבה: הוא תופס מקום ומשנה את גודל האלמנט. Outline מצויר מחוץ לגבול בלי לתפוס מקום, אי אפשר לקבוע אותו לכל צד בנפרד, ובו דפדפנים משתמשים לטבעות פוקוס. שניהם עוקבים אחרי border-radius בדפדפנים הנוכחיים.