CSSკასკადურ სტილთა ფურცლები (ინგლ. Cascading Style Sheets, CSS) — სტილთა ფურცლების ენა, რომელიც გამოიყენება მონიშვნის ენით დაწერილი დოკუმენტის წარდგინების აღსაწერად, მაგალითად HTML-ის გამოყენებით.[1] CSS არის მსოფლიო აბლაბუდის ტექნოლოგიური ქვაკუთხედი, HTML-თან და JavaScript-თან ერთად.[2] CSS შემუშავებულია კონტენტის და მისი წარდგენის, მათ შორის ფერების, ფონტების და გაწყობის გაცალკევებისათვის.[3] ამგვარ გაცალკევებას შეუძლია გააუმჯობესოს კონტენტის ხელმისაწვდომობა, უზრუნველყოს წარდგენის თვისებების განსაზღვრის უფრო მეტი მოქნილობა და მართვადობა, უზრუნველყოს მრავალი ვებგვერდის მიერ საზიარო ფორმატირების გამოყენება შესაბამისი სტილების განცალკევებულ .css ფაილში აღწერით, რაც ამცირებს კონტენტის სტრუქტურაში სირთულესა და გამეორებადობას, ისევე როგორც უზრუნველყოს .css ფაილის კეშირება, რაც საზიარო სტილის და ფორმატირების მქონე სხვადასხვა გვერდის ჩატვირთვის სიჩქარეს აამაღლებს. ფორმატირებისა და კონტენტის გაცალკევება ასევე იძლევა შესაძლებლობას ერთი და იგივე გვერდი წარდგენილ იქნას სხვადასხვა სტილში გამოქვეყნების სხვადასხვა მეთოდისათვის, როგორიცაა მონიტორისთვის, ბეჭდვისთვის, ხმოვანისთვის, და ბრაილის შრიფტზე დაფუძნებული ტაქტილური მოწყობილობებისთვის. CSS საშუალებას იძლევა ფორმატირება შეიცვალოს თუ კონტენტზე წვდომა ხორციელდება მობილური მოწყობილობიდან.[4] სახელი „კასკადური“ მომდინარეობს სტილების პრიორიტეტულობის სქემიდან, რომლითაც განისაზღვრება თუ რომელი სტილი იქნება გამოყენებული ელემენტისთვის, იმ შემთხვევაში, როდესაც ერთსა და იმავე ელემენტზე გაწერილია ერთზე მეტი წესი. კასკადური პრიორიტეტების სქემა პროგნოზირებადია. კასკადურ სტილთა ფურცლების ტექნიკური მახასიათებლების მხარდაჭერას ახორციელებს მსოფლიო აბლაბუდის კონსორციუმი (W3C). ინტერნეტის მედია-ტიპი (MIME-ტიპი) HTML-ის გარდა, CSS-ის გამოყენება მხარდაჭერილია მონიშვნის სხვა ენებშიც, მათ შორის XHTML, XML, SVG, XUL. სინტაქსიCSS-ს აქვს მარტივი სინტაქსი და იყენებს გარკვეული რაოდენობის ინგლისურ საკვაძო სიტყვებს სტილის სხვადასხვა თვისების სახელის განსაზღვრისთვის.
სტილის ფურცელი შედგება წესების ნუსხისგან. თითოეული წესი ან წესების კრებული შედგება ერთი ან მეტი სელექტორისგან და გამოცხადების ბლოკისგან. სელექტორი განლაგებულია წესის მარცხენა მხარეს სელექტორი, სელექტორი {
თვისება: მნიშვნელობა;
თვისება: მნიშვნელობა;
თვისება: მნიშვნელობა;
}
სელექტორიCSS-ში სელექტორები აცხადებენ მონიშვნის რომელ ნაწილს ეკუთვნის სტილი, რისთვისაც იყენებს ტეგების და ატრიბუტების შესაბამისობას თავად მონიშვნაში. სელექტორი შეიძლება გამოყენებულ იქნას შემდეგზე:
კლასები და იდენტიფიკატორები რეგისტრის მიმართ მგრძნობიარეა, იწყება ასობგერით და შეიძლება შეიცავდეს ასოებს, ციფრებს, დეფისებს და ხაზგასმებს. კლასი შეიძლება გამოყენებულ იქნას ნებისმიერი ელემენტის ნებისმიერი რაოდენობის ნიმუშზე. CSS-სელექტორებში ფსევდოკლასები გამოიყენება ფორმატირებისვის იმ ინფორმაციის საფუძველზე, რომელიც არ არის მოცემული დოკუმენტის ხეში. ფართოდ გამოყენებადი ერთ-ერთი ფსევდოკლასის ნიმუშია შესაძლებელია სელექტორების მრავალგვარი გაერთიანება, შთამბეჭდავი მოქნილობის და სპეციფიკურობის მისაღწევად. მრავალი სელექტორი შეიძლება გაერთიანდეს მიმორიგებულ სიაში, ელემენტების განსასაზღვრად მათი მდებარეობის, ტიპის, იდენტიფიკატორის, კლასის ან მათი რომელიმე კომბინაციით. სელექტორების მითითების თანმიმდევრობა მნიშვნელოვანია. მაგალითისთვის, შემდეგი ცხრილი შეიცავს სელექტორების სინტაქსის შეჯამებას, გამოყენების ჩვენებითა და CSS ვერსიის მითითებით, როდესაც იგი დაემატა.
გამოცხადების ბლოკიგამოცხადების ბლოკი შედგება გამოცხადებების ნუსხისგან, რომელიც მოქცეულია ფიგურულ ფრჩხილებში. თითოეული გამოცხადება შედგება თვისებისგან, ორწერტილისგან ( თვისებები განსაზღვრულია CSS-ის სტანდარტში. თითოეულ თვისებას აქვს შესაძლო მნიშვნელობების გარკვეული ნუსხა. ზოგიერთ თვისებას მოქმედება შეუძლია ნებისმიერი ტიპის ელემენტზე, ხოლო ზოგიერთს — მხოლოდ გარკვეული ჯგუფის ელემენტებზე. თვისებების მნიშვნელობები შეიძლება იყოს განსაზღვრული საკვანძო სიტყვები, მაგალითად როგორიცაა " სიგრძის ერთეულებიარანულოვანი მნიშვნელობები, რომლებიც წარმოადგენენ წრფივ ზომებს, უნდა წარდგენილნი იყვნენ სიგრძის ერთეულან ერად, რომელიც შეიძლება იყოს აბრევიატურა ან ანბანური კოდი, მაგალითად, გამოყენებაCSS-ის შემუშავებამდე, HTML დოკუმენტის გაფორმების ატრიბუტები თითქმის სრულად თავსდებოდა HTML მონიშვნის შიგნით. ყველა ფონტის ფერი, ფონის სტილი, ელემენტების სწორებები, საზღვრები და ზომები აღწერილი იყო უშუალოდ HTML-კოდში, ხშირ შემთხვევაში კი, ეს აღწერა მეორდებოდა. CSS ავტორს საშუალებას აძლევს ინოფორმაციის დიდი ნაწილი გადატანილ იქნას სხვა ფაილში — სტილის ფურცელში, რისი წყალობით, მიიღება შედარებით გამარტივებული HTML დოკუმენტი. მაგალითისთვის, სათაურები ( CSS-მდე, დოკუმენტის ავტორს, რომელსაც სსურდა გარკვეული ტიპოგრაფიული მახასიათებლების მინიჭება, მაგალითად, ყველა მაგალითად, CSS-მდელი HTML-ში, სასათაურო ელემენტი წითელი ტექსტით უნდა დაწერილიყო შემდეგნაირად: <h1><font color="red"> Chapter 1. </font></h1>
CSS-ის გამოყენების შემთხვევაში, იგივე ელემენტი შეიძლება დაიწეროს სტილის თვისებების გამოყენებით, HTML ატრიბუტების ნაცვლად: <h1 style="color: red;"> Chapter 1. </h1>
ამის უპირატესობები პირველ ჯერზე არ იკვეება, თუმცა CSS-ის სიმძლავრე ნათელი ხდება, როდესაც სტილის თვისებები თავსდება შიდა სტილის ელემენტში, ან უფრო უკეთესი, გარე CSS ფაილში. მაგალითად, დავუშვათ, დოკუმენტი შეიცავს შიდა CSS-ელემენტს: <style>
h1 {
color: red;
}
</style>
ყველა <style>
h1 {
color: blue;
}
</style>
იმის ნაცვლად, რომ საგულდაგულოდ ეძება მთელ დოკუმენტში <link href="path/to/file.css" rel="stylesheet" type="text/css">
სტილის ცალკე ფაილად გატანა კიდევ უფრო აშორებს საპრეზენტაციო სტილს და HTML-სტრუქტურას ერთმანეთისგან და შესაძლებლობას იძლევა მრავალი დოკუმენტის სტილი შეიცვალოს მარტივად, საზიარო გარე CSS-ფაილის რედაქტირებით. წყაროებიCSS-ის ინფორმაცია შესაძლებელია მოწოდებულ იქნას სხვადასხვა წყაროდან, ესენი შეიძლება იყოს ვებ-ბრაუზერი, მომხმარებელი, ან ავტორი. ავტორისეული ინფორმაციის შემდგომი კლასიფიცირება შესაძლებელია ჩაშენებულობით, მნიშვნელობით, მედია-ტიპით, სელექტორის (სელექტორის) სპეციფიკურობით, წესის მიმდევრობით, მემკვიდრეობითა და თვისების განსაზღვრებით. CSS-ის შესახებ ინფორმაცია შეიძლება ჩაშენებული იყოს HTML-დოკუმენტში , ან წარმოდგენილი იყოს ცალკე დოკუმენტის სახით. შესაძლებელია მრავალი სტილთა ფურცლების იმპორტირება. განსხვავებული სტილები შეიძლება იყოს გამოყენებული იმის მიხედვით, თუ რა მოწყობილობა გამოიყენება გამოსატანად; მაგალითად, საეკრანო სტილი შეიძლება მნიშვნელოვნად განსხვადებოდეს საბეჭდი ვერსიისგან, ამდენად, ავტორს შესაძლებლობა აქვს მოარგოს სტილი თითოეულ საშუალებას. ყველაზე მაღალი პრიორიტეტის მქონე სიტილის ფურცელი მართავს კონტენტის გამოსახულებას. გამოცხადებები, რომლებიც არ არიან მითითებული წყაროს მაღალ პრიორიტეტეში, გადიან დაბალი პრიორიტეტის წყაროში, მაგალითად, მომხმარებლის აგენტის სტილში. ასეთ პროცესს ეწოდება კასკადური. CSS-ის ერთ-ერთი მიზანია მომხმარებლისთვის წარდგენაზე მეტი კონტროლის დაშვება. დავუშვათ, თუ ვინმესთვის რთულად აღსაქმელია წითელი გაკრული ასოებით დაწერილი სათაურები, მას საშუალება აქვს კონტენტს მოარგოს წარდგენის სხვა სტილი. ბრაუზერზე და ვებ-საიტზე დამოკიდებულობით, მომხმარებელს შეუძლია აირჩიოს დიზაინერის მიერ მოწოდებული სტილებიდან, ან სრულად ამოიღოს დამატებული სტილები და კონტენტი იხილოს ბრაუზერის საწყისი სტილების გამოყენებით, ან შეიძლება თავი აარიდოს წითელი გაკრული წყობით დაწერილი სათაურების სტილს სხვა ატრიბუტების შეცვლის გარეშე.
სპეციფიკურობასპეციფიკურობა განსაზღვრავს სხვადასხვა წესის ფარდობით წონას. იგი საზღვრავს თუ რომელი წესი უნდა იქნას გამოყენებული ელემენტზე, ერთზე მეტი წესის არსებობის შემთხვევაში. სპეციფიკურობაზე დაყრდნობით, უბრალო სელექტორს (მაგ.,̇ ამდენად, შემდეგი წესების სელექტორებს მივყავართ ნაჩვენებ სპეციფიკურობამდე:
მაგალითივთქვათ, გვაქვს შემდეგი HTML მონაკვეთი: <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
#xyz { color: blue; }
</style>
</head>
<body>
<p id="xyz" style="color: green;">სანიმუშო პარაგრაფი სპეციფიკურობის საჩვენებლად</p>
</body>
</html>
ზედა მაგალითში, მემკვიდრეობითობამემკვიდრეობითობა CSS-ის საკვანძო შესაძლებლობაა; იგი ეყრდნობა წინაპარსა და შთამომავალს შორის ურთიერთობებს. მემკვიდრეობითობის წყალობით, თვისებები მოქმედებენ გამოიყენება არა მხოლოდ კონკრეტულ ელემენტზე, არამედ მის შთამომავლებზეც. მემკვიდრეობითობა ემყარება დოკუმენტის ხეს, რომელიც, თავისმხრივ, არის გვერდში არსებული XHTML ელემენტების იერარქია, რომელიც ეფუძნება ერთმანეთში მოთავსებულობას. შთამომავალი ელემენტებს შეუძლიათ მემკვიდრეობით მიიღონ CSS თვისების მნიშვნელობა ნებისმიერი წინაპრისგან, რომელიც მას გარს ერტყმის. როგორც წესი, შთამომავალი ელემენტები მემკვიდრეობით იღებენ ტექსტობრივ თვისებებს, თუმცა წინაპრის ბლოკთან დაკავშირებული თვისებები მათზე არ გადადის. თვისებები რომელიც შეიძლება მემკვიდრეობით გადაცემულ იქნას არის ფერი ( მაგალითიმომოცემულია სტილის შემდეგი ფურცელი: h1 {
color: pink;
}
ვთქვათ შიგნით მასში არსებობს ელემენტი <h1>
ეს ტექსტი <em>აჩვენებს</em> მემკვიდრეობითობას
</h1>
თუ ელემენტისთვის არ იქნება განსაზღვრული ფერი, აქცენტირებული სიტყვა „აჩვენებს“ მემკვიდრეობით იღებს თეთრსივრცეთვისებებსა და სელექტორებს შორის თეთრსივრცე უგულვებელყვება. კოდის ეს სნიპეტი: body{overflow:hidden;background:#000000;background-image:url(images/bg.gif);background-repeat:no-repeat;background-position:left top;}
იგივეა რაც: body {
overflow: hidden;
background-color: #000000;
background-image: url(images/bg.gif);
background-repeat: no-repeat;
background-position: left top;
}
CSS-კოდის კითხვადობის გასაიოლებლად, ფორმატირებისას მიღებულია, რომ თითოეული თვისება შეიწიოს და მიეცეს მას საკუთარი სტრიქონი. კითხვადობისათვის CSS-ფორმატირების გარდა, შემოკლებული თვისებები ხელს უწყობს კოდის სწრაფ წერას, და ასევე უფრო სწრაფად მუშავდება წარმოდგენის აწყობისას:[5] body {
overflow: hidden;
background: #000 url(images/bg.gif) no-repeat left top;
}
პოზიციონირებაCSS 4.0 განსაზვრავს პოზიციონირების ოთხ სქემას:
პოზიციის თვისებაპოზიციის
Float და Clear თვისებებითვისებას
ისტორიაCSS პირველად შემოთავაზებულ იქნა ჰოკონ ვიუმ ლის მიერ 1994 წლის 10 ოქტომბერს. იმ დროს, ჰოკონ ლი მუშაობდა ტიმ ბერნერს-ლისთან ერთად CERN-ში. იმავდროულად, არსებობდა სტილთა ფურცლების რამდენიმე სხვა ენის შემოთავაზება და საჯარო და W3C-ის შიდა დისკუსიების შედეგად შემუშავდა W3C-ის პირველი რეკომენდაცია CSS-თან დაკავშირებით (CSS1), რომელიც გამოქვეყნდა 1996 წელს. განსაკუთრებული გავლენა მასზე მოახდინა ბერტ ბოსის შეთავაზებამ; იგი გახდა CSS1-ის თანაავტორი და ითვლება CSS-ის თანაშემოქმედად. ![]() სხვადასხვა ფორმით სტილთა ფურცლები არსებობდა 1980-იანებიდან SGML-ის შექმნასთან ერთად, ხოლო CSS შეიქმნა სტილთა ფურცლების ვებში გამოსაყენებლად. ერთ-ერთი მოთხოვნა, რომელიც წაყენებული იყო ვების სტილთა ფურცლების ენის მიმართ იყო სტილების ფურცლების სხვადასხვა ვებ-რესურსიდან გამოყენების შესაძლებლობა. ამის გამო, არსებული ენები, როგორებიცაა DSSSL და FOSI გამოუდეგარი იყო. მეორე მხრივ, CSS იძლეოდა შესაძლებლობას დოკუმენტის სტილისთვის გამოყენებული ყოფილიყო სტილების მრავალი ფურცელი, „კასკადური“ გზით. HTML-ის ზრდასთან ერთად, საჭირო გახდა სტილისტური შესაძლებლობების უფრო ფართო სპექტრის მოცვა, ვებ-შემმუშავებლების მოთხოვნების დასაკმაყოფილებლად. ასეთი განვითარება, დიზაინერს ვებ-გვერდის იერსახეზე უფრო მეტ კონტროლს აძლევდა, თუმცა ამის ფასი იყო გართულებული HTML-კოდი. დანერგვის ნაირსახეობებმა ისეთ ვებ-ბრაუზერებში, როგორიც იყო ViolaWWW და WorldWideWeb, საიტის ერთფეროვანი იერის წარმოდგენა გაართულა, მომხმარებლებს ნაკლები კონტროლი ჰქონდათ ვებ-კონტენტის ეკრანზე გამოსახვაზე. ტიმ ბერნელს-ლის დაწერილ ბრაუზერს/რედაქტორს სტილის ფურცლები ჩაშენებული ჰქონდა პროგრამის კოდში. აქედან გამომდინარე, სტილების მიბმა ვებ-დოკუმენტზე ვერ მოხდებოდა. რობერტ კაიოს, რომელიც ასევე CERN-დან იყო, სურდა გამოეყო საიტის წარმოდგენის კომპონენტები საიტის სტრუქტურიდან, რაც საშუალებას იძლეოდა დოკუმენტის წარმოდგენა სხვადასხვა საჭიროებისთვის აღწერილიყო სხვადასხვა სტილით — ბეჭდვისთვის, საეკრანოდ და რედაქტორისთვის. ვებ-წარმოდგენის შესაძლებლობების გაუმჯობესება ვებ-საზოგადოების დიდი ნაწილის ინტერესთა საგანს წარმოადგენდა და ვებ-საფოსტო დაგზავნის ხერხით შეთავაზებულ იქნა ცხრა განსხვავებული სტილთა ფურცლების ენა. ამ ცხრიდან ორმა მნიშვნელოვანი გავლენა მოახდინა საბოლოო CSS-ზე: HTML-სტილთა კასკადირებადი ფურცლები (Cascading HTML Style Sheets) და ნაკადზე დაფუძნებული სტილთა ფურცლების შეთავაზება (Stream-based Style Sheet Proposal - SSP). საწყისი პროექტების ტესტირებისთვის გამოიყენებოდა ორი ბრაუზერი: ლი მუშაობდა ივ ლაფონთან ერთად CSS-ის დასანერგად დეივ რეგეტის ბრაუზერში Arena. ბერტ ბოსმა საკუთარი SSP პროექტი დანერგა ბრაუზერში Argo. ამის შემდეგ, ლი და ბოსი ერთად მუშაობდნენ CSS-სტანდარტის შემუშავებაზე. სტანდარტის სახელს გამოაკლდა ასობგერა „H“, რადგან CSS-ის გამოყენება HTML-ის გარდა შესაძლებელია მონიშვნის სხვა ენებთანაც. ლის შეთავაზება წარმოდგენილ იქნა 1994 წელს ჩიკაგოს ქალაქ ილინოესში გამართულ კონფერენციაზე „Mosaic and the Web“ (რომელსაც შემდგომ ეწოდა WWW2), შემდეგ კი ხელმეორედ ბერტ ბოსთან ერთად 1995 წელს. ამ დროისთვის უკვე დაფუძნებული იყო W3C რომელიც CSS-ის შემუშავებისადმი დაინტერესებას გამოხატავდა. W3C-მ ამ მიზნით გამართა ვორკშიპი, რომელსაც ხელმძღვანელობდა სტივენ პემბერტონი, რომლის შედეგად, W3C-მ CSS-ზე მუშაობის საკითხი ჩაამატა HTML-ის რედაქციული საბჭოს მუშაობის შედეგებში. ლი და ბოსი ამ კითხით იყვნენ მთავარი ტექნიკური პერსონალი პროექტში, რედაქციის წევრებთან ერთად, რომელთა შორის იყო Microsoft-ის წარმომადგენელი თომას რირდონი. 1996 წლის აგვისტოში კმომპანია Netscape Communication Corporation-მა წარმოადგინა სტილის ალტერნატიული ენა, რომელსაც უწოდეს JavaScript Style Sheets (JSSS). JSSS-ის პროექტი არ იქნა დასრულებული და მოძველდა. 1996 წლის დასასრულს CSS მზად იყო გამხდარიყო ოფიციალური და გამოქვეყნდა რეკომენდაცია CSS დონე 1. HTML-ის, CSS-ის და DOM-ის შემუშავებას ახორციელებდა ერთი ჯგუფი, HTML Editorial Review Board (ERB). ადრეულ 1997 წელს, ERB დაიყო სამ სამუშაო ჯგუფად: HTML-ის სამუშაო ჯგუფი დენ კონოლის ხელმძღვანელობით W3C-დან; DOM-ის სამუშაო ჯგუფი ლორენ ვუდის ხელმძღვანელობით SoftQuad-დან; და CSS-ის სამუშაო ჯგუფი კრის ლილის ხელმძღვანელობით W3C-დან. CSS-ის სამუშაო ჯგუფმა დაიწყო იმ პრობლემების მოგვარებაზე მუშაობა, რომელიც CSS დონე 1-ში არ გადაიჭრა, რის შედეგადაც 1997 წლის 4 ნოემბერს შეიქმნა CSS დონე 2, რომელიც W3C-ის რეკომენდაციის სახით გამოქვეყნდა 1998 წლის მაისში. იმავე 1998 წელს დაიწყო მუშაობა CSS დონე 3-ზე და 2021 წლისათვის კვლავ დამუშავების პროცესშია. 2005 წელს CSS-ის სამუშაო ჯგუფმა გადაწყვიტა, რომ მოთხოვნები სტანდარტებისადმი გაემკაცრებინა. ეს ნიშნავდა, რომ უკვე გამოქვეყნებული სტანდარტები CSS 2.1, CSS 3 Selectors და CSS 3 Text გამოხმობილ იქნა კანდიდატი რეკომენდაციების დონიდან სამუშაო პროეტის დონეზე. სირთულეები მიღებისასCSS 1-ის დაზუსტების სამუშაოები დასრულდა 1996 წელს. ამავე წელს გამოშვებულ იქნა Microsoft-ის ბრაუზერი Internet Explorer, რომელსაც CSS-ის შეზღუდული მხარდაჭერა ჰქონდა. Internet Explorer 4 და Netscape 4.x ვერსიებში ბრაუზერებში CSS-ის მხარდაჭერა გაფართოვდა, თუმცა ეს იყო არასრული მხარდაჭერა, ამასთან მოცული იყო შეცდომებითა და ხელს უშლიდან CSS-ის სრულყოფილ გამოყენებას. თითქმის სრული მხარდაჭერის მქონე პირველი ბრაუზერი გამოვიდა CSS-ის შემუშავებიდან სამი წლის შემდეგ. Internet Explorer 5.0 ვერსიის ბრაუზერი Macintosh-ის სისტემაზე, რომელიც გამოვიდა 2000 წლის მარტში, იყო პირველი, რომელსაც CSS 1-ის სრული მხარდაჭერა გააჩნდა (99%-ზე მეტი); ამით მან ჩამოიტოვა Opera, რომელიც ლიდერი იყო ამ საკითხში მას შემდეგ რაც თხუთმეტი თვით ადრე გამოქვეყნდა პირველად CSS. კვალდაკვალ, მხარდაჭერა გაჩნდა სხვა ბრაუზერებშიც, მრავალმა მათგანმა კი, დამატებით CSS 2 ვერსიის ნაწილებიც დანერგა. ამისდა მიუხედავად, როდესაც მე-5 ვერსიის ბრაუზერებში CSS-ს თითქმის სრული დანერგვა მოხდა, ზოგიერთ საკითხში კვლავ არსებობდა შეცდომები, შეუსაბამობები, შეუთავსებლობები და სხვა ხარვეზები. ასე მაგალითად, Windows სისტემისათვის გამოშვებულ Microsoft Internet Explorer 5.x ვერსიის ბრაუზერს, Macintosh სისტემისათვის გამოშვებული Microsoft Internet Explorer-საგან განსახვავებით, CSS სტანდარტთან შეუსაბამოდ ჰქონდა რეალიზებული CSS-ის ბლოკური მოდელი. ახალი შესაძლებლობების მხარდაჭერის მსგავსი შეუთავსებლობების და განსხვავებულობის გამო, ვებ-რესურსების შემმუშავებლებისათვის რთულად მიღწევადი იყო სტანდარტული ხელსაწყოებით ყველა პლატფორმასა და ბრაუზერში ერთნაირი შედეგის და კორექტული მუშაობის უზრუნველყოფა სხვადასხვა ხრიკის გამოყენების გარეშე, რომელსაც უწოდებდნენ CSS-ჰაკებს და ფილტრებს. IE-ს Windows ვერსიაში ბლოკის მოდელში შეცდომები იმდენად სერიოზული იყო, რომ IE 6 ვერსიაში Microsoft-მა შესწორებულ „სტანდარტულ მოდელთან“ ერთად უკუთავსებადობა დანერგა წინა ვერსიის „შეცდომიან“ IE-ს ვერსიასთან, ამდენად IE-6-ში შესაძლებელი იყო როგორც სტანდარტული CSS ფუნქციონალის გამოყენება, ასევე წინა ვერსიებში არასწორად რეალიზებული ფუნქციონალის გამოყენებაც. მსგავსი „ხრიკების რეჟიმი“ არსებობდა სხვა მწარმოებლების ბრაუზერებშიც. ამის გამო, HTML ფაილების ავტორებისათვის საჭირო გახდა მკაფიოდ მიეთითებინათ რომ სსურდათ სტანდარტული CSS ვერსიის გამოყენება სპეციალური „სტანდარტთან შესაბამისობის“ მარკერის გამოცხადებით, რომელიც ბრაუზერს უთითებდა, რომ ავტორების განზრახვით გვერდი გამართულად ინტერპრეტირდება სტანდარტული CSS-ის შესაბამისად, და არ არის განკუთვნილი მოძველებული IE 5/Windows ვერსიის ბრაუზერთან სამუშაოდ. ამ მარკერის გარეშე, ის ვებრაუზერები, რომელშიც არსებობდა „ხრიკების რეჟიმი“, CSS სტანდარტების მიხედვით ინტერპრეტირების მაგივრად, ვებ-გვერდების ობიეტების ზომებს გაზრდიან, როგორც ეს IE 5-ის Windows ვერსიაში ხდება. CSS-ის არაერთგაროვანი დანერგვის და თავად სტანდარტში შეცდომების გამო, W3C იძულებული გახდა CSS 2 ვერსიის შემდეგ გამოექვეყნებინა CSS 2.1 ვერსია, რომელიც დაახლოვდა თანამედროვე HTML ბრაუზერებში CSS-ის მხარდაჭერის ფორმატთან. CSS 2-ის ზოგიერთი შესაძლებლობა, რომელიც რომელიმე ბრაუზერში ვერ იქნა წარმატებით დანერგილი, ამოღებულ იქნა, ხოლო ზოგიერთ შემთხვევაში, ამ შესაძლებლობათა ქცევა შეიცავალა იმგვარად, რომ სტანდარტი შესაბამისობაში ყოფილიყო არსებულ დომინანტურ რეალიზაციებთან. 2004 წლის 25 თებერვალში CSS 2.1 რეკომენდაციის კანდიდატი გახდა, თუმცა 2005 წლის 13 ივნისს CSS 2.1 დაბრუნებულ იქნა სამუშაო პროექტის სტადიაზე. რეკომენდაციის კანდიდატის სტატუსი CSS 2.1-მა ხელმეორედ მიიღო მხოლოდ 2007 წლის 19 ივლისს. ამ პრობლემების გარდა, ვენდორების თავსართებისტანდარტის განსაზღვრამდე და უნივერსალიზაციამდე, ბრაუზერების მწარმოებლები დრო და დრო ინდივიდუალურად ნერგავდნენ ახალ პარამეტრებს და შესაძლებლობებს. იმისათვის რომ თავიდან აერიდებინათ სამომავლო სტანდარტიზებულ რეალიზაციებთან კონფლიქტი, ბრაუზერების შემმუშავებლები პარამეტრების სახელებში უნიკალურ თავსართს უმატებდნენ. ასე მაგალითად, Mozilla Firefox-ის პარამეტრების სახელში პარამეტრის სახელს ემატებოდა პრეფიქსი ზოგიერთ შემთხვევაში, მწარმოებლის პრეფიქსიანი პარამეტრების სინტაქსი გარკვეულწინად განსხვავდება მათი სტანდარტიზებული ანალოგებისაგან, მაგალითად ასეა სტანდარტის დანერგვასთან ერთად პრეფიქსიანი თვისებები რუდიმენტული ხდება. პროგრამებს შეუძლიათ ავტომატურად დაამატონ პრეფიქსები ძველი ბრაუზერებისთვის და მიუთითონ პარამეტრების სტანდარტიზებული ვერსიები. ვინაიდან პრეფიქსები ბრაუზერების მცირე ჯგუფის შემთხვევაში არსებობს, თვისებიდან პრეფიქსის მოცილების გზით ფუნქციონალის დანახვა და გამოყენება სხვა ბრაუზერებსაც შეუძლიათ. გამონაკლისია ვარიანტებიCSS აქვს განსხვავებული დონეები და პროფილები. თითოეული CSS დონე დაშენებულია წინამორბედ დონეზე, და ძირითადში ამატებს ახალ პარამეტრებს და აღინიშნება როგორც CSS 1, CSS2, CSS3 და CSS4. პროფილი არის ერთი ან რამდენიმე CSS დონის ქვესიმრავლე , რომელიც შექმნილია კონკრეტული მოწყობილობისათვის ან მომხმარებლის ინტერფეისისათვის. ამჟამად არსებობს პროფილები მობილური მოწყობილობებისათვის, პრინტერებისათვის და ტელევიზორებისათვის. პროფილები არ უნდა არეულ იქნას მულტიმედიურ ტიპებთან, რომელიც CSS 2-ში გახდა მხარდაჭერილი. CSS 1CSS-ის სპეციფიკაციების პირველი ვერსია, რომელმაც მიიღო W3C-ის ოფიციალური რეკომენდაციის სტატუსი, არის CSS დონე 1, რომელიც 1996 წლის 17 დეკემბერს გამოქვეყნდა. მის თავდაპირველ შემმუშავებლებად ითვლებიან ჰოკონ ვიუმ ლი და ბერტ ბოსი. სხვადასხვა შესაძლებლობათა შორის, მხარდაჭერილია:
კონსორციუმი W3C აღარ ახორციელებეს CSS 1 ვერსიის რეკომენდაცის მხარდაჭერას. CSS 2CSS 2 დონის სპეციფიკაციები შემუშავდა W3C-ს მიერ და გამოქვეყნდა რეკომენდაციის სტატუსით 1998 წლის მაისში. როგორც CSS 1 ვერსიის ზესიმრავლე, CSS 2 მოიცავს ახალ შესაძლებლობებს, როგორიცაა ელემენტების აბსოლუტური, ფარდობითი და ფიქსირებული პოზიციონირება, z-ინდექსი, მულტიმედია-ტიპების კონცეფცია, ხმოვანი სტილების (რომელიც CSS 3-ში ჩანაცვლდა მეტყველების მოდულებით) და ორმხრივი ტექსტის მხარდაჭერა, დაემატა ფონტის ახალი თვისებები, როგორციაა ჩრდილები. კონსორციუმი W3C აღარ ახორციელებეს CSS 2 ვერსიის რეკომენდაცის მხარდაჭერას. CSS 2.1CSS დონე 2 ვერსია 1, ხშირად მოიხსენიება როგორც „CSS 2.1“, მასში აღმოიფხვრა ხარვეზები, რომლებიც აღმოჩენილ იქნა CSS 2 ვერსიაში, ამოღებულ იქნა ცუდად მხარდაჭერილი ან არასრულად თავსებად შესაძლებლობები, და დაემატა ბრაუზერის გაფართოებების სპეციფიკაცია, რომელიც უკვე რეალიზებული იყო. რათა შეესაბამებოდეს W3C-ის ტექნიკური სპეციფიკაციების სტანდარტიზაციის პროცესს, CSS 2.1 რამდენიმე წლის მანძილზე მრავალჯერ შეიცვალა სტატუსი სამუშაო პროექტიდან რეკომენდაციის კანდიდატობაზე და პირიქით. CSS 2.1 პირველად რეკომენდაციის კანდიდატი გახდა 2004 წლის 25 თებერვალს, მაგრამ შემდგომი გადახედვის მიზნით დაბრუნებულ იქნა სამუშაო პროექტის სტადიაზე 2005 წლის 13 ივნისს. რეკომენდაციის კანდიდატის სტადიაზე განმეორებით CSS 2.1 დაბრუნდა 2007 წლის 19 ივლისს, შემდეგ 2009 წელს ორგზის განახლებულ იქნა. თუმცაღა, ვინაიდან შეტანილი იყო ცვლილებები და დაზუსტებები, კვლავ დაბრუნებლ იქნა სამუშაო პროექტის სტადიაზე 2010 წლის 7 დეკემბერს. CSS 2.1 შეთავაზებული რეკომენდაციის სტადიაზე გადავიდა 2011 წლის 12 აპრილს. საბოლოოდ, W3C სამრჩევლო კომიტეტის მიერ განხილვის შემდეგ CSS 2.1 გამოქვეყნდა W3C რეკომენდაციის სახით 2011 წლის 7 ივნისს. იგეგმებოდა, რომ CSS 2.1 იქნებოდა მე-2 დონის პირველი და უკანასკნელი რევიზია, — თუმცა, 2015 წელს დაიწყო მუშაობა დაბალი პრიორიტეტის მქონე CSS 2.2-ზე. CSS 3CSS 2 ვერსიისაგან განსხვავებით, რომელიც სხვადასხვა შესაძლებლობების აღმწერი ერთი დიდი სპეციფიკაციაა, CSS 3 დაყოფილია რამდენიმე ცალკეულ დოკუმენტად — „მოდულად. თითოეული მოდული ამატებს ახალ შესაძლებლობებს, ან აფართოვებს არსებულს, რომელიც აღწერილია CSS 2-ში, უკუთავსებადობის შენარჩუნებით. მუშაობა CSS 3 დონეზე დაიწყო CSS 2 დონის რეკომენდაციის გამოქვეყნების დროს. CSS 3-ის ყველაზე ადრეული პროექტი გამოქვეყნდა 1999 წლის ივნისში. მოდულურობის გამო, სხვადასხვა მოდულს გააჩნია განსხვავებული სტაბილურობა და სტატუსი. ზოგიერთ მოდულს აქვს რეკომენდაციის კანდიდატის (რკ) სტატუსი და ითვლება შედარებით სტაბილურად. „რკ“ სტადიაზე ვენდორებზე გაიცემა მწარმოებლის თავსართის მოცილების რეკომენდაცია.
CSS 4CSS 4 დაყოფილია მრავალ ცალკეულ მოდულად, რომელთა დონეების ცვლილება ხდება დამოუკიდებლად. ამდენად, CSS 4-ის სპეციფიკაციების ერთიანი ინტეგრირებული კრებული არ არსებობს. მოდულებმა, რომლებიც დაშენებულია CSS 2 დონეზე, დაიწყეს განვითარება მე-3 დონიდან. ზოგიერთმა მათგანმა, უკვე მიაღწია მე-4 დონეს, ან უახლოვდებიან მე-5 დონეს. სხვა მოდულები, რომლებიც წარმოადგენენ სრულიად ახალ ფუნქციონალს, მაგალითად Flexbox, მიჩნეულია 1-ლ დონედ და უახლოვდება მე-2 დონეს. CSS სამუშაო ჯგუფი ხანდახან აქვეყნებს „მდგომარეობის სურათებს“, რომელიც არის ბრაუზერებში მწარმოებლების მიერ დასანერგად საკმარისად სტაბილური მთლიანი მოდულების და სხვა სამუშაო პროექტების კოლექცია. სულ შენიშვნების სახით გამოქვეყნებულია ხუთი მსგავსი „მიმდინარე საუკეთესო პრაქტიკების“ დოკუმენტი, 2007, 2010, 2015, 2017 და 2018 წლებში. ვინაიდან ასე „სურათები“ ძირითადად განკუთვნილია შემმუშავებლებისათვის, იზრდებოდა ავტორებზე მომართული მსგავსი საცნობარო ვერსირებული დოკუმენტის საჭიროება, რომელშიც წარმოდგენილი იქნებოდა თავსებადი რეალიზაციების მდგომარეობა, როგორც ეს არის დოკუმენტირებული ისეთ საიტებზე, როგორიცაა Can I Use... და MDN Web Docs. მსგავსი რესურსის განსახილველად და განსასაზღვრად, 2020 წლის დასაწყისში ჩამოყალიბდა W3C Community Group. განხილვის საგანია ასევე ვერსირების ფაქტობრივი სახეობაც, რაც ნიშნვას, რომ როდესაც დოკუმენტი შეიქმნება, მას შეიძლება არ ეწოდოს „CSS 4“. ბრაუზერში მხარდაჭერათითოეული ვებ-ბრაუზერი ვებ-გვერდის გამოსასახად იყენებს შემდგენელ ძრავს, და CSS-ის ფუნქციონალის მხარდაჭერა მათ შორის არ არის შეთანხმებული. ვინაიდან ბრაუზერები ვერ ამუშავებენ სრულყოფილად CSS-ს, შემუშავდა კოდის წერის მრავალი ტექნიკა, რომელიც შემოვლითი გზებით მომართული იყო კონკრეტული ბრაუზერზე (ეს ტექნიკა ცნობილია როგორც CSS-ჰაკები ან CSS ფილტრები). CSS-ში ახალი ფუნქციონალის მიღება შესაძლებელია შეფერხდეს ძირითად ბრაუზერებში მხარდაჭერის არ არსებობის გამო. მაგალითად Internet Explorer-ში ძალზედ ნელი ტემპით მიმდინარეობდა CSS 3-ის მრავალი ფუნქციონალის მხარდაჭერის დანერგვა, რამაც შეაფერხა ამ ფუნქციონალების სტანდარტიზაცია და ბრაუზერმა შემმუშავებლებს რეპუტაცია დაიზიანა. რათა მომხმარებლებისათვის უზრუნველყოფილს იქნას მდგრადი შედეგი განურჩევლად ბრაუზერისა და პლატფორმისა, შემმუშავბლები ხშირად ატარებენ საკუთარი ვებ-საიტების ტესტირებას მრავალ ოპერაციულ სისტემაში, ბრაუზერში, ბრაუზერის ვერსიაში, რაც ზრდის შემუშავების დროს, ღირებულებას და სირთულეს. ამ პროცესის გასამარტივებლად, არსებობს სხვადასხვა პროგრამული გადაწყვეტა, მაგალითად როგორიცაა Selenium ან LambdaTest. ტესტირების ხელსაწყოების გარდა, არსებობს მრავალი ვებ-საიტი, რომლებიც თვალს ადევნებენ კონკრეტული CSS-ფუნქციონალის მხარდაჭერის არსებობას ბრაუზერებში, მაგალითად Can I Use და MDN Web Docs. ასევე, CSS 3-ში უზრუნველყოფილია შესაძლებლობათა მოთხოვნებო, რომელიც უზრუნველყოფს ვებ-საიტების მიერ ახალი სტანდარტების კოდზე გადასვლის კვალდაკვალ, რომელიც შესაძლებელია არათავსებადი იყოს ძველ ბრაუზერებთან, ასეთმა ბრაუზერებმა შესაძლებალია ვეღარ მიიღონ წვდომა ბევრ ვებ-რესურსზე (ხანდახან განზრახ). ძველ ბრაუზერებში, CSS-ის სუსტი მხარდაჭერის გამო მარავალი პოპულარული ვებ-საიტი არა მხოლოდ იერსახით მახინჯდება, არამედ საერთოდ არ მუშაობს, დიდწილად JavaScript-ის და სხვა ვებ-ტექნოლოგიების განვითარების მიზეზით. შეზღუდვებიCSS-ის მიმდინარე შესაძლებლობების ზოგიერთი შემჩნეული შეზღუდვები მოიცავს:
ადრინდელი პრობლემებიCSS სტანდარტის წინა ვერსიებში არსებობდა სხვა პრობლემებიც, რომლებიც აღმოფხვრილ იქნა შემდგომ ვერსიებში: უპირატესობები
სტანდარტიზაციაფრეიმვორკებიპროექტირების მეთოდოლოგიებისქოლიო
|