איך מוסיפים גבול לטבלה
לטבלאות אין גבולות כברירת מחדל. הוסיפו אותם עם CSS: border על כל תא מצייר את הרשת, ו-border-collapse: collapse על הטבלה ממזג כל זוג של גבולות שכנים לקו אחד.
הקיצור border מקבל רוחב, סגנון וצבע, בכל סדר: 1px solid #6b7280. שימו אותו על th, td, לא רק על table: גבול על הטבלה מצייר רק את המסגרת החיצונית.
border-collapse: separate מול collapse
border-collapse קובע אם תאים חולקים גבולות.
| ערך | תוצאה |
|---|---|
separate (ברירת מחדל) | לכל תא גבול משלו, עם רווח בין התאים שנקבע על ידי border-spacing |
collapse | תאים שכנים חולקים גבול אחד; border-spacing מוזנח |
בטבלה הנפרדת רואים את שתי השכבות: מסגרת הטבלה הכחולה ותיבה כתומה נפרדת סביב כל תא, עם border-spacing ביניהן. שנו את 6px ל-0 והתאים נוגעים זה בזה, אבל הקווים עדיין כפולים. רק collapse ממזג אותם.
כששני גבולות ממוזגים נפגשים ושונים זה מזה, הרחב מביניהם גובר. באותו רוחב, הסגנון מכריע (double גובר על solid, שגובר על dashed ועל dotted), ובתיקו הגבול של התא גובר על זה של השורה, שגובר על זה של הטבלה. לכן הקצה החיצוני של הטבלה הממוזגת כתום ולא כחול: לתאים ולטבלה יש שם גבולות solid של 2px, והתאים מנצחים.
רק קווים אופקיים, או רק קווים פנימיים
רוב הטבלאות המודרניות לא מציירות כל קו. שני דפוסים נפוצים:
הטבלה השנייה מסירה את הגבול בצד החיצוני של כל תא קצה. border-inline-start ו-border-inline-end פירושם ההתחלה והסוף של השורה, כך שאותו CSS נשאר נכון בשפות מימין לשמאל, שבהן התא הראשון נמצא בצד השני.
פינות מעוגלות לטבלה
border-radius לא עושה כלום בטבלה עם border-collapse: collapse. טבלאות מעוגלות משתמשות במודל הנפרד בלי ריווח, ומציירות כל קו פעם אחת בכך שהן נותנות לתאים רק גבול תחתון וגבול בצד הסוף:
שני תאי הפינה של הכותרת מקבלים רדיוס משלהם כדי שהרקע האפור יעקוב אחרי העיקול. בלעדיו, הפינות המרובעות שלהם בולטות מעבר לגבול המעוגל. הרדיוס הוא 9px, ה-10px של הטבלה פחות הגבול שלה ב-1px, כך ששני העיקולים מתיישרים.
צבע ועובי גבול לכל חלק
גבולות יכולים להשתנות לפי חלקי הטבלה. סלקטורים על thead, על tfoot ועל שורות בודדות קובעים קו כבד יותר מתחת לכותרת או מעל הסיכומים:
הקווים של 3px גוברים על האפורים של 1px במקום שבו הם נפגשים, לפי כללי המיזוג שלמעלה. לשאר מבנה הטבלה (thead, tfoot, th), ראו HTML table.
המאפיין border
מדריכים ישנים משתמשים במאפיינים על התגית <table>:
<table border="1" cellspacing="0" cellpadding="6">
דפדפנים עדיין מכבדים את border="1": הוא מצייר גבול על הטבלה ועל כל תא, במודל הנפרד, וזה נותן את המראה הכפול. שלושת המאפיינים מיושנים ב-HTML5. המקבילים ב-CSS הם border על התאים, border-spacing (או border-collapse: collapse) על הטבלה, ו-padding על התאים.
טעויות נפוצות
- גבול רק על
table. מקבלים מסגרת בלי קווים בפנים. הוסיפו את הגבול ל-th, td. - לשכוח את
border-collapse: collapse, ואז לראות קווים כפולים. border-radiusעםborder-collapse: collapse. הרדיוס מוזנח.border-spacingעםborder-collapse: collapse. ריווח עובד רק במודל הנפרד.- גבולות על
<tr>במודל הנפרד. שורות לא מציירות גבולות אלא אם הטבלה ממוזגת; עצבו את התאים במקום. - שימוש ב-
border="1"בקוד חדש. זה עדיין עובד, אבל אי אפשר לקבוע בו צבע והוא מיושן.
שאלות נפוצות
איך מוסיפים גבול לטבלה ב-HTML?
השתמשו ב-CSS על הטבלה ועל התאים שלה: table { border-collapse: collapse; } th, td { border: 1px solid #999; }. הגבול על התאים מצייר את הרשת, ו-border-collapse: collapse ממזג גבולות שכנים לקווים בודדים.
למה יש לטבלה שלי גבולות כפולים?
כברירת מחדל כל תא מצייר גבול משלו עם רווח בין התאים (border-collapse: separate), כך שתאים שכנים מציגים שני קווים. הגדירו border-collapse: collapse על ה-<table> כדי למזג אותם לקו אחד.
האם המאפיין border של טבלה עדיין תקין?
<table border="1"> עדיין מצייר גבולות בכל דפדפן, אבל הוא מיושן ב-HTML5 ולא נותן שליטה בצבע או בסגנון. השתמשו במאפיין border של CSS במקום.
איך מעגלים את הפינות של טבלה?
ל-border-radius אין השפעה על טבלה עם border-collapse: collapse. השתמשו ב-border-collapse: separate עם border-spacing: 0, שימו את הרדיוס על הטבלה, ותנו לתאי הפינה רדיוס תואם (border-start-start-radius וחבריו) כדי שהרקעים שלהם לא יבלטו מהפינות.
איך מסירים את הגבול מטבלה?
לטבלאות אין גבול אלא אם משהו מוסיף אותו. הסירו את המאפיין border מהתגית <table>, או הגדירו border: none על table, th, td כדי לדרוס גיליון סגנונות שמוסיף אותם.