CSS يك زبان استايلشيت(Stylesheet) است كه براي توصيف شيوه نمايش فايلهاي متني نوشته شده بهزبانهاي ماركآپ (Markup) استفاده ميشود. زبانهاي استايلشيتهمانطور كه از نام آنها برميآيد، فرم نمايش فايلها را مشخص ميكنند.مهمترين كاربرد اين زبان ايجاد استيل و فرم براي صفحات وب نوشته شدهبهزبان HTML و XHTML است. با اين وجود CSS را ميتوان در مورد هرنوع متن نوشته شده به زبان XML از جمله SVG و XUL اعمال كرد.
ويژگيها
از مهمترين مزاياي CSS اين است كه كاربرانميتوانند رنگ، فونت، ساختار و ديگر وجوه نمايش متن را تغيير دهند. هدفاصلي از طراحي CSS جدا كردن محتواي متني فايلها از شيوه نمايش آنهااست. محتواي متني فايلها به زبان HTML و ديگر زبانهاي ماركآپ و شيوهنمايش متن با استفاده از زبان CSS نوشته ميشود. اين جداسازي ميتوانددسترسي به محتواي متني را بهبود بخشد، انعطافپذيري و كنترل روي مشخصات وويژگيهاي نمايش را افزايش دهد و پيچيدگي و تكرارمحتواي ساختاري را ازطريق ايجاد امكاناتي مانند طراحي وب بدون استفاده از جدول كاهش دهد. بااستفاده از CSS ميتوان يك صفحه ماركآپ را به شيوههاي (Style)گوناگون و با شيوههاي رندرينگ متفاوت نمايش داد. روشهاي مختلف رندرينگفايل را به اشكال مختلف مناسب براي كاربردهاي مختلف آماده ميكند.بهعنوان مثال، نسخههاي قابل چاپ، نسخههاي قابل تبديل به صوت كه بامرورگرهاي مبتني بر صدا يا خواننده صفحه نمايش قابل خواندن هستند توسطCSS آماده ميشوند. از مهمترين ويژگيهاي CSS ميتوان به امكانرندرينگ صفحه براي تبديل به خط بريل اشاره كرد.
دستور زبان CSS
دستور زبان CSS ساده است و از تعداد اندكي كلماتكليدي انگليسي تشكيل ميشود كه براي مشخص كردن اسامي مشخصات فرمهايگوناگون استفاده ميشوند. يك استايلشيت در حقيقت يك ليست از قوانين است.هر قانون يا مجموعه قوانين از يك يا چند انتخاب كننده و يك بلوكتعريفكننده تشكيل ميشود. بلوك تعريفكننده شامل يك ليست از تعريفهايجدا شده توسط سميكالن(;) است كه درون دو كروشه قرار ميگيرند. هر تعريفخود شامل يك مشخصه، يك كولون، يك مقدار و در انتها يك سمي كولون است.
CSS داراي يك الگوي تعيين تقدم براي مشخص كردنتقدم قوانين فرمهاي مختلف است. زماني كه چند قانون مرتبط با يك استيلقابل اعمال هستند، CSS تقدم آنها را تعيين ميكند و سپس با محاسبه وزنيا تقدم هر قانون، اين تقدم را به آنها اختصاص ميدهد. اين عمل كه بهCascade به معناي «آبشار» معروف است نتايج اعمال قوانين را قابلپيشبيني ميسازد. يكي از ويژگيهاي قابل توجه در CSS اين است كه اجازهميدهد فرم و استيل يك فايل تحت تاثير چند استايلشيت باشد. يك استايلشيتميتواند برخي از ويژگيهاي خود را از يك استايلشيت ديگر به ارث ببرد.اين ويژگي امكان ايجاد تركيب منحصربهفردي از انواع فرمها را فراهمميكند.
كاربرد CSS
پيش از پيدايش CSS تقريبا همه ويژگيهاي نمايشياسناد HTML در كد HTML نوشته شده بهزبان ماركآپ درج ميشد. رنگفونت، فرم و استيل پس زمينه، مرزها و اندازهها و نيز نحوه قرار گرفتناجزاي مختلف نسبت به هم بايد بهطور مستقيم و اغلب بهطور تكرارشونده دركد HTML گنجانيده ميشدند. CSS به برنامهنويسان اجازه ميدهد كه بخشبزرگي از اين اطلاعات را به يك استايلشيت مجزا منتقل كنند و با اين كاركد HTML را سادهتر كنند و كارايي آن را افزايش دهند در حالي كه كدهايپيش از پيدايش CSS علاوه بر پيچيدگي زياد انعطافپذيري اندكي داشتند ونگهداري كد نيز با دشواري و هزينه زياد همراه بود.
تاريخچه
پيدايش استايلشيتها به دهه 1970 باز ميگردد. درآن زمان اين نوع فايلها SGML ناميده ميشدند. آبشاري كردن اين صفحاتبهعنوان ابزاري براي ايجاد يك روش سازگار و مناسب براي فراهما~ورياطلاعات فرم و استيل براي صفحات وب بهوجود آمد. با گذشت زمان، رشد زبانHTML آن را به يكي از مهمترين ابزارهاي كار توسعهدهندگان وب تبديلكرد. هرچند اين روند تكاملي قدرت كنترل طراح بر ظاهر سايت را تا حد زياديافزايش ميداد، اين امر بهقيمت پيچيدگي كد HTML و افزايش هزينههاينوشتن كد و نگهداري آن تمام ميشد. گوناگوني در پيادهسازي مرورگرهاي وبايجاد يك وضعيت ثابت و پايدار در ظاهر سايت را ناممكن ميساخت و كاربرانكنترل كمتري بر شيوه نمايش صفحات وب داشتند و نميتوانستند در صورت لزومتغييري در آن بهوجود آورند. براي بهبود قابليتهاي نمايش صفحات وب، 9زبان مختلف به C3W پيشنهاد شد. از ميان اين 9زبان، دو زبان انتخاب شدندكه پايههاي اصلي CSS را تشكيل ميدهند. اين دو زبان عبارت بودند از:CHSS و SSP. طراحي و توسعه CSS در سال 1995 آغاز شد و پيش از پايانسال 1996 رسما با نام CSS سطح يك منتشر شد. نسخه كنوني CSS بهنامCSS سطح 3 كه در سال 1998 پديد آمد، همچنان در حال توسعه است.
پشتيباني مرورگرها
فيلتر CSS يك فن كدگذاري است كه هدف آن نمايش يامخفي كردن بخشهايي از CSS در مرورگرهاي مختلف است. با استفاده از فيلترCSS ميتوان كدهاي CSS را بهنحوي تغيير داد كه در مرورگرهاي مختلفبهدرستي نمايش داده شود.
محدوديت ها
مرورگرهاي مختلف كدهاي CSS را بهروشهاي مختلفرندر ميكنند. اين امر نتيجه اشكالات موجود در طراحي مرورگرها يا عدمپشتيباني برخي از مرورگرها از ويژگيهاي CSS است. بهعنوان مثال IE كهاز نسخه 3 تاكنون نسخه 2.0 CSS را پيادهسازي كرده است، در اغلبنسخههاي پيش از نسخه 8 بسياري از خصوصيات بسيار مهم مانند طول و عرض رابهدرستي تفسير نميكرد. اكنون اكثر مرورگرها با موفقيت بر اين مشكل غلبهكردهاند اما CSS هنوز نيازمند اعمال تغييرات زيادي است تا به ساختارقابل نمايش يكساني روي همه مرورگرها دست يابد. بهنظر ميرسد كه تادستيابي به ساختاري كه با دقتي در حد پيكسل روي همه مرورگرها يكسان نمايشداده شود، راه درازي در پيش است. عدم وجود عبارتهاي محاسباتي در CSSانجام عمليات محاسباتي را امكانناپذير ميسازد. اگرچه CSS براي انجاممحاسبات طراحي نشده است، اما در مواردي مانند تعيين حاشيه صفحه بر حسبتعداد ستونها يا پيكسلها انجام محاسبات ساده لازم است.
عدم وجود متغيرها در CSS نيز از مواردي است كهبايد در مورد آن چارهانديشي شود. در زبان CSS تنها ميتوان از مقاديرثابت استفاده كرد. به اين ترتيب وقتي مقدار يكي از ثابتهاي موجود در كدتغيير ميكند تنها با استفاده از دستور Replace-all ميتوان مقدار آن رادر همه قسمتهاي كد تغيير داد. تغيير مقدار از طريق جابجايي چندان منطقينيست واغلب مشكل ايجاد ميكند. مثلا اگر بخواهيم برخي از مقادير ارتفاع راكه 50 پيكسل هستند، تغيير دهيم و برخي ديگر را ثابت نگهداريم، استفاده ازاين شيوه عملي نيست. انجام اين كار در CSS تنها از طريق عبارات منظمبسيار پيچيده امكانپذير است. بسياري از توسعهدهندگان كد براي حل اينمشكل از PHP براي كنترل و تغيير خروجي CSS استفاده ميكنند. امروزهبسياري از توسعهدهندگان كد معتقدند كه CSS نيازمند پيادهسازي برخي ازالمانها و ويژگيهاي زبانهاي برنامهنويسي است.
مزايا
با تركيب CSS با امكانات يك سيستم مديريت محتوا،ميتوان سيستم را بهنحوي برنامهريزي كرد كه انعطافپذيري سيستم افزايشيافته و قابل تطبيق با محتواي صفحه باشد. اين مساله به كاربران وبرنامهنويساني كه آشنايي زيادي با مفاهيم CSS و با ويرايش كد CSS وHTML ندارند، كمك ميكند بدون ايجاد تغييرات زياد صفحات جديد را به فرمييكسان با صفحات قبلي ايجاد كنند. براي نمونه، نويسنده يك مقاله ميتواندتعداد ستونهاي مقاله را تعيين كند يا تصميم بگيرد كه كدام صفحات مقالهداراي تصوير باشند. اين اطلاعات به سيستم مديريت محتوا منتقل ميشود ومنطق برنامه اطلاعات دريافتي را ارزيابي ميكند و بر اساس تعداد مشخصي ازپارامترها تعيين ميكند كه چطور مجموعهاي از قوانين و كلاسها را بهالمانهاي HTML اعمال كند. بنابراين مكان و فرم المانها توسط سيستممديريت محتوا تعيين ميشود. اهميت اين مزيت بزرگ زماني مشخص ميشود كهدر مقياسهاي خيلي بزرگ و با سايتهاي پيچيده سر و كار داشته باشيم.سايتهاي خبري نمونه بارزي از اين نوع سايتها هستند، تعداد افرادي كه ايننوع سايتها را بهروز ميكنند و يا بهنوعي به آنها اطلاعات ارسالميكنند، نسبتا زياد باشد و اين امتياز بزرگ طراحي و نگهداري آنها را تاحد زيادي آسان ميكند.
وقتي CSS از ديدگاه ارثبري و Cascadingبهطور كارآمد استفاده شود، يك استايلشيت يكنواخت و يكدست بهدست ميآيدكه ميتوان فرم و استيل آن را بر همه المانهاي سايت اعمال كرد. در صورتنياز به تغيير فرم و استيل برخي از المانها، اعمال اين تغييرات بااستفاده از سيستم مديريت محتوا بسيار ساده و با استفاده از ويرايش تعداداندكي از قوانين امكانپذير است؛ در حاليكه پيش از پيدايش CSS، اين نوعنگهداري از سيستم بسيار دشوار، پرهزينه و وقتگير بود.