- 1. რა არის CSS ?
-
CSS (Cascading Style Sheets) არის ტექნოლოგია რომელიც გამოიყენება HTML
დოკუმენტის გარე იერსახის აღწერისათვის, მისი საშუალებით შეგვიძლია განვსაზღვროთ
ნებისმიერი HTML ელემენტის სიგრძე, სიგანე, ფონის ფერი, მდებარეობა სხვა
ელემენტებთან მიმართებაში და ა.შ.
CSS პირველად 1994 წელს წარმოადგინა ერთ-ერთმა პიონერმა ვებ-ტექნოლოგიებში - ჰაკონ ვიემ ლაიმ (ნორვეგია). W3C-ის (World Wide Web Consortium ანუ მსოფლიო ქსელის კონსორციუმი) მიერ რეკომენდებული პირველი ოფიციალური ვერსიის (CSS 1) პრეზენტაცია კი შედგა 1996 წელს, ამ ვერსიაზე, ჰაკონთან ერთად მუშაობდა ბერტ ბოსი - ჰოლანდიელი სწავლული კომპიუტერულ მეცნიერებათა დარგში.
CSS-თან დაკავშირება
CSS-თან მუშაობა საკმაოდ მოსახერხებელია რადგან ერთი CSS დოკუმენტით შესაძლებელია რამდენიმე HTML დოკუმენტის გაკონტროლება. სტილების განსაზღვრა, როგორც წესი, ხდება ხოლმე ცალკე - '.css' გაფართოების მქონე ფაილში.
როდესაც ბრაუზერის კითხულობს CSS ჩანაწერებს, იგი HTML დოკუმენტს აფორმატებს ამ სტილების შესაბამისად. არსებობს CSS სტილების HTML დოკუმენტთან დაკავშირების სამი ხერხი:- გარე სტილები
- შიდა სტილები
- ხაზსშიდა სტილები, ჩაშენებული სტილები
გარე სტილები
გარე სტილების გამოყენებისას მხოლოდ ერთი CSS ფაილის დარედაქტირებით შეიძლება რამოდენიმე HTML დოკუმენტის ვიზუალის შეცვლა. ყველა ეს დოკუმენტი უნდა შეიცავდეს ზემოთხსენებულ გარე CSS ფაილთან დამაკავშირებელ ბმულს, ბმული თავსდება დოკუმენტის <head> სექციაში<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>შიდა სტილები
შიდა სტილების გამოყენება შესაძლებელია მაშინ როდესაც ყველა გვერდს აქვს თავისი უნიკალური სტილები. მათი აღწერა უნდა მოხდეს <style> ელემენტში, ხოლო თავად <style> ელემენტი უნდა მოთავსდეს <head> სექციაში<head> <style> body { background-color: linen;
} h1 { color: maroon;
margin-left: 40px;
} </style> </head>ხაზსშიდა სტილები
ჩაშენებული სტილები ანუ ხაზსშიდა სტილები შესაძლებელია გამოვიყენოთ მაშინ, როდესაც გვინდა რომ ცალ-ცალკე ელემენტებს მივანიჭოთ სხვადასხვა სტილები, მაგალითად გვაქვს სამი ცალი <h1> ელემენტი და გვინდა რომ სამივეს სვადასხვა ფერი ჰქონდეს<h1 style="color:blue;">სათაური</h1>
<h1 style="color:red;">სათაური</h1>
<h1 style="color:green;">სათაური</h1>CSS სინტაქსი
სტილების აღწერის სინტაქსი ასეთია
ობიექტი ანუ სელექთორი განსაზღვრავს HTML ელემენტს რომლის სტილსაც ვქმნით - ამ შემთხვევაში h1. CSS ბლოკი შედგება ერთი ან რამოდენიმე, ერთმანეთისაგან წერტილ-მძიმით გამოყოფილი ჩანაწერისაგან, თავად ჩანაწერი კი შედგება ერთმანეთისაგან ორწერტილებით გამოყოფილი "თვისება:მნიშვნელობა" წყვილებისაგან. CSS ჩანაწერი უნდა მოექცეს ფიგურულ ფრჩხილებში.CSS სელექთორები
CSS სელექთორები გამოიყენება HTML ელემენტების ამოსარჩევად, ამორჩევა შეიძლება მოხდეს ელემენტის დასახელების, id-ის, class-ის, რომელიმე ატრიბუტის და ა.შ მეშვეობით.
ელემენტის სახელის მიხედვით ამორჩევა ხდება ასეp {
text-align: center;
color: red;
}
id ატრიბუტის მიხედვით ამორჩევა ხდება ასე#para1 {
განსაზღვრუოლი id ატრიბუტის მქონე ელემენტის ამოსარჩევად id-ის მნიშვნელობის წინ იწერება "#" სიმბოლო.
text-align: center;
color: red;
}
class ატრიბუტის მიხედვით ამორჩევა ხდება ასე.para1 {
განსაზღვრუოლი class ატრიბუტის მქონე ელემენტის ამოსარჩევად class-ის მნიშვნელობის წინ იწერება "." სიმბოლო.
text-align: center;
color: red;
}
HTML ელემენტს შეიძლება მივმართოთ რამოდენიმე კლასის საშუალებით<p class="center large">This paragraph refers to two classes.</p>
კლასის დასახელება არ შეიძლება დაიწყოს ციფრით.
შესაძლებელია მოხდეს ისე, რომ სხვადასხვა დასახელების მქონე ელემენტებს გააჩნდეთ ერთნაირი სტილები, ასეთ შემთხვევაში შეიძლება მოვახდინოთ ელემენტების დაჯგუფებაh1, h2, p {
text-align: center;
color: red;
}
კომენტარები CSS-ში შესაძლებელია იყოს როგორც ერთხაზიანი, აგრეთვე მრავალხაზიანიp {
color: red;
/* ერთხაზიანი კომენტარი */
text-align: center;
}
/* მრავალზახიანი
კომენტარი */ - 2. ფერები
-
CSS-ში ფერების განსაზღვრა ხდება შემდეგნაირად :
- ფერთა დასაშვები დასახელებებით მაგალითად "red"
- RGB მნიშვნელობით მაგალითად "rgb(255, 0, 0)"
- HEX ანუ თექვსმეტობითი მნიშვნელობებით მაგალითად "#ff0000"
ფერთა დასახელებები
ფერთა დასახელებების ჩაწერისას ასოთა რეგისტრს მნიშვნელობა არ აქვს ანუ "Red" იგივეა რაც "red" ან "RED". HTML და CSS-ში შესაძლებელია 140-მდე სტანდარტული ფერის გამოყენება დასახელებებით (Red, Green, Blue და ა.შ).RGB (Red, Green, Blue)
RGB ფერთა მნიშვნელობები შესაძლებელია განისაზღროს შემდეგი ფორმულის მიხედვით: rgb(red, green, blue). თითოეული პარამეტრი (წითელი, მწვანე, ლურჯი) ფერის ინტენსივობას 0-დან 255-მდე. ნაცრისფერის მონათესავე ფერები მიიღება მაშინ როდესაც სამივე ფერის პარამეტრები ერთმანეთის ტოლია (მაგ: rgb(128,128,128)).თექვსმეტობითი ფერები
RGB ფერთა მნიშვნელობები შეიძლება გამოისახოს თექვსმეტობით სისტემაშიც შემდეგი სახით #RRGGBB, სადაც RR (red), GG (green) და BB (blue) არის თექვსმეტობითი მნიშვნელობები 00-სა და FF-ს შორის (იგივე რაც ათობით სისტემაში 0-255). მაგალითად #FF0000 იქნება წითელი რადგან წითელზე მითითებულია უდიდესი მნიშვნელობა (FF) დანარჩენ ფერებზე კი მითითებულია 00 ანუ ნოლი. - 3. ფონები
-
CSS ფონის თვისებები გამოიყენება html ელემენტების ფონური ეფექტების განსაზღვრისათვის.
- background-color
- background-image
- background-repeat
- background-attachment
- background-position
background-color
background-color თვისება განსაზღვრავს ელემენტის ფონის ფერს, მაგალითად გვერდის ფონის მითითება მოხდება ასეbody {
background-color: lightblue;
}background-image
background-image თვისება განსაზღვრავს სურათს, რომელიც იქნება ელემენტის ფონი, ნაგულისხმეობის პრინციპით სურათი მანამ განმეორდება სანამ მთლიანი ელემენტი არ დაიფარება.body {
სურათის ფონად მითითებისას სასურველია სურათის url იყოს ადვილად წაკითხვადი მაგალითად paper.gif და არა bgdesert.jpg. როგორც აღვნიშნეთ ფონის სურათი მეორდება მთლიანი ელემენტის სრულ დაფარვამდე, სურათი მეორდება როგორც ჰორიზონტალურად ისე ვერტიკალურად. თუ გვსურს, რომ სურათი განმეორდეს მხოლოდ ჰორიზონტალურად ან მხოლოდ ვერტიკალურად, უნდა გამოვიყენოთ background-repeat თვისება
background-image: url("paper.gif");
}body {
background-image: url("gradient_bg.png");
background-repeat: repeat-x;
}ფონის სურათის პოზიციის მითითება და no-repeat
იმისათვის რათა ფონის სურათი არ განმეორდეს უნდა background-repeat თვისებას უნდა მივუთითოთ no-repeat მნიშვნელობაbody {
ფონის სურათის პოზიციის მისათითებლად კი გამოიყენება background-position თვისება
background-image: url("img_tree.png");
background-repeat: no-repeat;
}body {
background-image: url("img_tree.png");
background-repeat: no-repeat;
background-position: right top;
}ფონის სურათის ფიქსირებული პოზიცია
ფონის სურათისათვის ფიქსირებული პოზიციის მისანიჭებლად გამოიყენება background-attachment თვისება, როდესაც გვერდს ჩავსქროლავთ სურათი ადგილზე დარჩება და არ გადაადგილდება გვერდის დანარჩენ შიგთავსთან ერთადbody {
background-image: url("img_tree.png");
background-repeat: no-repeat;
background-position: right top;
background-attachment: fixed;
} - 4. ჩარჩოები
-
ელემენტის ჩარჩოების სტილის განსაზღვრისათვის გამოიყენება border-style თვისება, მან შეიძლება მიიღოს შემდეგი მნიშვნელობები
- dotted - განსაზღვრავს წერტილოვან ჩარჩოს.
- dashed - განსაზღვრავს წყვეტილ ჩარჩოს.
- solid - განსაზღვრავს მუქ ჩარჩოს.
- double - განსაზღვრავს ორმაგ ჩარჩოს.
- groove - განსაზღვრავს 3D ჩარჩოს
- ridge - განსაზღვრავს 3D ჩარჩოს
- inset - განსაზღვრავს 3D ჩარჩოს
- outset - განსაზღვრავს 3D ჩარჩოს
- none - მიუთითებს რომ ელემენტს ჩარჩო არ უნდა ჰქონდეს.
- hidden - განსაზღვრავს დამალულ ჩარჩოს
ჩარჩოს სიგანე
ჩარჩოს სიგანეს განსაზღვრავს border-width თვისება. ჩარჩოს სიგანე შეიძლება მითითებულ იქნას საზომი ერთეულებით (in px, pt, cm, em) ან წინასწარ განსაზღვრული მნიშვნელობებით: thin, medium, ან thick (თხელი საშუალო ან სქელი). border-width თვისებას შეიძლება ნიეთითოს 1-დან 4-მდე მნიშვნელობა, (ზედა ჩარჩო, მარჯვება ჩარჩო, ქვედა ჩარჩო და მარცხენა ჩარჩო, border-top, border-right, border-bottom, border-left).p {
border-style: solid;
border-width: 2px 10px 4px 20px;
}ჩარჩოს ფერი
ჩარჩოს ფერის მისათითებლად გამნოიყენება border-color თვისება.p {
იმისათვის რათა ელემენტს მივცეთ მომრგვალებული ჩარჩოები გამოიყენება border-radius თვისება.
border: 2px solid red; border-radius: 5px; }p.three {
border-style: solid;
border-color: red green blue yellow;
} - 5. თვისება margin
-
ინგ: margin - „მინდორი“, კიდე, ზღვარი, მიჯნა.
margin თვისება განსაზღვრავს ელემენტის ირგვლივ სივრცეს ანუ დაშორებას მის ირგვლივ არსებულ ელემენტებთან.
ელემენტს მიჯნა შეიძლება მიეთითოს ოთხივე მიმართულებით margin-top, margin-right, margin-bottom და margin-left (ზედა, მარჯვენა, ქვედა და მარცხენა), თითოეულმა მათგანმა მნიშვნელობები შეიძლება მიიღოს შემდეგნაირად :- auto - მიჯნას თვლის ბრაუზერი
- კონკრეტული მნიშვნელობა - მიჯნა განისაზღვრება px, pt, cm და ა.შ
- % - მიჯნა განისაზღვრება ელემენტის სიგანის კონკრეტული %-ით
- inherit ანუ მემკვიდრეობით - მიუთითებს რომ მიჯნა უნდა გადმოეცეს მშობელი ელემენტიდან
p {
ეს ჩანაწერი შემოკლებით შეიძლება ჩაიწეროს ასე
margin-top: 100px;
margin-right: 150px;
margin-bottom: 100px;
margin-left: 80px;
}p {
margin: 100px 150px 100px 80px;
}მნიშვნელობა auto
იმისათვის რათა ელემენტი მოთავსდეს კონტეინერის ჰორიზონტალურ ცენტრში გამოიყენება margin თვისების auto მნიშვნელობა. ამ შემთხვევაში ელემენტი დაიკავებს width მეთოდით განსაზღვრულ სიგანეს, შემდეგ მშობელი კონტეინერის სიგანეს გამოაკლდება აღნიშნული ელემენტის სიგანე, მიღებული სხვაობა გაიყოფა ორზე და ეს შედეგი იქნება ელემენტის მარჯვენა და მარცხენა მიჯნის მნიშვნელობა.div {
width: 300px;
margin: auto;
border: 1px solid red;
}მნიშვნელობა inherit
როგორც აღვნიშნეთ inherit მნიშვნელობა განსაზღვრავს, რომ ელემენტმა მიჯნა უნდა მიიღოს მშობელი ელემენტიდან მემკვიდრეობითdiv.container {
border: 1px solid red;
margin-left: 100px;
}
p.one {
margin-left: inherit;
} - 6. თვისება padding
-
თვისება padding გამოიყენება ელემენტის შიგთავსის ირგვლივ არსებული ცარიელი სივრცის სიდიდის განსასაზღვრავად, ანუ padding განსაზღვრავს
ელემენტის ჩარჩოებიდან, საზღვრებიდან მის შიგთავსამდე მანძილს.
ელემენტს padding თვისება შეიძლება მიეთითოს ოთხივე მიმართულებით padding-top, padding-right, padding-bottom და padding-left (ზედა, მარჯვენა, ქვედა და მარცხენა), თითოეულმა მათგანმა მნიშვნელობები შეიძლება მიიღოს შემდეგნაირად :- კონკრეტული მნიშვნელობა - მიჯნა განისაზღვრება px, pt, cm და ა.შ
- % - მიჯნა განისაზღვრება ელემენტის სიგანის კონკრეტული %-ით
- inherit ანუ მემკვიდრეობით - მიუთითებს რომ მიჯნა უნდა გადმოეცეს მშობელი ელემენტიდან
p {
ეს ჩანაწერი შემოკლებით შეიძლება ჩაიწეროს ასე
padding-top: 50px;
padding-right: 30px;
padding-bottom: 50px;
padding-left: 80px;
}p {
padding: 50px 30px 50px 80px;
} - 7. თვისებები height და width
-
ელემენტის სიმაღლისა და სიგანის მისათითებლად გამოიყენება height და width თვისებები. მათი განსაზღვრა შეიძლება მოხდეს ავტომატურად
(auto, ეს ნიშნავს რომ ბრაუზერი თავად დათვლის ორივე მათგანს) ან მიეთითოს კონკრეტული მნიშვნელობები px, cm ან პროცენტებში (ეს ნიშნავს
რომ ელემენტს ექნება იმ ელემენტის დავუშვათ 60% სიგანე რომელშიც მოთავსებულია იგი).
div {
height და width არ შეიცავენ padding, margin და ჩარჩოებს. როდესაც ეკრანის სიგანე ნაკლებია ელემენტის მითიტებულ სიგანეზე (500px) ბრაუზერი გვერდს ამატებს ჰორიზონტალურ სქროლბარს.
height: 200px;
width: 50%;
background-color: powderblue;
}max-width
ელემენტის მაქსიმალური სიგანის მისათითებლად გამოიყენება max-width თვისება, იგი შეიძლება განისაზღვროს კონკრეტული მნიშვნელობებით px, cm ან პროცენტებში, ან მიეთითოს მნიშვნელობა none (ეს ნიშნავს რომ მაქსიმალური სიგანე არაა მითითებული)div {
max-width: 500px;
height: 100px;
background-color: powderblue;
} - 8. HTML ელემენტის სრული მოდელი CSS-ში
-
ნებისმიერი HTML ელემენტი შეიძლება წარმოვიდგინოთ როგორც მართკუთხედის სახით გადმოცემული მოდელი, ეს მოდელი შეიცავს გარე და შიდა
მიჯნებს, ჩარჩოებს და უშუალოდ შიგთავსს.
- შიგთავსი - ელემენტის, მოდელის შიგთავსი: ტექსტი სურათები და ა.შ
- padding - შიდა მიჯნა ასუფთავებს სივრცეს შიგთავსის ირგვლივ (გამჭვირვალე და უფონოა)
- border - ჩარჩო რომელიც აკრავს შიდა მიჯნასა და შიგთავსს
- margin - გარე მიჯნა ასუფთავებს სივრცეს ელემენტის, მოდელის ირგვლივ (გამჭვირვალე და უფონოა)
div {
როდესაც ელემენტს ვუთითებთ სიგანესა და სიმაღლეს ეს ნიშნავს რომ ჩვენ მივუთითეთ მხოლოდ შიგთავსის სიგანე და სიმაღლე, ელემენტის მთლიანი სიგანე/სიმაღლის დასათვლელად აგრეთვე უნდა დავამატოთ გარე და შიგა მიჯნები და ჩარჩო. წარმოვიდგინოთ, რომ ელემენტის მთლიანი სიგანე უნდა იყოს 350px.
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}div {
ამ css ჩანაწერიდან სიგანე დაითვლება ასე: 320px (სიგანე)+ 20px (მარცხენა + მარჯვენა შიდამიჯნა)+ 10px (მარცხენა + მარჯვენა ჩარჩო)+ 0px (მარცხენა + მარჯვენა გარემიჯნა) = 350px. IE 8 და უფრო ძველ ვერსიებში შიდა მიჯნა და ჩარჩო შედის ელემენტის სიგანეში, ამ პრობლემის მოსაგვარებლად html გვერდს უნდა დავურთოთ < !DOCTYPE html> ჩანაწერი.
width: 320px;
padding: 10px;
border: 5px solid gray;
margin: 0;
} - 9. ტექსტი
-
ტექსტის ფერი
ტექსტის ფერის განსაზღვრისათვის გამოიყენება color თვისება. უშუალოდ ფერების მიღებაზე უკვე ვისაუბრეთ და აქ აღარ მოვიყვანთ მაგალითებს.body {
color: blue;
}
h1 {
color: green;
}ტექსტის განთავსება
ელემენტში ტესქტის ჰორიზონტალურად განთავსების დასარეგულირებლად გამოიყენება text-align თვისება. ტექსტი ელემენტში ჰორიზონტალურად შეიძლება განლაგდეს მარცხნივ, მარჯვნივ შუაში ან თანაბრად ელემენტის მთელ სიგანეზე.h1 {
როდესაც text-align თვისებას მინიჭებული აქვს მნიშვნელობა justify ყველა სტრიქონი ნაწილდება ისე რომ მათ ჰქონდეთ ერთი და იგივე სიგანე. და აბზაცების მარცხენა და მარჯვენა კიდეები ერთ ვერტიკალურ ხაზზე იწყება და ერთ ვერტიკალურ ხაზზე მთავრდება (როგორც ეს მაგალითად გაზეთებშია).
text-align: center;
}ტექსტის დეკორაცია
ტექსტის დეკორაციების მისათითებლად ან წასაშლელად გამოიყენება text-decoration თვისება. მაგალითად ბმულს რომ ქვედა ხაზი წავუშალოთ უნდა მოვიქცეთ ასეa {
text-decoration: none;
}h1 {
/*ხაზი ტექსტის თავზე*/
text-decoration: overline;
}
h2 {
/*გადახაზული ტექსტი*/
text-decoration: line-through;
}
h2 {
/*გახაზული ტექსტი*/
text-decoration: underline;
}ტექსტის გარდაქმნა
ტექსტში ასოთა რეგისტრის მისათითებლად გამოიყენება text-transform თვისება.h1 {
/*დიდი ასოებით ჩაწერა*/
text-transform: uppercase;
}
h2 {
/*პატარა ასოებით ჩაწერა*/
text-transform: lowercase;
}
h2 {
/*სიტყვების პირველი ასოები დიდ რეგისტრში*/
text-transform: capitalize;
}აბზაცი
აბზაცის პირველი ხაზის შესაწევად გამოიყენება text-indent თვისებაp {
text-indent: 50px;
}დაშორება ასოებს შორის
ტექსტში ასოთა დაშორების მისათითებლად გამოიყენება letter-spacing თვისებაp {
letter-spacing: 3px;
}ხაზის სიმაღლე
ტექსტში ხაზებს შორის მანძილის ანუ ხაზთა სიმაღლის მისათიტებლად გამოიყენება line-height თვისებაp {
line-height: 1.8;
}დაშორება სიტყვებს შორის
ტექსტში სიტყვათა დაშორების მისათითებლად გამოიყენება word-spacing თვისებაp {
word-spacing: 10px;
} - 10. ფონტი
-
CSS-ში შრიფტის მახასიათებლებია font family (ანუ შრიფტის ოჯახი, კლასი), სიმუქე, ზომა, ტექსტის სტილი.
შრიფტის კლასი, ოჯახი
ტექსტის ანუ შრიფტის ოჯახს, კლასს განსაზღვრავს font-family თვისება. font-family უნდა შეიცავდეს შრიფტის რამოდენიმე დასახელებას, თუ ბრაუზერი ვერ გაიგებს პირველ მათგანს მაშინ რეზერვში იქნება მეორე და ა.შ. ჩაწერა უნდა დავიწყოთ იმ შრიფტიდან, რომელიც პირველ რიგში გვსურს რომ მივანიჭოთ ტექსტს, font-family თვისების რამოდენიმე სიტყვიანი მნიშვნელობა უნდა მოთავსდეს ბრჭყალებში "Times New Roman".p {
font-family: "Times New Roman", Times, serif;
}შრიფტის სტილი
შრიფტის სტილის განსასაზღვრავად გამოიყენება font-style თვისება. მან შეიძლება მიიღოს შემდეგი სამი მნიშვნელობიდან ერთ-ერთი- normal - ტექსტი გამოისახება ჩვეულებრივად
- italic - ტექსტი გამოჩნდება კურსივის შრფტით
- oblique - დაწვენილი ტექსტი (oblique ძალიან წააგავს italic-ს უბრალოდ ამ უკანასკნელს ბრაუზერების უფრო მეტი მხარდაჭერა აქვს)
p.normal {
font-style: normal;
}
p.italic {
font-style: italic;
}
p.oblique {
font-style: oblique;
}შრიფტის ზომა
შრიფტის ზომას განსაზღვრავს font-size თვისება. შრიფტის ზომის მითითება საკმაოდ მნიშვნელოვანი რამაა თუმცა საჭიროა ამის სწორად გაკეთება, არაკორექტული იქნება თუ აბზაცს მივუთითებთ ისეთ font-size-ს რომ დაემგვანოს სათაურს, ან პირიქით, ასეთ შემთხვევაში font-size თვისების გამოყენება ზედმეტი და არამიზანშეწონილია რადგან html-ში არსებობს მზა ტეგები საამისოდ (h1-h6, p). font-size თვისებამ შეიძლება მიიღოს ორი სახის მნიშვნელობა:
აბსოლიტური ზომა- ტექსტს ანიჭებს განსაზღვრულ ზომას
- მომხმარებელს არ ეძლევა საშუალება შეცვალოს ტექსტის ზომა ყველა ბრაუზერში.
- აბსოლიტური ზომის გამოყენება მოსახერხებელია მაშინ, როდესაც ცნობილია გამოსატანი ტექსტის ფიზიკური ზომა
- ტექსტს ანიჭებს ზომას ირგვლივ არსებული ელემენტების მიხედვით, მათზე დამოკიდებულებით
- მომხმარებელს ეძლევა საშუალება შეცვალოს ტექსტის ზომა ყველა ბრაუზერში.
შრიფტის ზომა Em-ში
Em არის, W3C-ს მიერ რეკომენდებული შრიფტის ზომის საზომი ერთეული. 1em არის ტექსტის მიმდინარე ზომის ტოლი, ბრაუზერებში ეს 16px-ია ასე რომ 16px=1em.h1 {
font-size: 2.5em; /* 40px/16=2.5em */
}
h2 {
font-size: 1.875em; /* 30px/16=1.875em */
}
p {
font-size: 0.875em; /* 14px/16=0.875em */
}შრიფტის სიმუქე
შრიფტის სიმუქის განსასაზღვრავად გამოიყენება font-weight თვისებაp.normal {
font-weight: normal; /* ჩვეულებრივი */
}
p.thick {
font-weight: bold; /* მუქი, სქელი */
} - 11. ბმულები
-
css-ის საშუალებით შესაძლებელია ნებისმიერი html ელემენტის სტილების მართვა
და მათ შორის ბმულებისაც, უფრო მეტიც, შესაძლებელია ბმულს მიენიჭოს სტილები
მისი სტატუსიდან გამომდინარე, სტატუსი კი შეიძლება იყოს
- a:link - ჩვეულებრივი, გაუხსნელი ბმული
- a:visited - ბმული რომელზედაც უკვე გადავიდა მომხმარებელი
- a:hover - მდგომარეობა როდესაც მომხმარებელი მიიტანს მაუსს ბმულთან
- a:active - მდგომარეობა როდესაც მომხმარებელი დააჭერს მაუსს ბმულს
/* გაუხსნელი ბმული */
როგორც წესი html ბმული ქვევით გახაზულია ხოლმე, ქვედახაზის მოსაშორებლად გამოიყენება text-decoration თვისება
a:link {
color: red;
}
/* გახსნილი ბმული */
a:visited {
color: green;
}
/* მაუსმიტანილ მდგომარეობაში */
a:hover {
color: hotpink;
}
/* აქტიური ბმული */
a:active {
color: blue;
}a:link {
ბმულის ფონის ფერის ნანსაზღვრა ხდება background-color თვისებით
text-decoration: none;
}a:link {
background-color: yellow;
}ბმული როგორტც ღილაკი
ქვემოთ მოყვანილი მაგალითის მიხედვით ჩვეულებრივი ბმული გამოჩნდება როგორც ღილაკიa:link, a:visited {
background-color: #f44336;
color: white;
padding: 14px 25px;
text-align: center;
text-decoration: none;
display: inline-block;
}
a:hover, a:active {
background-color: red;
} - 12. ცხრილები
-
ცხრილის ჩარჩოები
ცხრილის ჩარჩოების სტილის განსასაზღვრავად გამოიყენება border თვისება.table, th, td {
ზემოთ მოყვანილ მაგალითში ცხრილს ექნება ორმაგი ჩარჩოები რადგან table, <th> და <td> ელემენტებს ცალ-ცალკე აქვთ მითითებული ჩარჩოები. იმისათვის რათა ეს ასე არ მოხდეს და ცხრილს ერთი ჩარჩო ჰქონდეს გამოიყენება border-collapse თვისება.
border: 1px solid black;
}table {
border-collapse: collapse;
}
table, th, td {
border: 1px solid black;
}ცხრილის სიგანე და სიმაღლე
ცხრილის სიგანე და სიმაღლე განისაზღვრება width და height თვისებებით. ქვემოთ მოყვანილ მაგალითში ცხრილს ექნება 100% სიგანე, <th> ელემენტს კი 50px სიმაღლეtable {
width: 100%;
}
th {
height: 50px;
}ჰორიზონტალური რეგულირება
text-align თვისება განსაზღვრავს თუ ჰორიზონტალურად რომელ მხარეს უნდა განთავსდეს <th> და <td> ელემენტების შიგთავსი (left, right, ან center). ნაგულისხმეობის პრიონციპით <th> ელემენტებისათვის ამ თვისების მნიშვნელობა არის center, ხოლო <td> ელემენტისათვის left.th {
text-align: left;
}ჰორიზონტალური რეგულირება
vertical-align თვისება განსაზღვრავს თუ ვერტიკალურად რომელ მხარეს უნდა განთავსდეს <th> და <td> ელემენტების შიგთავსი (top, bottom, ან middle). ნაგულისხმეობის პრიონციპით <th> და <td> ელემენტებისათვის ამ თვისების მნიშვნელობა არის middle.ცხრილის შიდა მიჯნა
ცხრილის ჩარჩოსა და შიგთავსს შორის მანძილის განსასაზღვრავად <td> და <th> ელემენტებსუნდა მიეთითიოთ შიდა მიჯნა ანუ paddingth, td {
padding: 15px;
text-align: left;
} - 13. თვისება display
-
display თვისება განსაზღვრავს თუ როგორ უნდა გამოჩნდეს ელემენტი (ინგ:
display - ჩვენება, გამოფენა). ნაგულისხმეობის პრინციპით ელემენტთა
უმრავლესობისათვის ამ თვისების მნიშვნელობა არის block ან inline.
ბლოკური ტიპის ელემენტები display:block
ბლოკური ტიპის ელემენტი ყოველთვის იწყება ახალი ხაზიდან და იკავებს მთლიან ხელმისაწვდომ სიგანეს, იჭიმება მარცხნივ და მარჯვნივ რამდენადაც ეს შესაძლებელია. ბლოკური ტიპის ელემენტების მაგალითებია <div>, <h1> - <h6>, <p>, <form>, <header>, <footer>, <section> ..ერთ ხაზში განთავსებული ელემენტები display:inline
ასეთი ტიპის ელემენტი არ იწყება ახალი ხაზიდან და სიგანითაც იკავებს იმდენს რამდენიც საჭიროა. მაგ: <span>, <a>, <img>Display: none;
display: none თვისება როგორც წესი გამოიყენება JavaScript - თან ერთად, ელემენტების წაშლისა და თავიდან შექმნის გარეშე მათ დასამალად, შესაძლებელია ნაგულისმეობის პრინციპით განსაზღვრული display თვისების მნიშვნელობის შეცვლაც, შესაძლებელია რომ ბლოკური ტიპის ელემენტი გადავაქციოთერთ ხაზსშიდა ელემენტად ან პირიქით, ამის ყველაზე ხშირად გამოყენებადი მაგალითია ჰორიზონტალურ მენიუებში <li> ელემენტის ხმარებაli {
შენიშნვა : display თვისების მნიშვნელობის შეცვლა გულისხმობს რომ შეიცვალა მხცოლოდ ის თუ როგორ უნდა გამოჩნდეს ელემენტი, და არა იმას რომ თავად ერლემენტმა შეიცვალა ტიპი.
display: inline;
}
ელემენტის დამალვა display:none თუ visibility:hidden ?
როგორც აღვნიშნეთ ელემენტის გასაქრობად გამოიყენება Display თვისების მნიშვნელობა none. გვერდი ისე აგრძელებს ჩატვვირთვას და მუშაობას თითქოს ეს ელემენტი არც არსებობდა. ელემენტს აქრობს visibility:hidden; თვისება:მნიშვნელობა წყვილიც მაგრამ იმ განსხავავებით რომ ელემენტი უბრალოდ ქრება, მისთვის განკუთვნილი ადგილი კი ისევ ისე რჩება თითქოს ელემენტი არც წაშლილიყოს.h1.hidden {
visibility: hidden;
}
- 14. თვისება position, z-index
-
თვისება position განსაზღვრავს ელემენტის პოზიციონირების ტიპს, მისი შესაძლო მნიშვნელობებია static, relative, fixed და absolute.
მხოლოდ position თვისების მითითების შემდეგაა შესაძლებელი ელემენტის მდებარეობა ვმართოთ top, bottom, left და
right თვისებების საშუალებით.
position: static;
პოზიციონირების თვალსაზრისით, ნაგულისმეობის პრინციპით html ელემენტების position თვისების მნიშვნელობა არის static. (position: static ელემენტებთან top, bottom, left და right მეთოდებს ვერ გამოვიყენებთ).position: relative;
წარმოვიდგინოთ რომ რომელიმე html ელემენტი მაგალითად img მოთავსდა გვერდის რომელიღაც ადგილას, თუ ამ ელემენტს მიენიჭება position: relative და შემდეგ გამოვიყენებთ top, right, bottom და left მეთოდებს მაშინ ელემენტი მდებარეობას შეიცვლის საწყის პოზიციასთან ანუ მდებარეობასთან მიმართებაში ხოლო დოკუმენტის დანარჩენი ელემენტების განლაგება იგივე დარჩება ისინი ადგილს არ შეიცვლიან.position: fixed;
position: fixed; ელემენტები ყოველთვის რჩებიან თვალთახედვის არეში მიუხედავად იმისა მოხდება თუ არა გვერდის ე.წ "ჩამოსქროლვა". ასეთი ელემენტების პოზიციის ზუსტი განსაზღვრისათვის გამოიყენება top, right, bottom და left თვისებები.position: absolute;
განვიხილოთ ასეთი შემთხვევა<style>
ანუ html div ელემენტში მოთავსებული მეორე html div ელემენტი, ეს ყველაფერი მოგვცემს ასეთ სურათს
div.parent {
width: 400px;
height: 200px;
border: 3px solid blue
margin: 100px auto;
}
div.child {
width: 200px;
height: 100px;
border: 3px solid orange;
}
</style>
<div class="parent">
<div class="child"></div>
</div>
ახლა შვილობილ ელემენტს მივცეთ position: absolute; ეს ცვლილება არაფერს შეცვლის საერთო სურათში მაგრამ თუ ახლა შვილობილ ელემენტს top და left თვისებებს მივუთიებთ მივიღებთ ასეთ სურათს<style>
div.parent {
width: 400px;
height: 200px;
border: 3px solid blue
margin: 100px auto;
}
div.child {
width: 200px;
height: 100px;
border: 3px solid orange;
position: absolute;
top: 10px;
left: 10px;
}
</style>
<div class="parent">
<div class="child"></div>
</div>
ანუ position: absolute; შვილობილმა ელემენტმა პოზიციონირება მოახდინა არა მშობელი ელემენტის, არამედ ბრაუზერის ფანჯარასთან მიმართებაში. ყველაფერი შეიცვლება თუ მშობელ ელემენტს მივანიჭებთ position: relative; - ს. ამ შემთხვევაში მივიღებთ ასეთ სურათს<style>
div.parent {
width: 400px;
height: 200px;
border: 3px solid blue
margin: 100px auto;
position: relative; }
div.child {
width: 200px;
height: 100px;
border: 3px solid orange;
position: absolute;
top: 10px;
left: 10px;
}
</style>
<div class="parent">
<div class="child"></div>
</div>
ამ ყველაფრიდან გამომდინარე თუ გვაქვს ელემენტი, რომლისთვისაც position თვისების მნიშვნელობა არის absolute და ამ ელემენტის ყველა წინაპარი ელემენტისათვის position ველის მნიშვნელობა არის static; მაშინ ეს ელემენტი პოზიციას იცვლის ბრაუზერის ფანჯასრასთან მიმართებაში ხოლო წინააღმდეგ შემთხვევაში იმ უახლოეს წინაპარ ელემენთან მიმარტებაში რომლის position თვისებაც არ უდრის static-ს.ელემენტების გადაფარვა
ელემენტების პოზიციონირებისას შეიძლება მოხდეს ისე რომ ერთმა მათგანმა გადაფაროს მეორე, z-index თვისება განსაზღვრავს ელემენტების თანმიმდევრობას z ღერძზე ა რსებულ ელემენტთა დასტაში.
ელემენტს შეიძლება მიენიჭოს დადებითი ან უარყოფითი z-index. ელემენტი მეტი z-index-ით გამოჩნდება უფრო წინ ვიდრე ნაკლები z-index-ის მქონე ელემენტი. - 15. თვისება overflow
-
CSS overflow თვისება განსაზღვრავს ამოჭრას ელემენტის შიგთავსი თუ დააფიქსიროს
ვერტიკალური "სქროლბარი" მაშინ როდესაც ელემენტი მისი სიგრძე-სიგანიდან გამომდინარე,
სრულად ვერ იტევს შიგთავსს.
overflow თვისებამ შეიძლება მიიღოს შემდეგი მნიშვნელობები- visible -მნიშვნელობა ნაგულისმეობის პრინციპით. ელემენტში არჩატეული შიგთავსი არ ამოიჭრება, ის გაცდება ელემენტის ჩარჩოებს.
- hidden - ელემენტში არჩატეული შიგთავსი ამოიჭრება და აღარ გამოჩნდება
- scroll - ელემენტში არჩატეული შიგთავსი ამოიჭრება მაგრამ ელემენტს გაუჩნდება "სქროლბარი" და შესაძლებელი იქნებნა ამ არჩატეული შიგთავსის ნახვა (როგორც ეს ზედა სურათზეა). "სქროლბარი" გამოჩნდება იმ შემთხვევაშიც თუ შიგთავსი ეტევა ელემენტში.
- auto - ელემენტში არჩატეული შიგთავსი ამოიჭრება მაგრამ ელემენტს გაუჩნდება "სქროლბარი" და შესაძლებელი იქნებნა ამ არჩატეული შიგთავსის ნახვა (როგორც ეს ზედა სურათზეა). "სქროლბარი" გამოჩნდება მხოლოდ იმ შემთხვევაში თუ შიგთავსი არ ეტევა ელემენტში.
overflow-x და overflow-y
overflow-x და overflow-y თვისებები განსაზღვრავენ დაემატოს თუ არა "სქროლბარი" ელემენტს მხოლოდ ვერტიკალურად ან ჰორიზონტალურად ან ორივენაირად, იმის და მიხედვით თუ რომელ მათგანს როგორ მივუთითებთ. overflow-x განსაზღვრავს თუ როგორ გამოისახოს ელემენტის მარცხენა და მარჯვენა კიდეები, ხოლო overflow-y განსაზღვრავს თუ როგორ გამოისახოს ელემენტის ზედა და ქვედა კიდეები. - 16. თვისება float, clear
-
float
როგორც ადრე აღვნიშნეთ html ელემენტი შეიძლება იყოს ბლოკური ან ხაზსშიდა, ბლოკური ელემენტი იკავებს დოკუმენტის მთლიან სიგანეს და მის გვერდით ვეღარ ხერხდება სხვა ელემენტის მოთავსება, ამ პრობლემის მოსაგვარებლად შესაძლებელია გამოვიყენოთ float თვისება, მისი მეშვეობით შესაძლებელი ხდება html ელემენტების საჭირო ადგილზე გადატანა, გაცურება (float ინგლისურად ნიშნავს ცურვას, ტივტივს). float თვისების გამოყენების უმარტივესი შემთხვევაა მაგალითად თუ გვსურს რომ ტექსტი განთავსდეს სურათის ირგვლივ, როგორც ცნობილია სურათიც და აბზაციც ბლოკური ტიპის ელემენტებია.img {
float: left;
margin: 0 10px 10px 10px;
}clear
clear თვისება გამოიყენება მცურავი ელემენტების (ანუ ისეთების რომლებსაც მითითებული აქვთ float თვისება) მოძრაობის გასაკონტროლებლად. მცურავი ელემენტის შემდეგ არსებული ელემენტები გარს ერტყმიან თავად ამ ელემენტს. clear თვისება განსაზღვრას თუ ელემენტის რომელ მხარეს არ უნდა განთავსდნენ მცურავი ელემენტები.მცურავი ელემენტები და overflow
როდესაც A ელემენტი უფრო მაღალია თავის მშობელ B ელემენტზე და A ელემენტს განვუსაზღვრავთ float თვისებას, მაშინ იგი გაცდება B ელემენტის საზღვრებს და გვექნება ამდაგვარი სურათი
ეს პრობლემა მოგვარდება თუ მშობელ B ელემენტს განვუსაზღვრავთ overflow: auto; თვისებას..clearfix {
overflow: auto;
}
- 17. inline-block მნიშვნელობა
-
float თვისების საშუალებით დიდი ხნის განმავლობაში შესაძლებელი იყო ბლოკური ელემენტების ისე განლაგება რომ ისინი ბრაუზერის მთლიან
სიგანეზე გადანაწილებულიყვნენ.
<style>
.floating-box {
float: left;
width: 150px;
height: 75px;
margin: 10px;
border: 3px solid #73AD21;
}
.after-box {
clear: left;
border: 3px solid red;
}
</style>
<h2>ძველი გზა - float თვისების გამოყენებით</h2>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="floating-box"> მცურავი ელემენტი </div>
<div class="after-box"> მცურავი ელემენტების შემდეგ არსებული ელემენტი </div>
უნდა აღინიშნოს რომ ამ შემთხვევაში მცურავი ელემენტების შემდეგ არსებულ "after-box" ელემენტს ჭირდება clear თვისების განსაზღვრა. ეს ყველაფერი გაცილებით მარტივი იქნება display თვისების inline-block მნიშვნელობის გამოყენებით.floating-box {
და აღარც clear თვისების განსაზღვრაა საჭირო "after-box" ელემენტებისათვის.
display: inline-block;
width: 150px;
height: 75px;
margin: 10px;
border: 3px solid #73AD21;
} - 18. ელემენტებისა და მათი შიგთავსის განლაგება - Align
-
ელემენტების სწორება ბრაუზერის ჰორიზონტალური ცენტრისაკენ
ბლოკური ეწლემენტის (მაგ: <div>) ჰორიზონტალური სწორებისათვის გამოიყენება margin: auto; თვისება:მნიშვნელობის წყვილი. ელემენტისათვის სიგანის მითითება თავიდან აგვაცილებს ამ ელემენტის გადაჭიმვას კონტეინერის მთლიან სიგანეზე. ასეთ შემთხვევაში ელემენტი დაიჭერს განსაზღვრულ სიგანეს და განთავსდება ბრაუზერის ცენტრში ჰორიზონტალური თვასლაზრისით..center {
უნდა აღინიშნოს რომ width თვისების განსაზღვრის გარეშე margin: auto; მნიშვნელობას ეფექტი არ ექნება.
margin: auto;
width: 50%;
border: 3px solid green;
padding: 10px;
}ელემენტების შიგთავსის სწორება ელემენტის ჰორიზონტალური ცენტრისაკენ
ელემენტის შიგთავსის ცენტრში მოსათავსებლად გამოიყენება text-align: center; თვისება:წყვილი;.center {
text-align: center;
border: 3px solid green;
}სურათების სწორება ჰორიზონტალური ცენტრისაკენ
სურათის ბრაუზერის ცენტრში მოსათავსებლად გამოიყენება margin: auto; თვისება:წყვილი; მაგრამ ამავე დროს საჭიროა dislpay:blok; თვისების მითითებაცimg {
display: block;
margin: auto;
width: 40%;
}სწორება მარცხნივ და მარჯვნივ position თვისების გამოყენებით
ელემენტების სწორების ერთ-ერთი მეთოდი არის position: absolute;.right {
position: absolute; ელემენტები იშლება ნორმალური html ნაკადიდან და ფარავენ სხვა ელემენტებს.
position: absolute;
right: 0px;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}სწორება მარცხნივ და მარჯვნივ float თვისების გამოყენებით
ელემენტების სწორება შესაძლებელია float თვისების გამოყენებითაც..right {
float: right;
width: 300px;
border: 3px solid #73AD21;
padding: 10px;
}ელემენტის შიგთავსის სწორება ვერიკალური ცენტრისაკენ padding თვისების გამოყენებით
ელემენტის შიგთავსის სწორების მრავალნაირი ხერხი არსებობს, ერთ-ერთია ქვედა და ზედა შიდა მიჯნების ანუ padding-bottom და padding-top მეთოდების გამოყენება..center {
იმისათვის რათა მოხდეს შიგთავსის ერთდროულად სწორება ჰორიზონტალური და ვერტიკალური ცენტრებისაკენ padding და text-align მეთოდები უნდა გამოვიყენოთ ერთად.
padding: 70px 0;
border: 3px solid green;
}.center {
padding: 70px 0;
border: 3px solid green;
text-align: center;
}ელემენტის შიგთავსის სწორება ვერიკალური ცენტრისაკენ line-height თვისების გამოყენებით
კიდევ ერთი გზა ელემენტის შიგთავსის ვერიკალური ცენტრისაკენ სწორებისათვის არის ელემენტის line-height და height თვისებებისათვის ერთი და იგივე მნიშვნელობების მინიჭება.center {
line-height: 200px;
height: 200px;
border: 3px solid green;
text-align: center;
} - 19. სელექთორები
-
id-ის მიხედვით ელემენტის ამორჩევა
id-ის მიხედვით ელემენტების ამოსარჩევად სელექთორში კლასის დასახელების წინ უნდა დავსვათ დიეზი - "#" , მაგალითად ამოვარჩიოთ ყველა ელემენტი რომელთა id არის "intro"#intro {
background-color: yellow;
}
კლასის მიხედვით ელემენტის ამორჩევა
კლასის მიხედვით ელემენტების ამოსარჩევად სელექთორში კლასის დასახელების წინ უნდა დავსვათ წერტილი - "." , მაგალითად ამოვარჩიოთ ყველა ელემენტი რომელთა კლასია "intro".intro {
background-color: yellow;
}
ყველა ელემენტის ამორჩევა
ყველა ელემენტის ამოსარჩევი სელექთორია ფიფქი - "*" , ამოვარჩიოთ დოკუმენტის ყველა ელემენტი* {
background-color: yellow;
}
ელემენტის ამორჩევა დასახელების მიხედვით
ელემენტის დასახელების მიხედვით ამოსარჩევად სელექთორში უნდა მივუთითოთ უბრალოდ ამ ელემწენტის დასახელება, მაგალითად ამოვარჩიოთ ყველა p ელემენტიp {
აგრეთვე შესაძლებელია რამოდენიმე დასახელების ელემენთა ამორჩევა, მათი დასახელებების გამოყოფა ხდება მძიმითმაგალითად ამოვარჩიოთ ყველა div და ყველა p ელემენტი
background-color: yellow;
}
div ,p {
background-color: yellow;
}
სელექთორების კომბინაციები
კომბინატორები
კომბინატორები გამოიყენება სელექთორებს შორის ურთიერთკავშირის განსასაზღვრავად. სელექთორი შეიძლება შეიცავდეს ერთ ან რამოდენიმე მარტივ სელექთორს. კომბინატორების ჩასმა ხდება სწორედ ამ მარტივ სელექთორებს შორის. CSS3-ში არის კომბინატორების შემდეგი სახეები- შთამომავლობითი ( ცარიელი ადგილი )
- შვილობილი (>)
- მოსაზღვრე მოძმე (+)
- მოძმე (~)
შთამომავლობითი სელექთორები
შთამომავლობითი სელექთორი არჩევს მითითებული ელემენტის ყველა შამომავალ ელემენტს. მოყვანილი მაგალითი ამოარჩევს ყველა <<p> ელემენტს <div> ელემენტში.div p {
ყურადღება უნდა მიექცეს იმას რომ ბოლო p ელემენტი არის div ელემენტის შთამომავალი და არა უშუალო შვილობილი რადგან იგი span ელემენტძშია მოთავდსსებული.
background-color: yellow;
}
<div>
<p>Paragraph 1 in the div.</p>
<p>Paragraph 2 in the div.</p>
<span><p>Paragraph 3 in the div.</p></span>
</div>შვილობილის სელექთორები
შვილობილის სელექთორი არჩევს მითითებული ელემენტის ყველა უშუალო შვილობილ ელემენტს.div > p {
background-color: yellow;
}მოსაზღვრე მოძმის სელექთორები
მოსაზღვრე მეზობელის სელექთორები არჩევენ მითითებული ელემენტის მოსაზღვრე მოძმე ელემენტებს. მოძმე ელემენტებს უნდა გააჩნდეთ ერთი და იგივე მშობელი ელემენტი , "მოსაზღვრე მეზობელის" უკან კი იგულისმება "პირველივე შემხვედრი" ანუ შემდეგი ელემენტი.div + p {
background-color: yellow;
} - 20. სელექთორები ფსევდოკლასებით
-
ფსევდოკლასი გამოიყენება ელემენტის სპეციალური მდგომარეობის განსასაზღვრავად. ის შეიძლება გამოვიყენოთ მაგალითად მაშინ როდესაც გვინდა
აღვწეროთ ელემენტის სტილები როცა მასთან მაუსს მიიტანენ, აღვწეროთ გახსნილი და გაუხსნელი ბმულების სტილები, აღვწეროთ ელემენტის სტილი
როდესაც ის მიიღებს ფოკუსს და ა.შ. ფსევდოკლასის გამოყენების სინტაქსი ასეთია
selector:pseudo-class {
კონკრეტული მაგალითი კი შემდეგია
property:value;
}a.highlight:hover {
color: #ff0000;
}:first-child ფსევდოკლასი
:first-child ფსევდოკლასი არჩევს ელემენტს რომელიც არის რომელიმე ელემენტის პირველი შვილობილი.p:first-child {
ახლა ამოვარჩიოთ მაგალითად ყველა p ელემენტის პირველი შვილობილი i ელემენტები
color: blue;
}p i:first-child {
color: blue;
}ყველა CSS ფსევდოკლასი
სელექთორი მაგალითი აღწერა :active a:active აქტიური ბმულის არჩევა :checked input:checked ყველა მონიშნული <input> ელემენტის არჩევა :disabled input:disabled ყველა გამორთული <input> ელემენტის არჩევა :empty p:empty ყველა ისეთი <p> ელემენტის არჩევა რომელსაც არ ყავს შვილობილი ელემენტები :enabled input:enabled ყველა ჩართული <input> ელემენტის არჩევა :first-child p:first-child ყველა ისეთი <p> ელემენტის არჩევა რომელიც არის თავისი მშობლის პირველი შვილობილი :first-of-type p:first-of-type ყველა ისეთი <p> ელემენტის არჩევა რომელიც არის პირველი <p> ელემენტი თავის მშობელ ელემენტში :focus input:focus ისეთი <input> ელემენტის ამორჩევა რომელსაც აქვს ფოკუსი :hover a:hover ბმულების ამორჩევა იმ მომენტში როდესაც მაუსს მიიტანენ მათთან :in-range input:in-range არჩევს ისეთ <input> ელემენტებს რომლებსაც მითითებული აქვთ მნიშვნელობის დიაპაზონი :invalid input:invalid არჩევს ისეთ <input> ელემენტებს რომლებშიც ჩაწერილია არასწორი ტიპის ინფორმაცია, მაგალითად არასწორი ელ_ფოსტა :last-child p:last-child ყველა ისეთი <p> ელემენტის ამორჩევა რომელიც არის თავისი მშობლის ბოლო შვილობილი :last-of-type p:last-of-type ყველა ისეთი <p> ელემენტის ამორჩევა რომელიც არის მშობელი ელემენტის ბოლო <p> შვილობილი ელემენტი :link a:link ყველა გაუხსნელი ბმულის ამორჩევა :not(სელექთორი) :not(p) ყველა ელემენტის ამორჩევა გარდა <p> ელემენტებისა :nth-child(n) p:nth-child(2) ყველა ისეთი <p> ელემენტის არჩევა რომელიც არის თავისი მშობლის მეორე შვილობილი :nth-last-child(n) p:nth-last-child(2) ყველა ისეთი <p> ელემენტის არჩევა რომელიც არის თავისი მშობლის მეორე შვილობილი, ათვლა იწყება ბოლო შვილობილიდან :only-of-type p:only-of-type ყველა ისეთი <p> ელემენტი რომელიც არის ერთადერთი <p> შვილობილი ელემენტი თავის მშობლისათვის :only-child p:only-child ყველა ისეთი <p> რომელიც არის თავისი მშობლის ერთადერთი შვილი :optional input:optional ყველა ისეთი <input> ელემენტი რომლებსაც არ აქვთ "required" ატრიბუტი :out-of-range input:out-of-range ყველა ისეთი <input> ელემენტი რომელთა მნიშვნელობაც მითითებულ დიაპაზონს გარეთაა :read-only input:read-only ყველა ისეთი <input> ელემენტის ამორჩევა რომელსაც აქვს ატრიბუტი "readonly" :read-write input:read-write ყველა ისეთი <input> ელემენტის ამორჩევა რომელსაც არ აქვს ატრიბუტი "readonly" :required input:required ყველა ისეთი <input> ელემენტის ამორჩევა რომელსაც მითითებული აქვს ატრიბუტი "required" :root root დოკუმენტის ძირი ელემენტის ამორჩევა :valid input:valid ყველა ისეთი <input> ელემენტის ამორჩევა სადაც სწორი ინფორმაციაა შეტანილი :visited a:visited ყველა გახსნილი ბმულის ამორჩევა CSS ფსევდო ელემენტები
სელექთორი მაგალითი აღწერა ::after p::after შიგთავსის დამატება ყველა <p> ელემენტის შიგთავსის ბოლოში ::before p::before შიგთავსის დამატება ყველა <p> ელემენტის შიგთავსის თავში ::first-letter p::first-letter ყველა <p> ელემენტის პირველი ასო ::first-line p::first-line ყველა <p> ელემენტის პირველი ხაზი ::selection p::selection მომხმარებლის მიერ მონიშნული შიგთავსის ამორტჩევა, მაგალითად როდესაც ტექსტზე მაუსს გადავატარებთ და ტექსტი გალურჯდება - 21. სელექთორები ატრიბუტებით
-
CSS [attribute] სელექთორი
[attribute] სელექთორი გამოიყენება განსაზღვული ატრიბუტის საშუალებით ელემენტის ამოსარჩევად. მოყვანილი მნაგალითი ამოარჩევს ყველა <a> ელემენტს რომლებსაც გააჩნიათ target ატრიბუტიa[target] {
background-color: yellow;
}CSS [attribute="value"] სელექთორი
[attribute="value"] სელექთორი გამოიყენება იმ ელემენტების ამოსარჩევად რომლებსაც აქვთ განსაზღვრული ატრიბუტი და ამ ატრიბუტის მნიშვნელობა . მოყვანილი მაგალითი ამოარჩევს ყველა <a> ელემენტს რომლებსაც გააჩნიათ target ატრიბუტი და ამ ატრიბუტის მნიშვნელობა არის _blanka[target="_blank"] {
background-color: yellow;
}CSS [attribute~="value"] სელექთორი
[attribute~="value"] სელექთორი გამოიყენება იმ ელემენტების ამოსარჩევად რომლებსაც აქვთ განსაზღვრული ატრიბუტი და ეს ატრიბუტი შეიცავს კონკრეტულ სიტყვას, მოყვანილი მაგალითი ამოარჩევს ყველა იმ ელემნენტს რომლებსაც აქვთ title ატრიბუტი და ეს ატრიბუტი შეიცავს სიტყვას - flower[title~="flower"] {
ზემოთ მოყვანილი მაგალითი ამოარჩევს title="flower", title="summer flower", და title="flower new" ელემენტებს მაგრამ არა title="my-flower" ან title="flowers" ელემენტებს, ანუ სელექთორში მითითებული სიტყვა უნდა იყოს ცალკე სიტყვად title ატრიბუტში.
border: 5px solid yellow;
}CSS [attribute|="value"] სელექთორი
[attribute|="value"] სელექთორი გამოიყენება იმ ელემენტების ამოსარჩევად რომლებსაც აქვთ განსაზღვრული ატრიბუტი და ეს ატრიბუტი იწყება განსაზღვრული მნიშვნელობით, ეს მნიშვნელობა უნდა იყოს ცალკე სიტყვა ან ტირით გამოყოფილი, მაგალითად: class="top" ან class="top-text"). მოყვანილი მაგალითი ამოარჩევს ყველა იმ ელემენტს რომელთა კლასიც იწყება სიტყვით top.[class|="top"] {
background: yellow;
}CSS [attribute^="value"] სელექთორი
[attribute^="value"] სელექთორი გამოიყენება იმ ელემენტების ამოსარჩევად რომლებსაც აქვთ განსაზღვრული ატრიბუტი და ეს ატრიბუტი იწყება განსაზღვრული მნიშვნელობით, წინა სელექთორისაგან განსხვავებით ამ შემთხვევაში არ არის აუცილებელი რომ ეს მნიშვნელობა იყოს ცალკე სიტყვა ან ტირით გამოყოფილი. მოყვანილი მაგალითი ამოარჩევს ყველა იმ ელემენტს რომელთა კლასიც იწყება სიტყვით top.[class^="top"] {
background: yellow;
}CSS [attribute$="value"] სელექთორი
[attribute$="value"] სელექთორი გამოიყენება იმ ელემენტების ამოსარჩევად რომლებსაც აქვთ განსაზღვრული ატრიბუტი და ეს ატრიბუტი მთავრდება განსაზღვრული მნიშვნელობით, ეს მაგალითი ამოარჩევს ყველა იმ ელემენტს რომელთა კლასიც მთავრდება სიტყვით test[class$="test"] {
background: yellow;
}CSS [attribute*="value"] სელექთორი
[attribute*="value"] სელექთორი გამოიყენება იმ ელემენტების ამოსარჩევად რომლებსაც აქვთ განსაზღვრული ატრიბუტი და ეს ატრიბუტი შეიცავს განსაზღვრული მნიშვნელობას, არ არის აუცილებელი რომ ეს მნიშვნელობა იყოს ცალკე სიტყვა ან ტირით გამოყოფილი. ეს მაგალითი ამოარჩევს ყველა იმ ელემენტს რომელთა კლასიც შეიცავს მარცვალს te[class*="te"] {
background: yellow;
} - 22. გაუმჭვირვალეობა - Opacity
-
CSS გამჭვირვალება / გაუმჭვირვალეობას
opacity თვისება განსაზღვრავს ელემენტის გამჭვირვალება / გაუმჭვირვალეობას.გამჭვირვალე სურათი
თვისება opacity-მ შეიძლება მიიღოს მნიშვნელობა 0.0 - 1.0 დიაპაზონში. რაც უფრო ნაკლებია მნიშვნელობა მით უფრო გამჭვირვალეა ელემენტიimg {
opacity: 0.5;
filter: alpha(opacity=50); /* IE 8 და უფრო ძველი */
}გამჭვირვალე ბლოკი
როდესაც ელემენტს ვუთითებთ opacity თვისებას, იგივე გამჭვირვალეობა მემკვიდრეობით გადაეცემათ მის შვილობილ ელემენტებსაც, ამან შეიძლება გაართულოს ელემენტის შიგთავსის წაკითხვა
RGBA გამჭვირვალეობა
იმისათვის რათა ელემენტის გამჭვირვალეობის შეცვლასთან ერთად არ შეიცვალოს ელემენტის შიგთავსის გამჭვირვალეობაც, უნდა გამოვიყენოთ RGBA ფერთა მნიშვნელობები. RGBA ფერთა მნიშვნელობა განისაზღვრება შემდეგნაირად rgba(red, green, blue, alpha) alpha პარამეტრი არის რიცხვი 0.0 - 1.0 შუალედში.div {
background: rgba(76, 175, 80, 0.3) /* მწვანე ფონი 30% გაუმჭვირვალეობით */
}
- 23. "Sprite" სურათები
-
"Sprite" სურათი არის ერთ სურათში გაერთიანებული რამოდენიმე სურათი. ბევრი სურათების შემცველი ვებ-გვერდის ჩატვირთვას შეიძლება
დიდი დრო დაჭირდეს. "Sprite" სურათების დახმარებით მცირდება სერვერზე გაგზავნილი მოთხოვნების რაოდენობა აქედან გამომდინარე მცირდება
გვერდის ჩატვირთვის დროც. სამი სხვადასხვა სურათის ნაცვლად გამოვიყენოთ სურათი "img_navsprites.gif:
CSS-ის საშუალებით შეგვიძლია გამოვაჩინოთ ამ სურათის მხოლოდ ის ნაწილი რომელიც გვჭირდება.#home { width: 46px;
შედეგი იქნება:
height: 44px;
background: url(img_navsprites.gif) 0 0;
}
#next {
width: 43px;
height: 44px;
background: url(img_navsprites.gif) -91px 0;
}
<p id="home"></p>
< p id="next"></p>
background: url(img_navsprites.gif) 0 0; - ჩანაწერი განსაზღვრავს ფონის სურათს და მის პოზიციას (მარცხნიდან 0px, ზემოდან 0px) - 24. ფორმები
-
შესაყვანი ველების სტილები
შესაყვანი ველების სიგრძის განსაზაზღვრავად გამოიყენება width მეთოდი. შესაყვანი ველები შეიძლება გაიფილტროს ატრიბუტების დახმარებით- input[type=text] - მხოლოდ ტექსტური ველები
- input[type=password] - პაროლის ველები
- input[type=number] - ნუმერაციული ველები
- ...
ფოკუსირებული შესაყვანი ველების სტილები
ბევრი ბრაუზერი, ნაგულისხმეობის პრინციპით, შესაყვან ველს ირგვლივ არტყამს ცისფერ წირს როდესაც შესაყვანი ველი ღებულობს ფოკუსს
მისი წაშლა შესაძლებელია შემდეგნაირად: outline: none; იმისათვის რათა ფოკუსმიღებული შესაყვანი ველის სტილები განვსაზღვროთ ელემენტის სელექთორს უნდა დავუმატოთ :focus ფსევდოკლასი.შესაყვანი ველები და სურათები
თუ გვსურს რომ შესაყვან ველში მოვათავსოთ რაიმე იკონი ან სურათი, უნდა გამოვიყენოთ background-image თვისება და მივუთითოთ background-position თვისებაც.input[type=text] {
background-color: white;
background-image: url('searchicon.png');
background-position: 10px 10px;
background-repeat: no-repeat;
padding-left: 40px;
} - 25. საზომი ერთეულები
-
CSS-ში საზომი ერთეული შეიძლება იყოს ორგვარი: აბსოლიტური ან დამოკიდებულებითი.
დამოკიდებულებითი ერთეულები
დამოკიდებულებითი ერთეულები ამა თუ იმ თვისების მნიშვნელობას ზომავენ სხვა თვისებიდან გამომდინარე, სხვა თვისების სიდიდეზე დამოკიდებულებითერთეული აღწერა em დამოკიდებულია ელემენტის font-size თვისებაზე (2em ნიშნავს მიმდინარე შრიფტის ზომაზე 2-ჯერ მეტს) ex დამოკიდებულია მიმდინარე შრიფტის x-height თვისებაზე (გამოიყენება იშვიათად) rem დამოკიდებულია ძრილი ელემენტის font-size თვისებაზე vw დამოკიდებულია ხედვის არის სიგანის 1%-ზე vh დამოკიდებულია ხედვის არის სიმაღლის 1%-ზე % აბსოლიტური ერთეულები
აბსოლიტური ერთეულებით გამსაზღვრული ზომები ფიქსირებულია და არ იცვლება ხედვის პირობების შეცვლისას (მაგალითად ხედვის არის ზომების შემცირებისას).ერთეული აღწერა cm სანტიმეტრი mm მილიმეტრი in ინჩი (1in = 96px = 2.54cm) px * პიქსელი (1px = 1/96 in) pt წერტილი (1pt = 1/72 of 1in) pc picas (1pc = 12 pt) - 26. მოქნილი დიზაინი (display: flex)
-
ინგ: flex - მოქნილი დრეკადი.
flexbox-ის გვაძლევს საშუალებას შაბლონი გავხადოთ უფრო მოქნილი float და position თვისებების გამოყენების გარეშე. flexbox-მდე ვიყენებდით შაბლონის პროექტირების შემდეგ მეთოდებს- display: block;
- display: inline-block;
- display: table;
- position: absolute;
- position: relative;
- position: fixed;
<div class="flex-container"> <div>1</div> <div>2</div> <div>3</div> </div>
მშობელი ელემენტი
იმისათვის რათა flex-container გახდეს მოქნილი მას display თვისების მნიშვნელობად უნდა განვუსაზღვროთ flex.flex-container { display: flex; }
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
flex-direction თვისება
flex-direction თვისება განსაზღვრავს რომელი მიმართულებით სურს კონტეინერს განალაგოს 'flex', ანუ მოქნილი ელემენტები. ამ თვისებამ შეიძლება მიიღოს შემდეგი მნიშვნელობები: column, column-reverse, row, row-reverse.flex-direction: column;
flex-direction თვისების column მნიშვნელობა ელემენტებს ალაგებს ვერტიკალურად (ზემოდან ქვემოთ).flex-container { display: flex; flex-direction: column; }
flex-direction: column-reverse;
flex-direction თვისების column-reverse მნიშვნელობა ელემენტებს ალაგებს ვერტიკალურად (ქვემოდან ზემოთ).flex-container { display: flex; flex-direction: column-reverse; }
flex-direction: row;
flex-direction თვისების row მნიშვნელობა ელემენტებს ალაგებს ჰორიზონტალურად (მარცხნიდან მარჯვნივ).flex-container { display: flex; flex-direction: row; }
flex-direction: row-reverse;
flex-direction თვისების row-reverse მნიშვნელობა ელემენტებს ალაგებს ჰორიზონტალურად (მარჯვნიდან მარცხნივ).flex-container { display: flex; flex-direction: row-reverse; }
flex-wrap თვისება
flex-wrap თვისება განსაზღვრავს უნდა გადავიდეს თუ არა ახალ ხაზზე 'flex', ანუ მოქნილი ელემენტები. ამ თვისებამ შეიძლება მიიღოს შემდეგი მნიშვნელობები: wrap, nowrap, wrap-reverse.flex-wrap: wrap;
flex-wrap თვისების wrap მნიშვნელობა ელემენტებს გადაიტანს ახალ ხაზზე საჭიროების შემთხვევაში.flex-container { display: flex; flex-wrap: wrap; }
flex-wrap: nowrap;
flex-wrap თვისების nowrap მნიშვნელობა ელემენტებს დაალაგებს ერთ მწკრივში (ნაგულისხმები მნიშვნელობა).flex-container { display: flex; flex-wrap: nowrap; }
flex-wrap: wrap-reverse;
flex-wrap თვისების wrap-reverse მნიშვნელობა საჭიროების შემთხვევაში ელემენტებს დაალაგებს სხვადასხვა ხაზებზე უკუთანმიმდევრობით.flex-container { display: flex; flex-wrap: wrap-reverse; }
flex-flow თვისება
flex-flow თვისება საშუალებას გვაძლევს ერთდროულად განვსაზღვროთ flex-direction და flex-wrap თვისებები..flex-container { display: flex; flex-flow: row wrap; }
justify-content თვისება
justify-content თვისება განსაზღვრავს თუ როგორ უნდა განლაგდეს 'flex', ანუ მოქნილი ელემენტები. ამ თვისებამ შეიძლება მიიღოს შემდეგი მნიშვნელობები: center, flex-start, flex-end, space-around, space-between.justify-content: center;
justify-content თვისების center მნიშვნელობა ელემენტებს ალაგებს კონტეინერის ცენტრში..flex-container { display: flex; justify-content: center; }
justify-content: flex-start;
justify-content თვისების flex-start მნიშვნელობა ელემენტების განლაგებას იწყებს კონტეინერის დასაწყისიდან, ეს არის ამ თვისების ნაგულისხმები მნიშვნელობა..flex-container { display: flex; justify-content: flex-start; }
justify-content: flex-end;
justify-content თვისების flex-end მნიშვნელობა ელემენტების განლაგებას იწყებს კონტეინერის დასასრულიდან..flex-container { display: flex; justify-content: flex-end; }
justify-content: space-around;
justify-content თვისების space-around მნიშვნელობა ამატებს ცარიელ ადგილებს ხაზების წინ, შუაში და შემდეგ.flex-container { display: flex; justify-content: space-around; }
justify-content: space-between;
justify-content თვისების space-between მნიშვნელობა ამატებს ცარიელ ადგილებს ხაზებს შორის.flex-container { display: flex; justify-content: space-between; }
align-items თვისება
align-items თვისება განსაზღვრავს თუ როგორ უნდა განლაგდეს 'flex', ანუ მოქნილი ელემენტები კონტეინერში ვერტიკალური თვალსაზრისით. ამ თვისებამ შეიძლება მიიღოს შემდეგი მნიშვნელობები: center, flex-start, flex-end, stretch, baseline. იმისათვის რათა უფრო თვალსაჩინო გახდეს ამ თვისების ეფექტი, კონტეინერს მივცეთ 200px სიმაღლე.align-items: center;
align-items თვისების center მნიშვნელობა ელემენტებს ალაგებს კონტეინერის ცენტრში ვერტიკალური თვალსაზრისით..flex-container { display: flex; height: 200px; align-items: center; }
align-items: flex-start;
align-items თვისების flex-start მნიშვნელობა ელემენტებს ალაგებს კონტეინერის დასაწყისში ვერტიკალური თვალსაზრისით..flex-container { display: flex; height: 200px; align-items: flex-start; }
align-items: flex-end;
align-items თვისების flex-end მნიშვნელობა ელემენტებს ალაგებს კონტეინერის დასასრულში ვერტიკალური თვალსაზრისით..flex-container { display: flex; height: 200px; align-items: flex-end; }
align-items: stretch;
align-items თვისების stretch მნიშვნელობა ელემენტებს ჭიმავს, წელავს ( :) ) კონტეინერის მთელ სიმაღლეზე ვერტიკალური თვალსაზრისით (ინგ: stretch - გაჭიმვა)..flex-container { display: flex; height: 200px; align-items: stretch; }
align-items: baseline;
align-items თვისების baseline მნიშვნელობა ელემენტებს კონტეინერში ვერტიკალური თვალსაზრისით ალაგებს ამ ელემენტების ძირითადი ხაზის მიხედვით.flex-container { display: flex; height: 200px; align-items: baseline; }
align-content თვისება
align-content თვისება განსაზღვრავს თუ როგორ უნდა განლაგდეს 'flex', ანუ მოქნილი რიგები (და არა ელემენტები) კონტეინერში ვერტიკალური თვალსაზრისით. ამ თვისებამ შეიძლება მიიღოს შემდეგი მნიშვნელობები: space-between, space-around, stretch, center, flex-start, flex-end.align-content: space-between;
align-content თვისების space-between მნიშვნელობა 'flex', ანუ მოქნილ რიგებს (და არა ელემენტებს) შორის ამატებს ერთი და იგივე ზომის ცარიელ სივრცეებს..flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: space-between; }
align-content: space-around;
align-content თვისების space-around მნიშვნელობა 'flex', ანუ მოქნილ რიგებს (და არა ელემენტებს) წინ, შორის და შემდეგ ამატებს ერთი და იგივე ზომის ცარიელ სივრცეებს..flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: space-around; }
align-content: stretch;
align-content თვისების stretch მნიშვნელობა 'flex', ანუ მოქნილ რიგებს (და არა ელემენტებს) ჭიმავს კონტეინერის მთლიან სიმაღლეზე..flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: stretch; }
align-content: center;
align-content თვისების center მნიშვნელობა 'flex', ანუ მოქნილ რიგებს (და არა ელემენტებს) ალაგებს კონტეინერის შუაში ვერიკალური თვალსაზრისით..flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: center; }
align-content: flex-start;
align-content თვისების flex-start მნიშვნელობა 'flex', ანუ მოქნილ რიგებს (და არა ელემენტებს) ალაგებს კონტეინერის დასაწყისში ვერიკალური თვალსაზრისით..flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: flex-start; }
align-content: flex-end;
align-content თვისების flex-end მნიშვნელობა 'flex', ანუ მოქნილ რიგებს (და არა ელემენტებს) ალაგებს კონტეინერის დასასრულში ვერიკალური თვალსაზრისით..flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: flex-end; }
იდეალური ცენტრირება
.flex-container { display: flex; justify-content: center; align-items: center; height: 300px; background-color: DodgerBlue; } .flex-container>div { background-color: #f1f1f1; color: white; width: 100px; height: 100px; }
შვილობილი ელემენტები
class="flex-container" კონტეინერში მოქცეული უშუალოდ შვილობილი ელემენტები ავტომატურად ხდებიან მოქნილი ანუ flex ელემენტები. ისინი შეიძლება ვმართოთ შემდეგი თვისებებით:- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
order თვისება
ეს თვისება განსაზღვრავს თუ რა თანმიმდევრობით დალაგდება ელემენტები<div class="flex-container"> <div style="order: 3">1</div> <div style="order: 2">2</div> <div style="order: 4">3</div> <div style="order: 1">4</div> </div>
align-self თვისება
ეს თვისება განსაზღვრავს ელემენტის ვერტიკალურ მდებარეობას კონტეინერში, მან შეიძლება მიიღოს შემდეგი მნიშვნელობები: center, flex-start, flex-end<div class="flex-container"> <div>1</div> <div>2</div> <div style="align-self: center">3</div> <div>4</div> </div>