
, ( ) , ( ) , TeX, Microsoft Word . : ", ".
— , 1994
عندما أعلن Tim Berners-Lee عن إنشاء HTML في عام 1991 ، لم تكن هناك طريقة لتصميم الصفحات. تم تحديد الطريقة التي تم بها عرض علامات HTML بواسطة المتصفح وتأثرت بشكل كبير بتفضيلات المستخدم. ومع ذلك ، يبدو أن إنشاء أداة قياسية تتيح للصفحات "التلميح" حول طريقة العرض الأسلوبية المفضلة لديهم فكرة جيدة.
ولكن قبل ظهور CSS ، كانت لا تزال خمس سنوات ، وعشر سنوات أخرى قبل أن يتم تنفيذها بالكامل. لقد كانت فترة من العمل الجاد والابتكار التي أدت إلى إنشاء العديد من الأساليب المتنافسة التي يمكن أن تصبح قياسية.
بينما من الواضح أن هذه اللغات ليست مستخدمة على نطاق واسع اليوم ، فمن المثير للاهتمام بالنسبة لي أن أفكر في الشكل الذي قد يكون عليه العالم. والأكثر إثارة للدهشة ، أن العديد من هذه اللغات لديها ميزات يسعد المطورون باستخدامها في CSS حتى اليوم.
أول مرشح
في أوائل عام 1993 ، لم يصل متصفح Mosaic إلى الإصدار 1.0 ، وكانت جميع المتصفحات الحالية تعمل فقط مع HTML. لم تكن هناك طريقة لتحديد نمط HTML ، لذلك رأيت العلامة
<h1>بالطريقة التي قرر المتصفح إظهارها بها.
في يونيو من نفس العام ، قدم روبرت رايش اقتراحًا إلى القائمة البريدية لشبكة الاتصالات العالمية للتحدث لإنشاء "تنسيق سهل التحليل لنقل المعلومات الأسلوبية جنبًا إلى جنب مع مستندات الويب" ، والذي أطلق عليه اسم RRP.
@BODY fo(fa=he,si=18)
إنه أمر مسامح تمامًا إذا لم تفهم ما يفعله هذا الرمز. في عصر ما قبل gzip ، عندما كانت سرعات الاتصال عادةً أقل من 14.4 كيلو بت في الثانية ، كان من المنطقي الحفاظ على محتوى هذا التنسيق الجديد مضغوطًا قدر الإمكان. على وجه التحديد ، تحدد هذه القاعدة
faHelvetica ( he) كعائلة الخط ( ) وتضبط حجم الخط ( si) على 18 نقطة.
من الغريب أن اقتراح Reisch يفتقر إلى الوحدات ، وتم تفسير جميع الأرقام بناءً على السياق (على سبيل المثال ، كانت جميع أحجام الخطوط في نقاط). وذلك لأن RRP تم تصميمه على أنه "مجموعة من النصائح والحيل للعارض" وليس كمواصفات. كان هذا ضروريًا لأنه كان من المفترض أن تعمل ورقة الأنماط نفسها في متصفحات وضع النص العادية (مثلLynx ) ، وفي المتصفحات الرسومية الشائعة بشكل متزايد.

لقطة شاشة Lynx Browser بشكل مثير
للاهتمام ، تتضمن RRP طريقة لتحديد تخطيط عمودي - لم يكن هذا ممكنًا في CSS حتى عام 2011. على سبيل المثال ، ستبدو ثلاثة أعمدة ، بعرض كل 80 وحدة ، كما يلي:
@P co(nu=3,wi=80)
من الصعب بعض الشيء تحليله ، لكن ربما ليس أكثر صعوبة منه
white-space: nowrap.
تجدر الإشارة إلى أن RRP لم يدعم أيًا من "المتتالية" التي نربطها اليوم بأوراق الأنماط. لا يمكن أن يحتوي أي مستند على أكثر من ورقة أنماط نشطة واحدة في وقت واحد ، وهو أمر منطقي تمامًا في حالة مستندات التصميم ، على الرغم من أنه غير معتاد بالنسبة لنا اليوم.
مارك آندرسن (الخالق من الفسيفساء، والتي أصبحت في نهاية المطاف أكثر متصفح شعبية) عرف عن اقتراح شرطة الرد السريع، ولكن لم تنفذ في فسيفساء. بدلاً من ذلك ، انتقل Mosaic على الفور تقريبًا إلى مسار استخدام علامات HTML للتصميم (وهو أمر مأساوي جدًا) ، مضيفًا علامات مثل
<FONT>و <CENTER>.
فيولا وحروب متصفح بروتو
"إذن لماذا لا تقوم فقط بتنفيذ واحد من العديد من مقترحات ورقة الأنماط المتوفرة. مع الهيكل الصحيح ، سيحل هذا المشكلة بالكامل تقريبًا ".
ثم سأقول للناس ، "حسنًا ، أنت بحاجة إلى تعلم هذه اللغة لكتابة مستند ، ثم تعلم لغة أخرى لجعل المستند يبدو بالشكل الذي تريده." أوه ، سوف يحبونها فقط.
- مارك أندريسن 1994
خلافًا للاعتقاد الشائع ، لم يكن Mosaic أول متصفح رسومي. وقد سبقه متصفح ViolaWWW ، وهو متصفح رسومي كتبه في الأصل Pei-Yuan Wei في غضون أربعة أيام فقط.

لقطة شاشة لمتصفح Viola
أنشأ Pei-Yuan لغة ورقة أنماط تدعم نوع الهيكل الهرمي المستخدم في CSS اليوم:
(BODY fontSize=normal
BGColor=white
FGColor=black
(H1 fontSize=largest
BGColor=red
FGColor=white)
)
في هذه الحالة ، نقوم بتطبيق الألوان على جسم المستند (الجسم) ، وعلى وجه الخصوص ، نقوم بتصميم التصميم
H1الموجود داخل الجسم. بدلاً من تكرار المحددات للتحكم في هذا التداخل ، استخدم PWP نظام أقواس يعيدنا إلى أنظمة المسافة البادئة المستخدمة في لغات مثل Stylus و SASS ، والتي لا يزال بعض المطورين يفضلونها على CSS اليوم. هذا من المحتمل أن يجعل بناء جملة PWP أفضل من ناحية واحدة على الأقل من CSS ، والتي تطورت بمرور الوقت إلى اللغة العالمية للويب.
يتميز PWP أيضًا بحقيقة أن لديه طريقة للإشارة إلى أوراق الأنماط الخارجية ، والتي ما زلنا نستخدمها اليوم:
<LINK REL="STYLE" HREF="URL_to_a_stylesheet">
لسوء الحظ ، تمت كتابة ViolaWWW بشكل أساسي للعمل مع نظام X Window ، والذي كان شائعًا فقط على أنظمة Unix. عندما تم نقل Mosaic إلى Windows ، سرعان ما جلبت Viola إلى الغبار.
أوراق الأنماط قبل الويب
HTML هو نوع الشيء الذي يمكن لعالم الكمبيوتر فقط أن يقع في حبه. نعم ، فهي تعبر عن الهيكل الداخلي للوثيقة ، ولكن الوثائق ليست مجرد قواعد بيانات نصية منظمة ؛ لديهم تأثير بصري. يدمر HTML تمامًا أي إبداع رسومي قد يمتلكه مطور المستندات.
- روي سميث ، 1993
إن الحاجة إلى لغة قادرة على التعبير عن أسلوب المستندات أقدم بكثير من الإنترنت نفسه.
كما تعلم على الأرجح ، فإن HTML الذي نعرفه كان يعتمد في الأصل على لغة ما قبل الإنترنت تسمى SGML. في عام 1987 ، قررت وزارة الدفاع الأمريكية اختبار ما إذا كان يمكن استخدام SGML لتبسيط تخزين ونقل كميات هائلة من الوثائق. مثل أي مشروع حكومي جيد ، فإن أول شيء قاموا به هو ابتكار اسم. كان يطلق على الفريق في البداية اسم فريق الدعم اللوجستي بمساعدة الكمبيوتر ، ثم فريق الاكتساب بمساعدة الكمبيوتر والدعم اللوجستي ، ثم أخيرًا ، الاكتساب المستمر ومبادرة دعم دورة الحياة. على أي حال ، كانت الأحرف الأولى من CALS.
أنشأ فريق CALS لغة لتصميم مستندات SGML تسمى FOSI. نشرتمواصفات لغة مفصلة بقدر ما هي غير مفهومة. تضمنت مفضلتي من أكثر الرسوم البيانية التي لا معنى لها والتي كانت موجودة على الويب على الإطلاق.
إحدى قواعد الإنترنت التي ليس لها استثناءات هي أنك دائمًا تنجز المزيد إذا تمكنت من إثبات خطأ شخص ما في هذه العملية. في عام 1993 ، بعد أربعة أيام فقط من اقتراح Pei-Yuan ، اقترح ستيفن هيني أنه بدلاً من إعادة اختراع العجلة ، فإن إصدار FOSI سيكون أكثر ملاءمة لتصميم الويب.
تمت كتابة مستند FOSI نفسه بلغة SGML ، وهي خطوة منطقية جدًا نظرًا لمعرفة مطوري الويب بإصدار من SGML يسمى HTML. يبدو المستند النموذجي كالتالي:
<outspec>
<docdesc>
<charlist>
<font size="12pt" bckcol="white" fontcol="black">
</charlist>
</docdesc>
<e-i-c gi="h1"><font size="24pt" bckcol="red", fontcol="white"></e-i-c>
<e-i-c gi="h2"><font size="20pt" bckcol="red", fgcol="white"></e-i-c>
<e-i-c gi="a"><font fgcol="red"></e-i-c>
<e-i-c gi="cmd kbd screen listing example"><font style="monoser"></e-i-c>
</outspec>
ربما لا تفهم ما هو
docdescأو charlistكما لم يفهمه الأعضاء www-talk. المعلومات السياقية الوحيدة هي ما تعنيه عبارة e-i-c"عنصر في السياق". ومع ذلك ، فإن FOSI جديرة بالملاحظة لأول مرة حيث قدمت وحدة القياس em، والتي أصبحت الآن الطريقة المفضلة للتحجيم في CSS.
كان الصراع الناتج بين اللغات في الواقع قديمًا قدم البرمجة نفسها. لقد كانت معركة بين بناء الجملة الوظيفي على غرار اللثغة والنحو في المزيد من اللغات التقريرية. بى يوان نفسه وصف تركيب بأنه "اللثغة مثل"، ولكنه كان فقط مسألة وقت قبل إصدار اللثغة صحيح ظهرت على الساحة.
ورقة أنماط تورينج كاملة
على الرغم من تعقيدها ، كان يُنظر إلى FOSI بالفعل على أنه حل وسيط لمشكلة تنسيق المستندات. كانت الخطة طويلة المدى هي إنشاء لغة تستند إلى مخطط لغة البرمجة الوظيفية ، القادرة على تنفيذ أقوى تحويلات المستندات التي يمكن تخيلها. تم تسمية هذه اللغة DSSSL. دعونا نعطي الكلمة لأحد مطوري اللغة ، جون بوساك:
لا تخطئ في DSSSL كلغة برمجة نصية. نعم ، DSSSL هو Turing كامل ؛ نعم ، إنها لغة برمجة. لكن لغة البرمجة النصية (على الأقل في تفسيري للمصطلح) هي لغة إجرائية ؛ و DSSSL ليس كذلك بالتأكيد. DSSSL يعمل بكامل طاقته وخالي تمامًا من الآثار الجانبية. لا شيء يحدث على الإطلاق في ورقة أنماط DSSSL. ورقة الأنماط هي وظيفة ضخمة تكون قيمتها وصفًا تجريديًا مستقلًا عن الجهاز وغير إجرائي لمستند منسق ، كمواصفات (إعلان ، إذا كنت ترغب في ذلك) للمناطق المراد عرضها ، يتم تمريرها إلى العارضين الأساسيين.
في أبسط أشكالها ، فإن DSSSL هي بالفعل لغة تصميم منطقية جدًا:
(element H1
(make paragraph
font-size: 14pt
font-weight: 'bold))
نظرًا لأنها كانت لغة برمجة ، يمكنك حتى تحديد الوظائف فيها:
(define (create-heading heading-font-size)
(make paragraph
font-size: heading-font-size
font-weight: 'bold))
(element h1 (create-heading 24pt))
(element h2 (create-heading 18pt))
واستخدم التركيبات الرياضية عند التصميم ، على سبيل المثال ، لعمل خطوط لصفوف الجدول:
(element TR
(if (= (modulo (child-number) 2)
0)
... ;even-row
...)) ;odd-row
لجعلك تشعر بالغيرة أكثر ، دعنا نقول أن DSSSL يمكنه التعامل مع القيم الموروثة كمتغيرات وإجراء عمليات حسابية عليها:
(element H1
(make paragraph
font-size: (+ 4pt (inherited-font-size))))
لسوء الحظ ، كان DSSSL به عيب فادح شائع في جميع لغات نمط المخطط: عدد كبير جدًا من الأقواس. بالإضافة إلى ذلك ، كانت مواصفاته مكتملة بشكل مفرط في وقت الإصدار النهائي ، مما أرعب مطوري المتصفح. تضمنت مواصفات DSSSL أكثر من 210 خاصية فردية.
أدى المزيد من أعمال التطوير إلى إنشاء XSL - لغة تحويل المستندات ليست أقل إرباكًا ، ولكنها أكثر شيوعًا.
لماذا فازت ورقة الأنماط
لا تحتوي CSS على محددات رئيسية (طريقة لتصميم أحد الوالدين بناءً على العناصر الفرعية التي يحتوي عليها). وهذه الحقيقة قد تنتشر المكدس تجاوز المستخدمين ل فترة طويلة ، ولكن اتضح هناك سبب جيدة لغيابهم. في الأيام الأولى للإنترنت ، كان من الضروري عرض الصفحة قبل تحميل المستند بالكامل. بمعنى آخر ، كان من الضروري أن تكون قادرًا على عرض HTML بأعلى الصفحة قبل تحميل HTML في نهاية الصفحة بالكامل.
إن وجود محدد رئيسي يعني أن الأنماط تحتاج إلى التحديث أثناء تحميل مستند HTML. تم استبعاد لغات مثل DSSSL تمامًا لأنها يمكن أن تؤدي عمليات على المستند نفسه ، والذي لم يكن متاحًا بالكامل وقت العرض. كان بيرت بوس
أول من أثار هذه المشكلة في مارس 1995 واقترح لغة عمل لحلها. يحتوي اقتراحه أيضًا على نسخة مبكرة من التعبيرات "smiley" :-).
كانت اللغة نفسها بالأحرى "موجهة" في بناء الجملة:
*LI.prebreak: 0.5
*LI.postbreak: 0.5
*OL.LI.label: 1
*OL*OL.LI.label: A
يشير الرمز
.إلى أقرب الأبناء *والأجداد.
كان للغة Bose خاصية أخرى مثيرة للاهتمام: يمكنك تحديد كيفية عمل عناصر مثل الروابط في ورقة الأنماط نفسها:
*A.anchor: !HREF
في المثال أعلاه ، حددنا أن إحالة عنصر الارتباط هي القيمة الموجودة في السمة الخاصة به
HREF. هذه الفكرة القائلة بأنه يجب التحكم في سلوك عناصر مثل الروابط كانت شائعة في العديد من المقترحات الأخرى. في عصر ما قبل JavaScript ، لم تكن هناك طريقة للتحكم في مثل هذه الجوانب ، لذلك بدا من المنطقي تضمينها في هذه المقترحات.
في إحدى مسودة لغة وظيفية ، اقترحها في عام 1994 رجل نبيل يُدعى إس. Sperberg-McQueen ، يتم تنفيذ نفس السلوك وظيفيًا:
(style a
(block #f) ; format as inline phrase
(color blue) ; in blue if you’ve got it
(click (follow (attval 'href))) ; and on click, follow url
قدمت لغته أيضًا الكلمة الأساسية
contentكطريقة لمعالجة محتوى عنصر HTML من ورقة الأنماط. تمت إضافة هذا المفهوم لاحقًا في CSS 2.1.
ماذا يمكن أن يكون الويب
قبل الحديث عن اللغة التي أصبحت في الواقع CSS ، يجدر ذكر اقتراح لغة آخر ، ولو لسبب أنه ، بمعنى ما ، كان حلم مطوري الويب الأوائل.
كان PSL96 ، كما يوحي الاسم ، إصدار 1996 من لغة مواصفات العرض. تبدو PSL في جوهرها مثل CSS:
H1 {
fontSize: 20;
}
ومع ذلك ، سرعان ما تصبح الأمور أكثر إثارة للاهتمام. على سبيل المثال ، كان من الممكن التعبير عن موضع عنصر ليس فقط اعتمادًا على الحجم (
Width) المعطى له ، ولكن أيضًا على Actual Widthالحجم الحقيقي ( ) الذي يتم عرضه به في المتصفح:
LI {
VertPos: Top = LeftSib . Actual Bottom;
}
يمكنك أن ترى من المثال أنه يمكنك أيضًا استخدام الأخ الأيسر كقيد.
يمكن أيضًا إضافة التعبيرات المنطقية إلى الأنماط. فيما يلي مثال على تصميم عناصر الإرساء التي تحتوي على
href:
A {
if (getAttribute(self, "href") != "") then
fgColor = "blue";
underlineNumber = 1;
endif
}
يمكن أن يمتد هذا التصميم ليشمل جميع أنواع الجوانب ، والتي نستخدم الفصول الدراسية من أجلها اليوم:
LI {
if (ChildNum(Self) == round(NumChildren(Parent) / 2 + 1)) then
VertPos: Top = Parent.Top;
HorizPos: Left = LeftSib.Left + Self.Width;
else
VertPos: Top = LeftSib.Actual Bottom;
HorizPos: Left = LeftSib.Left;
endif
}
من المحتمل أن يؤدي دعم هذه الوظيفة إلى السماح بحلم فصل المحتوى عن الأسلوب ليصبح حقيقة في النهاية. لسوء الحظ ، هذه اللغة قابلة للتوسعة للغاية ، أي أن هناك احتمال كبير أن يكون تنفيذها مختلفًا جدًا في المتصفحات المختلفة. بالإضافة إلى ذلك ، تم نشره في سلسلة من المقالات في العالم العلمي ، وليس على القائمة البريدية www-talk ، حيث تم تنفيذ الجزء الأكبر من العمل البناء. لم يتم دمجه في أي متصفح شائع.
شبح CSS الماضي
اللغة التي يمكن أن تؤدي مباشرة إلى إنشاء CSS (على الأقل كما يوحي الاسم) كانت CHSS (صفحات أنماط HTML المتتالية). تم اقتراحه في عام 1994 من قبل Håkon W Lie.
مثل معظم الأفكار الجيدة ، كان الاقتراح الأولي مجنونًا جدًا.
h1.font.size = 24pt 100%
h2.font.size = 20pt 40%
انتبه إلى النسب المئوية في نهاية القواعد. تعني هذه النسبة المئوية مقدار "الملكية" التي تحتويها ورقة الأنماط الحالية على تلك القيمة. على سبيل المثال ، إذا كانت ورقة الأنماط السابقة
h2تحتوي على حجم خط محدد 30ptلـ 60%"الملكية" وكانت ورقة الأنماط تلك h2تحدد نمطًا لـ 20px 40%، فيمكن دمج القيمتين بناءً على النسبة المئوية للملكية لإنتاج قيمة تبلغ حوالي 26pt.
من المفهوم تمامًا سبب تقديم مثل هذا الاقتراح في عصر صفحات HTML الوثائقية: مثل هذا التصميم القائم على المقايضات لن يتم فهمه في عالمنا الموجه نحو التطبيق. مهما كان الأمر ، فقد جاء بالفكرة الأساسية للحاجة إلى هيكل ورقة أنماط متتالية. بمعنى آخر ، فكرة أن هناك حاجة إلى أوراق أنماط متعددة في نفس الصفحة.
في صيغتها الأصلية ، تم التعرف على هذه الفكرة بشكل عام على أنها مهمة لأنها أعطت المستخدم النهائي التحكم في ما شاهده. يمكن أن تحتوي الصفحة الأصلية على ورقة أنماط واحدة ، ويمكن أن يكون لدى مستخدم الويب ورقة أنماط خاصة به ويمكن دمجها لعرض الصفحة. كان يُنظر إلى دعم أوراق الأنماط المتعددة على أنه طريقة للحفاظ على الحرية الشخصية على الويب ، وليس كطريقة لدعم المطورين (الذين ما زالوا يقومون بترميز كل صفحة HTML يدويًا).
قد يكون المستخدم قادرًا على التحكم في درجة التحكم التي أعطاها لتوصيات مؤلف الصفحة ؛ تم وصف هذا التحكم في جملة لغة بواسطة مخطط ASCII:
User Author
Font o-----x--------------o 64%
Color o-x------------------o 90%
Margin o-------------x------o 37%
Volume o---------x----------o 50%
مثل العديد من هذه الافتراضات ، احتوى هذا المشروع على ميزات ظهرت في CSS بعد عقود فقط ، إن لم يكن على الإطلاق. على سبيل المثال ، كان لديه القدرة على كتابة تعبيرات منطقية بناءً على بيئة المستخدم:
AGE > 3d ? background.color = pale_yellow : background.color = white
DISPLAY_HEIGHT > 30cm ? http://NYT.com/style : http://LeMonde.fr/style
في رؤية خيال علمي متفائلة إلى حد ما للمستقبل ، كان من المفترض أن يعرف المتصفح مدى صلة كل جزء من المحتوى بالمستخدم ، مما يسمح بعرضه بحجم أكبر:
RELEVANCE > 80 ? h1.font.size *= 1.5
نحن جميعا نعرف ما حدث بعد ذلك
مايكروسوفت ملتزمة تمامًا بفتح المعايير ، خاصة على الإنترنت.
- جون لودمان ، 1994
واصل Haakon Lee العمل على تبسيط اقتراحه ، وقام بالاشتراك مع Bert Bose بنشر النسخة الأولى من مواصفات CSS في ديسمبر 1996. انتهى به الأمر بكتابة أطروحة الدكتوراه الخاصة به حول إنشاء CSS ، وقد ساعدني هذا المستند بشكل كبير في كتابة المقال.
مقارنة بالعديد من المقترحات الأخرى ، كان الجانب الملحوظ في CSS هو بساطته. من السهل تحليلها وكتابتها وقراءتها بسهولة. كما حدث في كثير من الأحيان في تاريخ الإنترنت ، فإن الفائز هو التقنية التي يسهل على المبتدئ إتقانها ، وليست التقنية التي تبين أنها الأقوى بالنسبة للمتخصصين.
هذا في حد ذاته هو تذكير لكيفية الابتكار العشوائي. على سبيل المثال ، دعم المحددات السياقية (
body ol li) فقط لأن Netscape كان لديه بالفعل طريقة لإزالة الحدود من الصور التي كانت ارتباطات تشعبية ، ويبدو أنه من الضروري القيام بكل ما يمكن أن يفعله المتصفح الشهير. تسببت الوظيفة نفسها في تأخير كبير في تنفيذ CSS ، لأنه في ذلك الوقت ، لم تقم معظم المتصفحات بتخزين "مكدس" من العلامات عند تحليل HTML. هذا يعني أن المحللون بحاجة إلى إعادة تصميم لدعم CSS بشكل كامل.
بسبب هذه المشكلات (والاستخدام الواسع لعلامات HTML غير القياسية للتصميم) ، لم تكن CSS قابلة للاستخدام حتى عام 1997 ، ولم تكن مدعومة بالكامل من قبل أي متصفح حتى مارس 2000. كما سيخبرك أي مطور ، كان دعم المتصفح بعيدًا جدًا عن التوافق مع المعايير وقد تغير ذلك منذ بضع سنوات فقط ، بعد خمسة عشر عامًا من إصدار CSS.
Netscape 4 CSS,<body>, , IE4<body>, , CSS ? CSS. , IE4 , Netscape 4.
—
يشتهر Internet Explorer 3 بإصداره بدعم CSS (رهيب نوعًا ما). تقرر أنه لكي تتمكن من المنافسة في Netscape 4 ، يجب أن يكون هناك أيضًا دعم لهذه اللغة. ومع ذلك ، بدلاً من مضاعفة الجهود لتطبيق هذه اللغة الثالثة (بعد HTML و JavaScript) ، فقد تقرر أنه يجب تنفيذها عن طريق تحويل CSS إلى JavaScript ثم تنفيذها. الأسوأ من ذلك ، أنه تقرر أن تكون ورقة أنماط JavaScript الوسيطة هذه متاحة لمطوري الويب .
كانت البنية عبارة عن JavaScript عادي مع إضافة واجهة برمجة تطبيقات التصميم:
tags.H1.color = "blue";
tags.p.fontSize = "14pt";
with (tags.H3) {
color = "green";
}
classes.punk.all.color = "#00FF00"
ids.z098y.letterSpacing = "0.3em"
كان من الممكن أيضًا تحديد الوظائف التي تم حساب قيمها عند مواجهة كل تكرار للعلامة :
evaluate_style() {
if (color == "red"){
fontStyle = "italic";
} else {
fontWeight = "bold";
}
}
tag.UL.apply = evaluate_style();
إن فكرة تبسيط الخط الفاصل بين الأنماط والنصوص فكرة معقولة تمامًا ، واليوم تولد من جديد في مجتمع React .
كانت JavaScript نفسها لغة صغيرة جدًا في ذلك الوقت ، ولكن بفضل الهندسة العكسية ، تمت إضافة الدعم لها في IE3 (في شكل JScript). كانت المشكلة الأكبر هي أن المجتمع كان يحتشد بالفعل حول CSS في ذلك الوقت ، وكان ينظر إلى Netscape من قبل معظم مجتمع المعايير على أنه جاني في ذلك الوقت . عندما اقترحت Netscape JSSS على لجنة المعايير ، أدارت أذنًا صماء. بعد ثلاث سنوات ، أسقط Netscape 6 دعمه لـ JSSS وتلاشى تدريجياً.
ما يمكن أن ينتظرنا
بفضل الرقابة العامة من W3C ، تم إصدار Internet Explorer 5.5 بدعم كامل لـ CSS1 في عام 2000. بالطبع ، كما نعلم الآن ، كانت تطبيقات المستعرض لـ CSS عربات التي تجرها الدواب بشكل رهيب ويصعب العمل معها لعقد آخر على الأقل. لحسن الحظ ، تحسن الوضع اليوم بشكل كبير ، مما جعل من الممكن أخيرًا تحقيق حلم المطورين أنه يمكنك كتابة الكود مرة واحدة وسيعمل (تقريبًا) بنفس الطريقة في المتصفحات المختلفة.
شخصياً ، استخلصت من كل هذا مدى تعسفية وتأثير القرارات التي تحكم أدواتنا الحديثة. إذا تم تصميم CSS ليكون متوافقًا مع قيود عام 1996 ، فربما بعد عشرين عامًا يمنحنا الإذن للقيام بالأشياء بشكل مختلف قليلاً.