Junior
CSS-ში ელემენტების პოზიციონირების სხვადასხვა მეთოდებს შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
static- ნაგულისხმევი პოზიცია. ელემენტი პოზიციონირებს დოკუმენტის სტანდარტული ნაკადის შესაბამისად. თვისებებიtop,right,bottom,leftარ ახდენს გავლენას.relative- ელემენტი პოზიციონირებს მისი ნორმალური პოზიციის მიხედვით. თვისებებიtop,right,bottom,leftგადაადგილებს მას მისი საწყისი პოზიციიდან, მაგრამ მისი დაკავებული ადგილი ნაკადში რჩება.absolute- ელემენტი სრულად იხსნება ნორმალური ნაკადისგან. მისი პოზიცია განისაზღვრება თვისებებითtop,right,bottom,leftყველაზე ახლო პოზიციონირებულ მშობელთან მიმართებით (რომელსაც აქვსposition: relative,absolute,fixedანsticky). თუ ასეთი მშობელი არ არსებობს, პოზიცია განისაზღვრება<html>-ის საწყის ბლოკთან მიმართებით.fixed- ელემენტი სრულად იხსნება ნორმალური ნაკადისგან. მისი პოზიცია განისაზღვრება თვისებებითtop,right,bottom,leftეკრანის (viewport) მიმართ. ელემენტი რჩება ადგილზე გვერდის სლაივის დროს.sticky- ელემენტი პოზიციონირებს როგორცrelative, სანამ სლაივის დროს არ მიაღწევს მითითებულ პოზიციას (top,right,bottom,left), ამის შემდეგ მისი პოზიცია ხდებაfixed.
განსხვავებების სია:
| თვისება | static |
relative |
absolute |
fixed |
sticky |
|---|---|---|---|---|---|
| დოკუმენტის ნაკადი | ჩვეულებრივი | ინარჩუნებს | იხსნება | იხსნება | თავდაპირველად ჩვეულებრივი, შემდეგ იხსნება |
გადატანა (top და სხვა) |
არა | საკუთარი თავისთან მიმართებით | მშობელთან/ვიუპორტთან მიმართებით | ვიუპორტთან მიმართებით | საკუთარი თავისთან, შემდეგ ვიუპორტთან მიმართებით |
| სლაივის დროს | სლაივდება | სლაივდება | რჩება ადგილზე (თუ მშობელი fixed) ან სლაივდება მშობელთან ერთად |
რჩება ადგილზე | თავდაპირველად სლაივდება, შემდეგ რჩება ადგილზე |
მაგალითი:
.static-box {
position: static; /* ნაგულისხმევი პოზიცია */
width: 100px;
height: 100px;
background-color: lightblue;
}
.relative-box {
position: relative;
top: 20px; /* ზევით გადატანა */
left: 20px; /* მარჯვნივ გადატანა */
width: 100px;
height: 100px;
background-color: lightgreen;
}
.absolute-container {
position: relative; /* მშობელი */
width: 300px;
height: 300px;
border: 1px solid black;
}
.absolute-box {
position: absolute;
top: 50px; /* კონტეინერის მიმართ */
left: 50px; /* კონტეინერის მიმართ */
width: 50px;
height: 50px;
background-color: lightcoral;
}
.fixed-box {
position: fixed;
bottom: 10px; /* ვიუპორტის მიმართ */
right: 10px; /* ვიუპორტის მიმართ */
width: 70px;
height: 70px;
background-color: lightsalmon;
}
.sticky-header {
position: sticky;
top: 0; /* მიმაგრებულია ვიუპორტის ზედა ნაწილთან */
height: 50px;
background-color: lightgoldenrodyellow;
z-index: 10; /* სხვა ელემენტების გადაფარვა */
}