Lời mở đầu

Trong thiết kế web, mỗi thuộc tính CSS đều có một vai trò quan trọng trong việc định hình cách hiển thị nội dung. Nếu không sử dụng đúng các thuộc tính, giao diện website có thể bị lỗi, mất cân đối hoặc khó đọc trên nhiều thiết bị khác nhau. Một trong những thuộc tính quan trọng nhất trong CSS là inline-block. Đây là một giải pháp giúp kết hợp những ưu điểm của hai kiểu hiển thị phổ biến: inlineblock.

Bạn có bao giờ gặp phải tình huống muốn căn chỉnh một nhóm phần tử trên cùng một dòng nhưng vẫn cần kiểm soát kích thước của chúng? inline-block chính là câu trả lời! Không giống như block, phần tử không chiếm toàn bộ chiều rộng của cha, nhưng cũng không giống inline, vì nó vẫn có thể thay đổi kích thước linh hoạt. Trong bài viết này, chúng ta sẽ khám phá sâu hơn về inline-block, cách hoạt động của nó, ứng dụng trong thiết kế web, và cách giải quyết một số vấn đề thường gặp.

Inline Block là gì?

Inline Block là gì?

1.1. Định nghĩa chi tiết về inline-block

Trong CSS, thuộc tính display quyết định cách một phần tử hiển thị trên trang web. Có ba giá trị quan trọng của thuộc tính này là:

  • inline: Phần tử nằm trên cùng một dòng với các phần tử khác, nhưng không thể thiết lập chiều rộng (width) hoặc chiều cao (height).

  • block: Phần tử chiếm toàn bộ chiều rộng của cha, tự động xuống dòng và có thể đặt kích thước tùy chỉnh.

  • inline-block: Kết hợp hai đặc điểm trên: hiển thị trên cùng một dòng nhưng vẫn có thể đặt chiều rộng và chiều cao.

Cụ thể, inline-block giúp phần tử giữ nguyên vị trí trong dòng như inline, nhưng có thể thay đổi kích thước, giống như block. Điều này giúp bạn tạo ra các bố cục linh hoạt mà không cần dùng float hay flexbox.

Ví dụ về cách sử dụng inline-block:

css

CopyEdit

.button { display: inline-block; width: 120px; height: 40px; background-color: #3498db; color: white; text-align: center; line-height: 40px; border-radius: 5px; }

Trong đoạn mã trên, nếu sử dụng inline, phần tử sẽ không thể thay đổi kích thước, và nếu dùng block, nó sẽ chiếm toàn bộ chiều rộng. inline-block giúp giữ nút trên cùng một dòng với các nút khác nhưng vẫn có thể điều chỉnh kích thước.

1.2. So sánh chi tiết với inline và block

Thuộc tính

Hiển thị cùng dòng

Có thể đặt width/height

Xuống dòng tự động

Ứng dụng phổ biến

inline

Văn bản, liên kết

block

Khối nội dung lớn

inline-block

Nút bấm, menu, bố cục linh hoạt

Ví dụ cụ thể để minh họa sự khác biệt giữa ba giá trị này:

html

CopyEdit

<div style="display: inline;">Inline</div> <div style="display: block;">Block</div> <div style="display: inline-block;">Inline-Block</div>

  • Inline: Các phần tử nằm cùng dòng nhưng không thể đặt kích thước cụ thể.

  • Block: Mỗi phần tử chiếm toàn bộ dòng, tự động xuống hàng.

  • Inline-Block: Các phần tử nằm cùng dòng nhưng vẫn có thể đặt chiều rộng và chiều cao.

Nhờ vào sự linh hoạt này, inline-block rất hữu ích trong thiết kế UI/UX của trang web.

Ứng dụng của inline-block trong thiết kế web

Ứng dụng của inline-block trong thiết kế web

2.1. Tạo bố cục linh hoạt với inline-block

Một trong những ứng dụng phổ biến nhất của inline-block là giúp sắp xếp các phần tử trên cùng một dòng mà vẫn có thể kiểm soát kích thước.

Ví dụ, khi thiết kế thanh điều hướng (navbar), bạn cần đặt nhiều mục trên cùng một hàng nhưng vẫn muốn điều chỉnh kích thước của từng mục:

css

CopyEdit

.navbar-item { display: inline-block; padding: 10px 20px; background-color: #2ecc71; color: white; }

Mỗi mục menu sẽ có kích thước phù hợp và không bị kéo giãn toàn bộ chiều rộng như block.

2.2. Căn chỉnh nội dung mà không cần float hoặc flexbox

Một lợi ích khác của inline-block là giúp căn chỉnh phần tử dễ dàng mà không cần dùng đến float, vốn có thể gây ra lỗi với clearfix.

Ví dụ, để hiển thị một danh sách các sản phẩm theo hàng ngang, bạn có thể dùng:

css

CopyEdit

.product { display: inline-block; width: 200px; height: 300px; margin: 10px; background-color: #f1c40f; }

Cách này giúp sắp xếp sản phẩm gọn gàng mà không cần float: left; hoặc flexbox.

2.3. Ứng dụng trong bố cục phức tạp

inline-block cũng rất hữu ích trong việc xây dựng bố cục lưới (grid layout) khi bạn chưa muốn sử dụng grid hoặc flexbox.

Ví dụ, khi tạo danh sách bài viết trên blog:

css

CopyEdit

.article { display: inline-block; width: 45%; margin: 2%; background-color: #ecf0f1; }

Nhờ inline-block, bạn có thể dễ dàng điều chỉnh kích thước bài viết sao cho phù hợp với thiết kế.

Lưu ý và cách khắc phục lỗi thường gặp khi dùng inline-block

Lưu ý và cách khắc phục lỗi thường gặp khi dùng inline-block

3.1. Khoảng trắng giữa các phần tử inline-block

Một lỗi phổ biến khi sử dụng inline-block là có khoảng trắng không mong muốn giữa các phần tử. Nguyên nhân do trình duyệt hiểu các phần tử inline-block như một đoạn văn bản, tạo ra khoảng trống giữa chúng. Cách khắc phục:

  • Cách 1: Dùng font-size: 0; trên thẻ cha để loại bỏ khoảng trắng.

css

CopyEdit

.container { font-size: 0; } .box { display: inline-block; width: 100px; height: 100px; background-color: #2ecc71; }

  • Cách 2: Xóa khoảng trắng trong mã HTML giữa các phần tử.

3.2. Không tương thích hoàn toàn với mọi trình duyệt

Mặc dù inline-block hoạt động tốt trên hầu hết các trình duyệt hiện đại, nhưng một số trình duyệt cũ (ví dụ: Internet Explorer 7) có thể không hỗ trợ tốt. Để khắc phục, bạn có thể sử dụng display: inline; kết hợp với zoom: 1; cho trình duyệt cũ.

css

CopyEdit

.old-browser-support { display: inline-block; zoom: 1; *display: inline; }

3.3. Khi nào KHÔNG nên dùng inline-block?

  • Khi bạn cần một hệ thống layout phức tạp, flexbox hoặc grid sẽ phù hợp hơn.

  • Khi bạn không muốn xử lý các khoảng trắng giữa phần tử.

  • Khi cần bố cục tự động xuống dòng linh hoạt hơn (sử dụng flex-wrap với flexbox sẽ hiệu quả hơn).

Kết luận

Thuộc tính inline-block trong CSS là một công cụ mạnh mẽ giúp tối ưu hiển thị các phần tử trong thiết kế web. Bằng cách kết hợp ưu điểm của cả phần tử inlineblock, nó giúp tạo bố cục linh hoạt, căn chỉnh dễ dàng và phù hợp với nhiều tình huống khác nhau. Tuy nhiên, cần chú ý đến một số lỗi phổ biến như khoảng trắng không mong muốn hay khả năng tương thích với trình duyệt cũ để tối ưu hóa trang web một cách tốt nhất.

Cùng Tempi khám phá ngay nhé!

Bài viết liên quan

Hỗ trợ sử dụng:

1900 633 680 / 028 7301 3680

support@tempi.vn

Đề nghị hợp tác, đề xuất tài trợ:

CÔNG TY CỔ PHẦN CÔNG NGHỆ TEKO VIỆT NAM

Tầng 7, số 22 phố Láng Hạ, Phường Láng Hạ, Quận Đống Đa, Thành phố Hà Nội, Việt Nam.

Tầng 8, số 17 Bà Huyện Thanh Quan, Phường 6, Quận 3, Thành phố Hồ Chí Minh, Việt Nam.

Giấy chứng nhận đăng ký doanh nghiệp số 0107705299 do Sở Kế Hoạch và Đầu Tư Thành Phố Hà Nội cấp lần đầu ngày 13/01/2017.

© Teko Vietnam All Rights Reserved

Cộng đồng Tempi trên Facebook

Cộng đồng Tempi trên Facebook