מדוע שימוש בטבלאות לעימוד הן מטופשות:

בעיות מוגדרות, פתרונות מוצאים

טבלאות היו קיימות ב-HTML מסיבה אחת בלבד: להצגת מידע טבלאי. אך אז ‎border="0"‎ עשה זאת אפשרי עבור מעצבים ליצור רשת שעליה ימוקמו תמונות ומלל. השימוש בטבלאות (שהן עדיין האמצעי השולט בעיצוב אתרי אינטרנט עשירים) למעשה מפריע עתה בבנית אתרים טובים, נגישים, גמישים ושימושיים יותר. גלה מהיכן נובעת הבעיה ולמד פתרונות ליצירת פריסה חלופית או נטולת טבלאות כלל.

לך תביא את הבוס שלך

האם יש "חליפות" בקהל? האם הבוס שלך נמצא כאן ב-"Seybold", אבל נוכח כרגע בישיבה אחרת? לך תביא אותו הוא האיש שצריך לדעת איך תקני אינטרנט יכולים לחסוך כסף לחברה.

סקירה כללית: מה יצא לי מזה?

אנו נציג בפניכם שיטת עבודה אשר:

אנו גם נסביר איך פריסת עמודים בעזרת גליונות-סגנון מדורגים (CSS) דורשת דרך חשיבה שונה במקצת על התוכן והמבנה שאתה רגיל אליו.

אתרי אינטרנט 'הורסים': טבלאות מקוננות ומרווחי תמונות (Spacer GIFs)

בהתחלה, האינטרנט שימש בעיקר כמדיה לשיתוף אינפורמציה אקדמית מחקרית וצבאית. אולם לא לקח זמן רב לבעלי חזון עצמאי להבין שהאמצעי הזה הוא אידאלי למכירה של כל דבר החל מתוצרת טרייה ומזון לכלבים עד למכוניות וסיקורי ספורט שוטפים.

אולם, כמו כל אמצעי שעודו בחיתוליו, האינטרנט בראשיתו היה 'גס' אסתטית, (ולא ממש מפתה עבור הלקוחות) עד שדויד סיגל פרסם את הספר שהיה לנקודת מפנה שהציע מספר מעקפים מבריקים למוגבלויות של דפדפני אינטרנט קיימים ולהגדרות של ה-w3c בסביבות 1997. (חבר'ה, אנו מדברים על נטסקייפ 2 ו-3).

המעקפים האלה היו, למעשה, כה מבריקים, שהם עדיין השיטה הכי נפוצה כיום לעריכת דפי אינטרנט.

הבעיה בשימוש בטבלאות:

הישועה בהישג יד

דפדפנים מודרניים מבצעים את תקני האינטרנט בצורה הרבה יותר טובה ואיננו צריכים להשתמש יותר בשיטות עתיקות.

במקום טבלאות מקוננות בתוך טבלאות ומילוי תאים ריקים ברווחי תמונה (Spacer GIFs), אנו יכולים להשתמש במבנה פשוט יותר וב-CSS על-מנת לפרוס אתרים יפהפיים אשר נטענים במהירות, קלים יותר לעיצוב מחודש ונגישים יותר לכולם.

הפתרון: CSS ומבנה תבניתי

על-ידי שימוש במבנה תבניתי במסמך ה-HTML שלנו ובגליונות-סגנון מדורגים כדי לפרוס את הדפים שלנו אנו יכולים לשמר את התוכן המקורי של הדפים שלנו בנפרד מאיך שהם מוצגים.

יש לזה מספר יתרונות על השימוש בטבלאות...

עיצובים מחדש הם קלים יותר ויקרים פחות

על-ידי הסרת מבנה הצגתי מהדפים שלכם, עיצוב מחודש של אתרים קיימים ותוכן דורש פחות מאמץ (ו-יקר הרבה פחות). כדי לשנות את הפריסה של האתר, כל שעליך לעשות הוא לשנות את גליון-הסגנון; אינך צריך כלל לערוך את הדפים עצמם.

לדוגמא, הכנס אל CSS Zen Garden, או ל-"מחליפי הסגנון" באתר של אריק מאייר. לעוד לימוד בנושא ראה "סגנונות חלופיים" מאת פול סודן.

רוחב-הפס אינו חינם

שימוש בתקני אינטרנט מקטין את משקל הקבצים של הדפים שלך, כיוון שהמשתמשים אינם צריכים יותר להוריד מידע הצגתי בכל דף בו הם מבקרים. גליונות-הסגנון שמפקחים על הפריסה מוטמנים (Cached) על-ידי הדפדפנים של הגולשים.

הכוונה בהקטנת "משקל הקבצים" היא טעינה מהירה יותר והוצאות איחסון נמוכות יותר.

היי, כל הדפים האלה נראים אותו הדבר!

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

דבר זה מחזק את הסמל המסחרי שלך ועושה את האתר שלך שימושי יותר.

כתוב פעם אחת, השתמש בכל מקום, לכל אחד

שימוש בתקני אינטרנט גורם לנגישות גבוהה יותר לדפים שלנו עבור משתמשים עם מוגבלויות ולגולשים דרך טלפונים ניידים ומכשירי כף-יד בעת הגלישה באינטרנט.

אורחים המשתמשים בקוראי מסכים (וכן אלה עם חיבור איטי) אינם צריכים לפלס דרכם במאמץ דרך רבבות תאי טבלה ומרווחי תמונות, על-מנת להגיע לתוכן המקורי של הדפים שלנו.

במילים אחרות, הפרדת התוכן מהדרך בה הוא מוצג הופך את התוכן שלך לבלתי-תלוי בתוכנת הגלישה.

גוגל הוא עיוור

אפרופו נגישות, צמצום המבנה ושימוש נכון בתגי Header יעזור גם לשפר את דירוג מנועי החיפוש.

הקטנת היחס בין קוד לתוכן, שימוש במילות מפתח בתגי ה-Header, והחלפת תמונות עבור כותרות במלל אמיתי, יעזרו לאתרך להשיג תוצאות חיפוש טובות יותר.

אתה עדיין יכול להשתמש בטבלאות אם אתה צריך, רק אל תשתמש בכל-כך הרבה מהם:

זה יאפשר לגולשים (ולבוסים) אשר קשורים ונחושים בדעתם להשתמש בדפדפנים של גירסא 4 עד יומם האחרון, לקבל הערכה מתקבלת על הדעת למה שכל שאר העולם רואה.

טבלה אשר ניראת טובה למדי

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper.
Suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
At vero eros et accumsan et iusto odio dignissim qui blandit
Praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
Qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Epsum factorial non deposit quid pro quo hic escorol.
Olypian quantels et gomilla congolium sic ad nauseum. Souvlaki ignitus carborundum e pluribus unum. Defacto lingo est igpay atinlay.
Eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore.

תציץ מתחת לפני השטח

זה בהחלט יכול להתבצע בקלות רבה יותר. נחש כמה מבנה יש בטבלה הקטנה הזו? 13.7K. ישנן 17 שורות ו-9 עמודות בדבר הזה. והאם הזכרתי את כל מרווחי התמונות (Spacer GIFs)?
יש כאן הרבה יותר מדי תאי טבלה ומרווחים. וכל הגבולות המנוקדים נעשו עם תכונת background על תאי טבלה, אשר לא יהיו תקניים.
טבלה מקוננת? לשם מה?
על-מנת לעשות רשימה מובלטת? אתם צוחקים, נכון?
כל זה יכול להעשות עם 8 תאי טבלה ו-4 הגדרות CSS. ברצינות. 8 תאים ו-4 הגדרות CSS, זה כל מה שצריך.
אוי לא, עוד טבלה המוסוות כרשימה מובלטת.
פשוט תבנה את הרשימה המובלטת שלך כרשימה מובלטת ותן ל-CSS לעשות את השאר.
אתה צריך הגדרה אחת עבור <table>, אחת עבור <td>, אחת עבור <ul> ועוד אחת עבור <li>. זהו-זה. ברגע שיש לך את אלו - אתה על הסוס.
זה עדיף מאשר שימוש ב-8 תאי טבלה על-מנת ליצור רשימה מובלטת מזוייפת, אשר הופכת בסופו של דבר להרבה פחות נגישה.
מצויין! ההבלטה המזוייפת האחרונה.

הקוד שמראה את מבנה הטבלה:

table { margin: 3px; padding: 2px; border: solid 2px blue }

td { padding: 2px; border-style: solid; border-width: 1px; border-color: gray gray silver silver }

זה הרבה יותר טוב

הרבה יותר טוב נחש כמה מבנה יש בטבלה הקטנה הזו? 2.1K. ישנן 4 שורות ו-2 עמודות בדבר הזה. ואין כלל מרווחי תמונה (Spacer GIFs).
בדיוק מה שצריך וכל הגבולות המנוקדים האלה נעשו באמצעות CSS והם בהחלט תקניים.
  • זהו פריט רשימה עכשיו
  • בדיוק איך שהוא אמור להיות
כל זה נעשה עם 8 תאי טבלה ו-4 הגדרות CSS. ברצינות. 8 תאים ו-4 הגדרות CSS, זה כל מה שדרוש.
  • הידד לרשימות מובלטות
  • מדוע שלא פשוט תבנה רשימה מובלטת כרשימה מובלטת ותיתן ל-CSS לעשות את השאר?
אתה צריך הגדרה אחת עבור <table>, אחת עבור <td>, אחת עבור <ul> ועוד אחת עבור <li>. זהו-זה. ברגע שיש לך את אלו - אתה על הסוס.
  • אני מת על רשימות מובלטות.
  • מצויין! לא עוד הבלטות מזוייפות.

והנה קוד ה-CSS המשמש לסילוק המבנה המטופש:

table { border-bottom: 1px dotted fuchsia; border-left: 1px dotted fuchsia }

td { padding: 11px 20px 20px 11px; border-top: 1px dotted fuchsia; border-right: 1px dotted fuchsia }

ul { margin-top: 10px; margin-bottom: 10px; margin-left: 0; padding-left: 1em }

li { margin-bottom: 10px }

תמצית מעברי עיצוב

השתמש ב-margin וב-padding במקום בתוספת תאים ומרווחי תמונה (Spacer GIFs).

השתמש בקישורים ובסיגנונות @import. הראשון עבור דפדפנים ישנים, השני עבור דפדפנים מודרניים.

<link href="basic.css" rel="stylesheet" type="text/css">

<style type="text/css" media="screen"><!--
@import url(modern.css) screen;
--></style>

דוגמאות הקיימות במציאות:

אבל חכה, יש עוד:

למידע נוסף על מעברי עיצוב, ראה פרק ראשון מתוך הספר אריק מאייר על CSS והרבה מידע מהספר עיצוב עם תקני אינטרנט מאת ג'פרי זלדמן.

פריסות CSS: העתיד כבר כאן

לדפדפנים הנפוצים ביותר בהם גולשים משתמשים כיום יש תמיכה נרחבת ב-CSS. לכולם יש את ה-"שיגעונות" שלהם, אבל ברגע שאתה מתרגל אליהם, אתה יכול לעקוף אותם.

תכנות CSS הוא קל. אפילו עבור בחור כמוני שחושב שרוב שפת ה-Javascript נראית כמו מילות קללה.

if(links[x].length > 0);{
for (y=0; y<links[x].length; y++) {

לכל הגדרת CSS יש בורר ו-הצהרה. ההצהרה מורכבת מ-תכונה ו-ערך. תכונות, שנשמעות כאילו הן צריכות להיות שתי מילים, מופרדות על-ידי מקף.

body {margin:0; padding:0}

.related {float:right; width: 15em; margin-left:1em; margin-bottom: 1em; color:blue}

#footer {color: gray; font-size: 0.6em; line-height: 1.2em; background-color: white; margin: 0}

מבנה תבניתי: קדד את מה שאתה מתכוון אליו, תתכוון למה שאתה מקדד

בעוד שקל לכתוב את ה-CSS המקורי, שימוש ב-CSS לפריסה שלך דורש דרך חשיבה שונה במקצת מאשר רובנו רגילים אליה.

במקום לחשוב על דברים כגון "זה הולך פה וזה הולך לשם" בעודנו עובדים על דף או פריסה, עלינו לחשוב על סוגי האינפורמציה בדף שלנו ו-המבנה של המידע.

אנו נותנים לכותרת החשובה ביותר תג <h1>; כותרות משנה מסומנות בתג <h2>, וכו'.; ופסקאות הן פסקאות.

זה מה שמוכר בתור מבנה "תבניתי" או "סימנטי".

במקום לשים את התוכן שלך בתוך טבלה ותאי טבלה, עטוף אותו בתוך אלמנט div ותן לאלמנטי div שלך id או class המתאר את תוכנם ו/או את הפונקציה, במקום את ההופעה שלהם.

הימנע מתגי <b> ו-<br> במבנה שלך

חשוב מדוע אתה רוצה שמשהו יופיע בצורה מסויימת; למה הכוונה? המבנה שלך יכול ו-צריך להעביר משמעות, אפילו למישהו שאינו יכול לראות את הדף שלך. מבנה סימנטי גורם לדפים שלך להיות יותר נגישים לכולם, כולל מנועי חיפוש.

כאשר אתה רוצה להטות כתב מסוים, האם זה בגלל שאתה רוצה להדגיש אותו, <em>, או בגלל שזוהי הכותרת של ספר, <cite>?

אם משהו הוא מודגש, הוא צריך להיות מסומן כ-<strong>.

אם אתה רוצה ירידת שורה אחרי משהו, רוב הסיכויים שהוא צריך להיות מסומן כאלמנט כותרת. אם זו לא כותרת, האם זה חלק מ-class שקורה לאורך כל האתר? אם זהו המקרה, אז השתמש ב-CSS במקום ב-<br>.

.foo {display:block}

למידע נוסף ראה ‎Bed and BReakfast markup (B&BR)‎ מאת Tantek Çelik.

דברים שטבלאות עושות טוב יותר מ-CSS

ישנם דברים מסוימים ש-CSS עושה פחות טוב מפריסה טבלאית.

דוגמא, נניח שיש לך תפריט ניווט בצבע שחור ואתה רוצה להרחיב אותו לכל גובה התוכן. עם פריסה טבלאית אין פשוט מזה: רק תן ל-<td> רקע שחור.

אנו יכולים לעשות זאת בעזרת CSS, אך זה דורש דרך חשיבה שונה.

אם אנו נותנים ל-div הניווט שלנו רקע שחור, השחור ישתרע רק עד קצה הניווט שלנו. ברוב הדפים, התוכן הוא ארוך יותר מהניווט, ולכן זה לא מוצלח.

במקום זאת, אנו יכולים לרצף עם GIF שחור את div התוכן ולתת לו תוספת padding משמאל, אך אם הניווט שלנו ארוך יותר מהתוכן גם זה לא יעזור.

דרך נוספת לטפל בזה היא לרצף עם GIF שחור את הרקע של ה-<body> שלנו, שזה טוב כל עוד אינך צריך להשתמש בתמונה נוספת עבור רקע ה-<body> שלך.

או שאנו יכולים לעטוף את את התוכן בתוך div 'מעטפת' ולרצף את התמונה ב-div הזה. אולם, זה מוסיף מבנה לא סימנטי ומנפח את המבנה שלנו.

וכמובן, ריצוף תמונות רקע לא יעבוד כלל אם אתה רוצה שהרוחב של הניווט שלך יהיה גמיש.

כפי שאמרנו, ישנם דברים שטבלאות עושות טוב יותר מ-CSS. אך בסופו של דבר, עליך לשאול את עצמך, האם כל המטען הנוסף שבא עם שימוש בטבלאות עבור עיצוב במקום עבור מידע שווה את זה.

מעבר מבנייה לא תקנית של טבלאות לתקני אינטרנט: התמונה הגדולה

ראשית, עליך להחליט על מעבר אסטרטגי. האם אתה מתכוון להעביר את כל האתר בבת אחת או בחלקים?

אתר את החלקים והדפים שהכי ירוויחו מהמעבר. מקום טוב להתחיל בו הוא בדפי הבית, הודעות למוצרים חדשים ודפים דומים.

זהה את סוגי התוכן/מידע באתר שלך

  • מידע על מוצרים
  • מידע על מחירים
  • מידע על החברה
  • פורטפוליו
  • הצעות שירות
  • מידע של המשקיע
  • עגלת קניות
  • פורומים למשתמשים
  • וכן הלאה

לפרק את הדפים

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

  • ניווט ראשי
  • ניווט משני
  • Headers ו- Footers
  • תוכן
  • מידע קשור
  • אחר

נתח את מבנה הטבלה שלך לטבלאות מקוננות, למרווחים ריקים ותאי גבול (אנו רוצים להחליף אותם בתגי div או במבנה טבלאי הרבה יותר פשוט).

הסתכל על המבנה שלך

ברגע שניתחת את מבנה הדפים שלך, הגיע הזמן להסתכל מתחת לפני השטח ולנתח את המבנה הנוכחי שלך עבור HTML מצגתי שיוכל להתחלף במבנה תבניתי.

  • למען השם, היפטר מתגי <font> וממרווחי תמונה!
  • באותה מידה, היפטר מ-<b> ומ-<br> במבנה שלך.
  • היפטר ממבנה הצגתי של טבלאות (bgcolor, background וכדומה).
  • החלף קוד CSS הצגתי גרידא (כגון ‎<span class="header">‎) במבנה תבניתי מתאים. (Tantek Çelik נכנס לפרטים נוספים במאמר A Touch of Class.)

החלף תגים הצגתיים במבנה תבניתי

אתה יכול להשתמש "בחפש והחלף" (וביטויים רגולריים), אך הדרך הקלה ביותר לעשות זאת היא לצפות בדף הנוכחי בדפדפן ולהעתיק ולהדביק את המלל משם לתוך עורך ה-HTML שלך.

חשוב על המבנה של המסמך שלך! החלפה בלבד של תגי ה-<b> בתגי <strong> אינה מספיקה.

מהי הכותרת החשובה ביותר? סמן אותה בתג <h1>. סמן את הכותרות המשניות בתגי <h2> וכן הלאה. סמן פיסקאות בתגי <p>. סמן את הניווט שלך כרשימה לא מסודרת.

בחר DOCTYPE והשתמש בו. (אנו ממליצים על XHTML Transitional. אלא אם אתה 'גרעין קשה', ובמקרה זה, לך על זה והשתמש ב-XHTML Strict.)

חלק את הדף שלך לחלקים הגיוניים

שים את הניווט הראשי בתוך div עם id של mainnav; שים את הניווט המשני בתוך div עם id או class של subnav, שים את ה-footer ב-‎<div id="footer">‎ ועטוף את התוכן שלך בתוך ‎<div id="content">‎.

זה לא נראה משהו עכשיו, אבל ברגע שתתחיל להוסיף הגדרות לגליונות הסיגנון, הדברים ישתפרו במהרה.

הגיע הזמן לכתוב את ה-CSS שלך

בהתחלה, תן לכל div גבול. לדוגמא, ‎div {border: 1px dotted gray; padding: .5em}‎ זה יעזור לך לראות היכן הם מתחילים, היכן הם נגמרים והאם יש לך קינון.

כתוב קודם את ה-CSS שלך עבור בוררי אלמנטים (<html>, <body>, <p>, <h1>, <h2>, <ul>, <li> וכו'.)

השתמש בבוררים הקשריים או צאצאיים עד כמה שזה אפשרי. זה ישמור על המבנה שלך הרבה יותר נקי. לדוגמא, ‎#subnav li {border: 1px solid black; padding: .5em; display: inline}‎ ישפיע רק על פריטי רשימה שנמצאים בתוך ה-div של הניווט המשני שלך.

בדוק בדפדפנים רבים ככל שתוכל ובקש מחבריך לבדוק בדפדפנים שלהם.

דוגמא לאתרים הפרוסים באמצעות CSS

קרא הכל בנוגע לזה

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

נייר? אנחנו לא צריכים שום נייר מסריח: מקורות מקוונים

CSS-Discuss

  • רשימת תפוצה: מאוד פעיל, מאוד מועיל.
  • וויקי: "בין היתר הוויקי משרת כזיכרון קולקטיבי לטווח ארוך למשתתפי הרשימה". אתה רוצה לתת לאינטרנט אקספלורר עבור Windows הגדרה שהוא יבין, אבל לתת לדפדפנים טובים יותר את 'הדבר האמיתי'? אתה תלמד איך לעשות זאת ויותר, כאן.
  • ארכיונים: יש לך בעיה ב-CSS שנתקעת איתה? אל תדאג, למישהו אחר כבר היתה את אותה הבעיה (והוא קיבל עזרה בהתמודדות איתה). מצא כאן את התשובות.

zeldman.com הדוח היומי: תוכן וקישורים בעלי תובנה, מעוררי מחשבות וכתובים היטב המוגשים באופן סדיר.

A List Apart עבור אנשים שיוצרים אתרי אינטרנט.

The Web Standards project יבורכו האנשים האלו.

CSS: A guide for the unglued דף קישורים מעולה.

CSS Layout Techniques: for Fun and Profit פריסות שאתה יכול להשתמש בפרויקט שלך מאת אריק קוסטלו. גם מקורות והדרכות.

Real World Style פריסות CSS. עיצות, תכסיסים וטכניקות מאת מרק ניוהאוס.

DevEdge Netscape Sidebar Tabs קישורים יעילים באופן בלתי-רגיל למפרטי w3c עבור CSS, HTML וה-DOM.

New York Public Library Style Guide מקור יעיל מאוד לקבלת יסודות עבור XHTML ו-CSS.

The Business Benefits of Web Standards חדשות טובות למנהלים. התורה של תקני אינטרנט מובאת במונחים שבעלי תואר במנהל עסקים יוכלו להעריך.

תודה. יש שאלות?

כולם אוהבים טבלאות מטופשות

(ובכן, אולי לא את הטבלאות עצמן, אבל נראה שאנשים בהחלט אוהבים את המצגת הזו).

תודות למאמצי האנשים הרשומים מטה, "מדוע שימוש בטבלאות לעימוד הם מטופשות" תורגם לכל השפות האלה.

אם אתה מעוניין לתרגם זאת לשפת האם שלך, . (קדימה, יפן היכן את? מה איתך, קוריאה ורוסיה? אל תגידו לי שאף אחד בכל התת-יבשת ההודית או במזרח-התיכון לא מבין את הערך של תקני אינטרנט. אני לא קונה את זה.)

Note for users of Internet Explorer:

In order to properly view sites using non-roman alphabets (such as the Bulgarian and Chinese translations of this site), you need to change your Language/Fonts preferences so that the Default Character set is "Universal Alphabet (UTF-8)". This will not affect any of the sites you normally view and will give you access to a whole new world of sites in languages you probably can't read anyway.

; Scott Design, Inc.

; Adobe Systems Incorporated

; Silver Strike Systems

גרסאות בינלאומיות

טבלאות מטופשות כבר תורגמו לשפות רבות. אם עברית אינה שפת האם שלך אולי תהיה מעוניין לקרוא אחת מהגרסאות האלו.

Creative Commons LicenseThis work is licensed under a Creative Commons License.