Welcome 🎉

logo

ReactLMS

Search
Light Mode
Contact Us

7 min to read

Contact us

No results for your search.
Sorry, an unexpected error occurred

Giới thiệu


Khi làm việc với Web, rất nhiều các bạn học viên đặt câu hỏi là:s

Làm sào để kiểm soát một khối giao diện trên màn hình?

Vậy trong bài học hôm nay, chúng ta hãy cũng nhau làm rõ câu hỏi trên nhé.


Khối nội dung


Trước khi ta kiểm soát một nội dung bất kỳ, việc đâu tiên ta phải đóng gói tất cả nội dung vào một khối bằng cách sử dụng div. Tham khảo ví dụ sau:

HTML

<section class="item">
    <span>Nội dung</span>
    <p>Nội dung 2</p>
</section>






CSS

.item{
  background-color: lightseagreen;
  padding: 10px;
  height: 150px;
}






Kết quả

Nội dung

Nội dung 2

Trong ví dụ trên, ta có thể dễ dàng nhận ra, các tag nội dung đang được tổ chức rời rạc, việc đưa chúng ra giữa giao diện rất khó khăn.

Vậy nên việc đầu tiên, ta sẽ đóng gói chúng lại trong tag div trước để dễ dàng quản lý chúng hơn. Hãy theo dõi tiếp tục ví dụ sau:

HTML

<section class="item">
    <div class="box">       <!--new-->
      <span>Nội dung</span>
      <p>Nội dung 2</p>
    </div>                  <!--new-->
</section>






CSS

.item{
  background-color: lightseagreen;
  padding: 10px;
  height:150px;
}

.box{
  background: coral; /*new*/
}






Kết quả

Nội dung

Nội dung 2

Qua ví dụ trên, giờ đây thay vì ta phải quản lý vị trí của cả tag span lẫn tag p, chúng ta chỉ cần kiểm soát vị trí của tag divclassbox.


Đường cơ sở của flex


Khi ta khởi tạo flex cho tag cha, flex sẽ hiển thị các tag con theo các hướng và chiều rất đa dạng, mặc định sẽ là hướng nằm ngang, chiều từ trái sang phải.

Dựa vào đó, khi ta gán flex cho tag cha, ta sẽ có được đường cơ sở có hướng nằm ngang và ta có thể điều khiển vị trí của tag con theo 2 thuộc tính CSS sau :

Ngoài ra ta có thể thay đổi hướng đường cơ sở của flex bằng thuộc tính CSS là :

Việc thay đổi hướng của đường cơ sở sẽ dẫn tới các hệ quả riêng cho tag con, ví dụ như:


Di chuyển box theo chiều ngang


Dựa vào kiến thức trên khi ta ôn tập về flex, ta sẽ thử di chuyển tag divclassbox theo chiều ngang thông qua các bước sau:

  1. Gán flex cho tag cha, để dùng tag cha điều khiển tag con
  2. Sử dụng justify-content vào tag cha để điều khiển tag con theo chiều ngang

Hãy xem ví dụ sau đây:

HTML

<section class="item2">
  <div class="box">
    <span>Nội dung</span>
    <p>Nội dung 2</p>
  </div>
</section>






Bước 1: Gán flex cho tag cha

CSS

.item{
  background-color: lightseagreen;
  padding: 10px;
  height:150px;
  display: flex; /*new*/
}

.item .box{
  background: coral;
}






Kết quả

Nội dung

Nội dung 2

Thông qua bước 1, sau khi tag cha được thiết lập flex, chiều ngang tag con đã bị giới hạn lại và chiều cao bằng với tag cha

Bước 2: Sử dụng justify-content để điều khiển tag con theo hướng đường cơ sở nằm ngang.

CSS

.item{
  background-color: lightseagreen;
  padding: 10px;
  height:150px;
  display: flex;
  justify-content : center; /*new*/
}

.item .box{
  background: coral;
}






Kết quả

Nội dung

Nội dung 2

Qua bước 2, bằng việc thiết lập justify-content có giá trị là center, ta đã thành công mang tag con ra giữa theo chiều ngang.


📘
Ngoài việc sử dụng giá trị center, ta cũng có thể dùng : flext-startflex-end để di chuyển tag con nằm đầu hay nằm cuối của đường cơ sở.


Di chuyển box theo chiều dọc


Cùng với ví dụ trên, nếu ta cần di chuyển box theo chiều dọc, ta đơn giản chỉ cần sử dụng thuộc tính CSS align-items với 3 giá trị thiết lập flext-start, centerflex-end tương tự như justify-content.

Tham khảo ví dụ sau :

CSS

.item{
  background-color: lightseagreen;
  padding: 10px;
  height:150px;
  display: flex;
  justify-content : center;
  align-items: center; /*new*/
}

.item .box{
  background: coral;
}






Kết quả

Nội dung

Nội dung 2

Qua ví dụ trên, với việc thiết lập aligh-itemscenter, ta đã thành công di duyển box ra giữa màn hình theo chiều dọc. Ngoài ra, việc thiết lập align-items đã huỷ bỏ trạng thái chiều cao đặc biệt của box (chiều cao phải bằng tag cha) khi bị ảnh hưởng bởi flex, thay vì đó, chiều cao của box sẽ chỉ phủ nội dung của chính nó.


Kết luận


Đây là cấu trúc di chuyển box rất đơn giản nhưng được áp dụng rất nhiều trong thực tế, với việc thành thục và hình thành mindset tốt, các bạn đã có thể giải quyết rất nhiều UI trong thực tế. Hãy học và đừng bỏ lỡ nội dung này nhé.


⚠️
Một lỗi dễ mắc phải nhất là không đóng gói bộ nhiều nội dung trước khi sử dụng flex. Các bạn hãy ghi nhớ và đừng mắc phải nhé.



Read More
On This Page