- vừa được xem lúc

Bạn căn giữa 1 thẻ div như thế nào?

0 0 34

Người đăng: Trịnh Quý Công

Theo Viblo Asia

Tổng quan ví dụ

Với những bạn mới học HTML, CSS cơ bản, việc căn giữa 1 thẻ HTML có thể trở nên khó khăn.
Với việc tự học và tham khảo, tôi đúc rút được vài cách căn giữa 1 thẻ HTML dễ nhất, hiệu quả nhất.
Ở đây, ta quy ước căn giữa là căn giữa cả theo chiều ngangchiều dọc nhé.


Ta có một trang HTML đơn giản với cấu trúc sau:

<div class="parent"> <div class="child"></div>
</div>


Và phần CSS ban đầu:

body { margin: 0; padding: 0;
}
.parent { background-color: #3a3845; width: 100vw; height: 100vh; }
.child { background-color: #f7ccac; width: 200px; height: 200px; }
  • Thẻ cha với class parent chiếm toàn bộ trang web
  • Thẻ con với class child (màu hồng) đang nằm ở góc trên bên trái

image.png

Bây giờ, ta sẽ cùng căn giữa thẻ con nhé.

Sử dụng thuộc tính position + transform

Code CSS có thêm một chút style:

.parent { background-color: #3a3845; width: 100vw; height: 100vh; /* additional style */ position: relative;
} .child { background-color: #f7ccac; width: 200px; height: 200px; /* additional style */ position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
}

Thẻ cha ta có thuộc tính position: relative, thẻ con ta có thuộc tính position: absolute cùng với left, right, transform như trên, ta đạt được:

image.png

Sử dụng Flexbox

Code CSS chỉ thay đổi ở thẻ cha:

.parent { background-color: #3a3845; width: 100vw; height: 100vh; /* additional style */ display: flex; justify-content: center; align-items: center;
} .child { background-color: #f7ccac; width: 200px; height: 200px;
}

display: flex biến thẻ cha thành Flex container, justify-content: center căn giữa các thẻ con theo chiều ngang, align-items: center căn giữa các thẻ con theo chiều dọc:

image.png

Flexbox còn nhiều thuộc tính và khái niệm nữa, nhưng trong ví dụ này bạn chỉ còn 3 dòng code là đạt được hiệu quả nha😄

Kết

Tuỳ vào từng tình huống mà ta dùng các cách một cách linh hoạt nhất. Khi không thể sử dụng cách 1 thì ta dùng cách 2 và ngược lại.
Đây chỉ là 2 cách mà tôi cho là hay nhất, còn nhiều cách khác, các bạn hãy Google thêm nhé.
Nếu được thì mình luôn sử dụng Flexbox, vì vừa nhanh, vừa tiện, còn các bạn thì sao?

Bình luận

Bài viết tương tự

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433

- vừa được xem lúc

2021, chúng ta cần tối ưu hóa việc tải hình ảnh trên web như nào?

Rất chào các bạn,. Như các bạn đã biết, trong kỉ nguyên công nghệ, song song với sự sinh ra dày đặc của các trang web mới cũng là sự biến mất của những trang web "lạc hậu" hay hoạt động kém hiệu quả.

0 0 56

- vừa được xem lúc

Xóa phần tử trong Array JavaScript

Xóa phần tử trong Array JavaScript là một bài toán mà hầu hết mọi người đều gặp phải khi lập trình JavaScript. Để giải quyết bài toán này, JavaScript cung cấp rất nhiều giải pháp khác nhau.

0 0 49

- vừa được xem lúc

Bài 28 - Hiểu chính xác về Responsive Web Design và cách chia khoảng màn hình

Chào các bạn, thuật ngữ Responsive Web Design có lẽ không còn xa lạ gì với mọi người nữa. Bất kỳ ai làm về web đều đã từng làm hoặc ít nhất là nghe tới thuật ngữ Responsive Web Design này.

0 0 151

- vừa được xem lúc

Giới thiệu về Mixins trong Vuejs

Xin chào năm mới năm me! Hôm nay mình sẽ tiếp tục chia sẻ cho các bạn những vấn đề liên quan đến Vuejs. Ở bài trước mình đã giới thiệu về tính năng Filter và lần này, mình xin chia sẻ với các bạn về một khái niệm cũng rất quen thuộc.

0 0 394

- vừa được xem lúc

Top JavaScript Snippets bạn nên thử một lần cho biết

Chào các bạn, tiếp tục chuỗi chủ đề về JS hôm nay mình xin chia sẻ tới các bạn một số đoạn snippets hay ho giúp chúng ta tăng hiệu suất công việc, cải thiện chất lượng code. Cùng bắt đầu nhé (go). . 1.

0 0 36