Mỗi element có một hành vi display mặc định điều khiển cách nó trôi trong layout.
<div>, <p>, <h1>, <section>, <ul>.<span>, <a>, <strong>, <em>.<p>This is a <strong>bold</strong> word inside a paragraph.</p>
<!-- <strong> vẫn inline; hai <div> bên dưới xếp chồng theo chiều dọc -->
<div>Block one</div>
<div>Block two</div>
span { width: 200px; height: 50px; } /* ❌ bị bỏ qua — span là inline */
Đặt width/height cho một inline element không có tác dụng gì. Cách khắc phục là đổi display của nó:
span { display: inline-block; width: 200px; } /* ✅ trôi inline NHƯNG tôn trọng kích thước */
inline-block nằm trong dòng văn bản (cạnh nhau) và tôn trọng width/height/margin — hoàn hảo cho các mục nav, badge, hoặc button xếp thành một hàng.
block → dòng mới, full width, đặt được kích thước
inline → trong dòng, rộng theo nội dung, KHÔNG đặt được kích thước (chiều dọc)
inline-block → trong dòng, trôi theo nội dung, đặt được kích thước
Hiểu display mặc định giải thích tại sao <span> của bạn không nhận height, tại sao các <div> xếp chồng, và khi nào cần chuyển sang inline-block, flex hay grid.
Đó là nền tảng của cách các element sắp xếp trước khi bạn áp dụng bất kỳ hệ thống layout nào.