07-07-2005, 00:51
|
|
|
|
חבר מתאריך: 20.06.03
הודעות: 5,616
|
|
CSS ו-Quirks mode
בהמשך לתגבתו של Silver Strike באשכול דיון זה - אני אעלה פה הסבר קצת על המשמעות של quirk mode מול strict mode (ולא standard mode כמו שנכתב).
כשנכנס לעולמנו ה-CSS ועוד לא היתה תקינה מסודרת עדיין בעניין, Netscape 4 לא תמכה כל כך טוב ב-CSS בעוד IE-4 הראתה תמיכה משופרת באופן יחסי. אך בהעדר תקינה מסודרת - כל דפדפן "פירש" אחרת את ה-CSS ולחלקם היו אפילו פקודות CSS שונות במקצת.
עם התבססותו של IE5 כדפדפן המוביל בעולם (כש-Netscape ירדה מגדולתה), למעשה ה-CSS שהכתיבה microsoft עם הדפדפן שלה הפך להיות השיטה השולטת בתחום עיצוב האתרים - אך אליה וקוץ בה, בתקופה זו גם יצא התקן הרשמי ממעבדות W3C ל-CSS והוא ממש לא תאם את את ה-CSS שהכתיבה IE5 (הטמעת התמיכה ב-CSS בדפדפנים, נעשתה כמובן במקביל לפיתוח התקן ע"י W3C ולרוב בשיתוף פעולה, אך מיקרוסופט "מיהרה" להטמיע את שיטתה גם בלי להמתין לתקינה המסודרת והוסיפה "על-דעתה" את מה שמצאה לנכון).
לכאורה הפתרון נראה פשוט, ש-IE יעבור לתמיכה בתקן של W3C - אך מקרה כזה יגרור מליוני אתרים בעולם שלא מעוצבים בתקן להראות מעט לא טוב במקרה הטוב - או להראות ג-ר-ו-ע או אפילו לא להראות בכלל במקרה הרע. לכן הדפדפנים כיום תומכים בשתי השיטות, השיטה ה"ישנה" שהכתיבה IE שנקראת גם Quirck Mode והשיטה הסטנדרטית שנקראת Strict Mode.
לכאורה גם זה נראה פתרון פשוט - אך מה קורה כשהגדרות של שתי השיטות מתנגשות? על פי איזו שיטה (או "מצב") על הדפדפן להציג את ה-CSS ??
על מנת לפתור את הסוגיה הזו, וכן את הסוגיה של תקינה בכלל (html, xhtml ועוד) אנו כיום מציבים בראש כל דף אינטרנט הנחיית doctype לדפדפן, שאומרת לו באיזו תקינה אנו משתמשים.
הגדרה זו למעשה מספקת לדפדפן את כל המידע הדרוש על מנת לדעת איך להתמודד עם קוד ה-html וה- css בדף האינטרנט שלכם.
לדוגמה, כך נראית הוראת doctype:
קוד:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
בהוראה זו אנו מודיעים לדפדפן שמדובר בתקן xhtml, כשאנו משתמשים בשיטה transitional (מה שמכונה "כמעט xhtml טהור", קיימות שיטות נוספות כמו strict, אל תשתמשו בה אם האתר שלכם לא תואם 100% xhtml, אחרת הדפדפן יציג לכם שגיאת xml). והוראת התקינה נמצא בכתובת http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd, אתם מוזמנים להוריד את הקובץ המדובר לעיין במבנה המוגדר בו, בעיקרון זהו קובץ xml עם הנחיות לדפדפן איך להתייחס לתוכן.
לסיום - חשיבותו של ה-doctype נובע מכך שלפיו תוכלו להחליט איך אתם מגדירים את הקוד שלכם (גם html וגם css) - וזה מן הסתם חשוב לכם על מנת לדעת באיזו שיטה של CSS אתם מעדיפים לעבוד.
בעיקרון - תמיד תלכו על השיטה הסטנדרטית, מאחר שכל הדפדפנים מתקדמים לקראת הכלת התקנים בצורה מדוייקת. ברגע שיצא IE-7 עם התמיכה בגרסה 2 של css וגם firefox תתמוך בצורה מושלמת ב-css 2. אזי חיי העיצוב שלנו יהיו יותר קלים, בינתיים נמשיך להלחם בקוד ה-CSS שלפעמים מוציא אותנו מדעתנו....(:
לנוכיותכם, קיבצתי כמה שיטות doctype עיקריות לשימושכם:
HTML 4.01 Strict, Transitional, Frameset
קוד:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Strict, Transitional, Frameset
קוד:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1 DTD
קוד:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
נערך לאחרונה ע"י fat fish בתאריך 07-07-2005 בשעה 01:15.
|