ადაპტიური ფილები უფსკრულიების გარეშე CSS-ში

მოდით გავაკეთოთ ფილების განლაგება, რომელსაც ექნება სხვადასხვა რაოდენობის ბლოკი რიგში, დამოკიდებული ეკრანის სიგანეზე. აი მაგალითი იმისა, რა უნდა მივიღოთ შედეგად:

ჯერ დავწეროთ HTML კოდი:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
  <div class="child">4</div>
  <div class="child">5</div>
  <div class="child">6</div>
  <div class="child">7</div>
  <div class="child">8</div>
  <div class="child">9</div>
  <div class="child">10</div>
  <div class="child">11</div>
  <div class="child">12</div>
</div>

ახლა მოდით დავამატოთ სტილები ბლოკების მშობელს:

css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 95%;
  margin: 50px auto;
}

ახლა დავაყენოთ სტილები თავად ბლოკებს, მათ სიგანეს არ დავაყენოთ:

css.child {
  box-sizing: border-box;
  height: 100px;
  padding: 20px;
  border: 1px solid green;
}

ცხადია, რომ ბლოკების სიგანე უნდა იყოს პროცენტებში, რათა ეკრანის ზომის შეცვლისას ბლოკები ნელ-ნელა შეიცვალონ თავიანთი სიგანე. ამასთან, გარკვეულ ეკრანის სიგანის წერტილებში ჩვენ უნდა შევცვალოთ ბლოკების სიგანე ისე, რომ რიგში მოთავსდეს გარკვეული რაოდენობის ბლოკი.

მოდით დავწეროთ კოდი, რომელიც დასვამს ოთხ ბლოკს რიგში:

css@media (min-width: 1000px) {
  .child {
    width: 25%;
  }
}

ახლა კი დავსვათ სამი ბლოკი რიგში:

css@media (min-width: 700px) and (max-width: 1000px) {
  .child {
    width: 33.3333%;
  }
}

ახლა კი დავსვათ ორი ბლოკი რიგში:

css@media (min-width: 400px) and (max-width: 700px) {
  .child {
    width: 50%;
  }
}

ერთი ბლოკი რიგში:

css@media (max-width: 400px) {
  .child {
    width: 100%;
  }
}

მოდით შევკრიბოთ მთელი კოდი ერთად:

css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 95%;
  margin: 50px auto;
}
.child {
  box-sizing: border-box;
  height: 100px;
  padding: 20px;
  border: 1px solid green;
}

@media (max-width: 400px) {
  .child {
    width: 100%;
  }
}
@media (min-width: 400px) and (max-width: 700px) {
  .child {
    width: 50%;
  }
}
@media (min-width: 700px) and (max-width: 1000px) {
  .child {
    width: 33.3333%;
  }
}
@media (min-width: 1000px) {
  .child {
    width: 25%;
  }
}
Задание 1

გადააკეთეთ ჩემი კოდი ისე, რომ ბლოკების სიგანე გამოითვალოს calc ფუნქციის მეშვეობით.

Задание 2

გააკეთეთ ფილების განლაგება, რომელიც ეკრანის შევიწროვებისას თავდაპირველად იქნება ოთხი ელემენტი რიგში, შემდეგ ორი ელემენტი რიგში, და შემდეგ ერთი ელემენტი რიგში.

Задание 3

გააკეთეთ ფილების განლაგება, რომელიც ეკრანის შევიწროვებისას თავდაპირველად იქნება ექვსი ელემენტი რიგში, შემდეგ სამი ელემენტი რიგში, და შემდეგ ერთი ელემენტი რიგში.