Cập nhật ·  

Inline và Block trong CSS

Giải thích sự khác biệt giữa inline, block, inline-block trong CSS, cách chúng hoạt động và so sánh với các thuộc tính opacity, visibility, display để dễ ứng dụng trong thực tế.
Minh Lâm

Minh Lâm

@minhlam1996vn

Trong HTML và CSS, mỗi phần tử đều có cách hiển thị mặc định thông qua thuộc tính display.
Việc hiểu rõ sự khác nhau giữa inline, block, và inline-block sẽ giúp bạn:

  • Kiểm soát bố cục trang web tốt hơn.
  • Biết khi nào nên dùng inline, block hay inline-block.
  • Tránh lỗi hiển thị khi kết hợp nhiều phần tử khác nhau.

Ngoài ra, các thuộc tính như display, opacity, visibility cũng ảnh hưởng trực tiếp đến việc phần tử xuất hiện (hay biến mất) trên trang web.

InlineBlock

Thẻ Block

  • Luôn bắt đầu trên một hàng mới.
  • Chiếm toàn bộ chiều ngang có thể (kéo dài hết dòng).
  • Trình duyệt có thể thêm khoảng cách mặc định (margin) trên dưới.
.
<h1>Heading 1</h1>
<p>Đây là một đoạn văn bản.</p>
<div>Thẻ div mặc định là block</div>

Thẻ Inline

  • Không xuống hàng mới, nằm chung hàng với phần tử khác.
  • Kích thước phụ thuộc nội dung.
  • Không áp dụng được các thuộc tính về chiều cao (height, padding-top, margin-bottom,...).
.
<p>
  Màu sắc:
  <span style="color:red">Đỏ</span>, <span style="color:green">Xanh lá</span>,
  <span style="color:blue">Xanh dương</span>
</p>

Inline-block

inline-block kết hợp ưu điểm của cả inlineblock:

  • Vẫn nằm trên cùng một dòng như inline.
  • Hỗ trợ đầy đủ các thuộc tính kích thước (width, height, padding, margin).

Ví dụ so sánh:

.
<style>
  span.inline {
    display: inline;
    background: lightblue;
    height: 50px; /* không có tác dụng */
  }
  span.inline-block {
    display: inline-block;
    background: orange;
    height: 50px; /* có tác dụng */
    width: 80px;
  }
</style>

<p>
  <span class="inline">Inline</span>
  <span class="inline-block">Inline-block</span>
</p>

Kết quả: thẻ inline không thay đổi chiều cao, còn inline-block hiển thị đúng 50px.

Ứng dụng inline-block: Tạo button

Một ví dụ điển hình là tạo nút bấm (button) bằng thẻ <a>:

.
<style>
  a.btn {
    display: inline-block;
    background: green;
    color: white;
    text-decoration: none;
    padding: 8px 16px;
    border-radius: 8px;
    min-width: 80px;
    text-align: center;
  }
</style>

<a href="#!" class="btn">Xem chi tiết</a>
<a href="#!" class="btn">Mua ngay</a>

Các nút vừa nằm cùng dòng, vừa có thể chỉnh kích thước và padding.

Thuộc tính display

Thuộc tính display xác định cách phần tử hiển thị. Các giá trị phổ biến:

  • block: xuống hàng, chiếm full chiều rộng.
  • inline: nằm cùng dòng, không chỉnh được kích thước.
  • inline-block: nằm cùng dòng, nhưng chỉnh kích thước được.
  • none: ẩn hẳn khỏi giao diện và không chiếm chỗ.
.
<style>
  h1 {
    display: block;
  }
  h2 {
    display: inline;
  }
  h3 {
    display: inline-block;
  }
  h4 {
    display: none;
  }
</style>

<h1>Block</h1>
<h2>Inline</h2>
<h3>Inline-block</h3>
<h4>Ẩn</h4>

Thuộc tính opacity

  • Điều chỉnh độ trong suốt của phần tử.
  • Giá trị từ 0 (hoàn toàn trong suốt) đến 1 (hiển thị rõ).
  • Ảnh hưởng cả nền, viền và nội dung bên trong.
.
<style>
  .box {
    width: 100px;
    height: 100px;
    background: orange;
    display: inline-block;
    margin: 8px;
  }
  .half {
    opacity: 0.5;
  }
  .invisible {
    opacity: 0;
  }
</style>

<div class="box">1</div>
<div class="box half">2</div>
<div class="box invisible">3</div>

Thuộc tính visibility

  • visibility: visible (mặc định): phần tử hiển thị bình thường.
  • visibility: hidden: phần tử bị ẩn nhưng vẫn chiếm không gian trên trang.
.
<style>
  p.hidden {
    visibility: hidden;
  }
</style>

<p>Đoạn 1</p>
<p class="hidden">Đoạn 2 (ẩn nhưng vẫn chiếm chỗ)</p>
<p>Đoạn 3</p>

So sánh display, opacity và visibility

  • display: none: Ẩn khỏi giao diện
  • opacity: 0: Ẩn khỏi giao diện, Chiếm không gian, Hỗ trợ animation, Tương tác được
  • visibility: hidden: Ẩn khỏi giao diện, Chiếm không gian, Hỗ trợ animation

Kết luận

  • Block: xuống hàng, full chiều rộng.
  • Inline: nằm cùng dòng, chỉ chiếm vừa nội dung.
  • Inline-block: kết hợp cả 2, vừa nằm cùng dòng, vừa chỉnh kích thước được.
  • display, opacity, visibility: ảnh hưởng trực tiếp đến cách phần tử hiển thị hoặc ẩn.

Có thể tra cứu một thẻ HTML thuộc loại thẻ Inline hay Block tại HTML Reference.

Nắm rõ sự khác biệt này giúp bạn làm chủ bố cục CSS, tránh lỗi hiển thị và tối ưu trải nghiệm người dùng.