Overflow là gì? Cách dùng các thuộc tính overflow trong CSS

Trong phát triển web, quản lý nội dung tràn ra ngoài container là một thách thức phổ biến. Khi nội dung quá dài, hình ảnh hoặc video không đúng tỷ lệ, hoặc layout bị hạn chế kích thước, nếu không xử lý đúng cách, trang web sẽ trở nên lộn xộn, khó đọc và trải nghiệm người dùng kém. Đó chính là lúc CSS overflow trở thành công cụ quan trọng. 

Không chỉ giúp ẩn hoặc tạo vùng cuộn cho nội dung, overflow còn hỗ trợ các hiệu ứng trực quan, truncate text, xử lý hình ảnh và thậm chí kiểm soát hành vi cuộn trên mobile. Hiểu rõ từ các giá trị cơ bản đến thuộc tính nâng cao sẽ giúp bạn thiết kế giao diện gọn gàng, responsive và chuyên nghiệp. Cùng khám phá toàn bộ các giá trị và tình huống sử dụng của CSS overflow từ cách cơ bản đến nâng cao trong bài viết sau đây!

 

Overflow là gì? Cách dùng các thuộc tính overflow trong CSS

 

Mục lục

Overflow là gì?

Trong CSS, overflow là thuộc tính dùng để kiểm soát cách trình duyệt xử lý phần nội dung vượt ra ngoài kích thước của một phần tử. Điều này thường xảy ra khi chiều rộng hoặc chiều cao của nội dung lớn hơn kích thước mà bạn đã đặt cho phần tử chứa.

Cú pháp cơ bản:

selector {

    overflow : value;

}

Trong đó value có thể là visible, hidden, scroll hoặc auto. Mỗi giá trị sẽ có cách hoạt động khác nhau.

Ví dụ, bạn tạo một khung có chiều cao 200px nhưng bên trong lại có một đoạn văn dài hơn rất nhiều. Khi đó, trình duyệt cần biết phải làm gì với phần nội dung dư ra: hiển thị toàn bộ, cắt đi hay thêm thanh cuộn. Thuộc tính overflow ra đời để giải quyết vấn đề này.

Thuộc tính overflow thường được sử dụng khi thiết kế:

- Khung nội dung có chiều cao cố định.

- Hộp chat, bình luận, danh sách sản phẩm.

- Banner, card hoặc menu có nội dung dài.

- Các layout cần giữ kích thước ổn định trên nhiều màn hình.
 

Overflow là gì?
 

Giải mã chi tiết các giá trị cơ bản của thuộc tính overflow trong CSS 

Thuộc tính overflow CSS được sử dụng để kiểm soát cách trình duyệt xử lý phần nội dung vượt ra ngoài kích thước của phần tử. Khi chiều rộng hoặc chiều cao của nội dung lớn hơn khung chứa, bạn có thể lựa chọn hiển thị toàn bộ, ẩn phần dư thừa hoặc tạo thanh cuộn để người dùng tiếp tục xem nội dung. Dưới đây là các giá trị overflow cơ bản trong CSS: 

1. Overflow: visible (mặc định)

Visible là giá trị mặc định của thuộc tính overflow. Khi một phần tử được đặt overflow: visible, phần nội dung vượt ra ngoài kích thước của phần tử vẫn sẽ được hiển thị đầy đủ. Trình duyệt sẽ không giới hạn phần nội dung dư ra. Dù phần tử chỉ có chiều cao hoặc chiều rộng cố định, nội dung bên trong vẫn có thể “tràn” ra ngoài khung chứa.

Ví dụ: Nếu bạn tạo một thẻ div cao 100px nhưng đặt vào đó một đoạn văn dài 300px, toàn bộ nội dung vẫn xuất hiện. Tuy nhiên, phần văn bản vượt quá 100px sẽ tràn xuống dưới hoặc sang ngang.

.box {

    width: 250px;

    height: 100px;

    border: 1px solid #333;

    overflow: visible;

}

< div class="box" >

Đây là một đoạn văn rất dài. Nội dung sẽ tiếp tục hiển thị dù vượt ra ngoài chiều cao của khung chứa.

< /div >

Bạn nên dùng overflow: visible khi:

- Không muốn cắt bớt nội dung.

- Muốn toàn bộ văn bản, hình ảnh hoặc thành phần con được hiển thị đầy đủ.

- Phần tử không cần giữ kích thước quá chặt chẽ.

- Layout xung quanh vẫn đủ khoảng trống để chứa phần nội dung tràn ra.

2. Overflow: hidden

Giá trị overflow: hidden sẽ ẩn toàn bộ phần nội dung vượt quá kích thước của phần tử. Người dùng sẽ chỉ nhìn thấy phần nằm bên trong khung chứa. Khi chiều rộng hoặc chiều cao của nội dung lớn hơn phần tử cha, phần dư ra sẽ bị cắt bỏ hoàn toàn. Trình duyệt không hiển thị phần đó và cũng không tạo thanh cuộn. Overflow: hidden rất hữu ích khi muốn giữ giao diện gọn gàng và không muốn nội dung phá vỡ bố cục.

Ví dụ phổ biến nhất là cắt ảnh trong một khung có border-radius:

CSS:

.image-box {

width: 300px;

height: 200px;

border-radius: 12px;

overflow: hidden;

}

HTML

< div class="image-box" >

  < img src="example.jpg" alt="Example Image" >

< /div >

Bạn nên sử dụng giá trị Overflow: hidden trong các trường hợp:

- Card sản phẩm, bài viết hoặc banner có kích thước cố định.

- Ẩn phần hình ảnh vượt ra ngoài khung.

- Tạo hiệu ứng bo góc hoặc crop ảnh.

- Giữ các thành phần trong layout không bị tràn.

 

Overflow CSS

 

3. Overflow: scroll

Overflow: scroll luôn tạo thanh cuộn (scrollbar) cho phần tử, dù nội dung có vượt quá kích thước hay không. Cách hoạt động chi tiết như sau:

- Thanh cuộn xuất hiện ngang (horizontal) hoặc dọc (vertical) tùy thuộc vào kích thước.

- Người dùng có thể kéo để xem toàn bộ nội dung.

- Cho phép giữ kích thước phần tử cố định nhưng vẫn truy cập tất cả nội dung.

Khi bạn đặt:

selector {

  overflow: scroll;

}

Hiệu ứng sẽ như sau:

- Thanh cuộn luôn xuất hiện cả theo chiều ngang (horizontal) và chiều dọc (vertical) dù nội dung có vượt quá phần tử hay không.

- Nội dung vẫn có thể bị cắt nếu không vừa với kích thước phần tử, nhưng người dùng có thể cuộn để xem hết.

4. Overflow: auto

Overflow: auto là giá trị linh hoạt nhất của thuộc tính overflow. Khi được áp dụng, trình duyệt sẽ tự động kiểm tra xem nội dung bên trong có vượt quá kích thước của phần tử hay không. Nếu nội dung vượt khung, thanh cuộn sẽ xuất hiện; ngược lại, nếu nội dung vừa vặn, phần tử sẽ không hiển thị thanh cuộn. Điều này giúp giao diện website trông gọn gàng và tự nhiên hơn so với overflow: scroll bởi scroll luôn hiển thị thanh cuộn ngay cả khi không cần thiết. Cách dùng chi tiết như sau:

CSS:

.auto- box {

    width: 250px;

    height: 100px;

    border: 1px solid #333;

    overflow: auto;

}

HTML:

< div class="auto-box">

  Nội dung dài sẽ xuất hiện thanh cuộn khi vượt quá khung chứa.

< /div>

Trong ví dụ trên, nếu đoạn văn đủ ngắn để nằm trọn trong khung 120px, thanh cuộn sẽ không xuất hiện. Nhưng khi nội dung dài hơn, trình duyệt sẽ tự động thêm thanh cuộn dọc hoặc ngang tùy trường hợp.

Bạn có thể dùng overflow: auto khi:

- Muốn phần tử chỉ xuất hiện thanh cuộn khi thật sự cần thiết.

- Tạo vùng cuộn cho bảng dữ liệu, khung chat, danh sách sản phẩm hoặc sidebar.

- Giữ bố cục gọn gàng nhưng vẫn đảm bảo người dùng xem được toàn bộ nội dung.

- Thiết kế giao diện responsive, vì auto thích nghi tốt hơn trên nhiều kích thước màn hình.

 

Thuộc tính Overflow

 

5. Overflow: clip

Overflow: clip là một giá trị mới của thuộc tính overflow, được dùng để cắt bỏ hoàn toàn phần nội dung vượt ra ngoài khung chứa, tương tự như overflow: hidden. Tuy nhiên, điểm khác biệt quan trọng là clip không tạo vùng cuộn và cũng không cho phép người dùng hoặc JavaScript cuộn tới phần nội dung bị cắt.

Khi sử dụng overflow: clip, mọi nội dung nằm ngoài kích thước của phần tử sẽ bị loại bỏ ngay tại mép của khung chứa. Đây là lựa chọn phù hợp khi bạn muốn kiểm soát chặt chẽ bố cục và chắc chắn rằng không có bất kỳ phần nội dung nào xuất hiện bên ngoài. Ví dụ: 

CSS

.box {

    width : 250px;

    height : 100px;

    border: 1px solid #333;

    overflow: clip;

}

HTML:

< div class="box">

    Đây là một đoạn văn rất dài. Khi nội dung vượt quá chiều cao của phần tử, phần dư thừa sẽ bị cắt bỏ hoàn toàn và không thể cuộn để xem tiếp.

< /div >

Trong ví dụ trên, nội dung vượt quá chiều cao 100px sẽ bị cắt mất. Không giống overflow: auto hoặc scroll, người dùng sẽ không thấy thanh cuộn và cũng không thể truy cập phần nội dung bị ẩn.

Bạn nên dùng overflow: clip khi:

- Muốn cắt bỏ hoàn toàn phần nội dung vượt khung.

- Không muốn hiển thị thanh cuộn hoặc cho phép cuộn.

- Tạo các hiệu ứng animation, hover hoặc crop nội dung.

- Cần tối ưu hiệu suất trong các thành phần đồ họa hoặc animation phức tạp.
 

Thuộc tính Overflow CSS

 

Các thuộc tính overflow nâng cao

Ngoài các giá trị cơ bản như visible, hidden, scroll hay auto, CSS còn cung cấp những thuộc tính nâng cao giúp kiểm soát overflow một cách chính xác và linh hoạt hơn. Những thuộc tính này cho phép bạn xử lý nội dung tràn theo từng trục riêng biệt, kiểm soát cách văn bản dài xuống dòng, hoặc kết hợp với layout phức tạp để giữ giao diện gọn gàng và trực quan.

1. Overflow-x và overflow-y (kiểm soát theo trục)

Overflow-x và overflow-y là các thuộc tính mở rộng của overflow, cho phép bạn kiểm soát riêng rẽ phần nội dung tràn theo chiều ngang (x) hoặc chiều dọc (y). Điều này hữu ích khi bạn muốn tạo layout linh hoạt mà không ảnh hưởng đến toàn bộ container.

- Overflow-x kiểm soát nội dung tràn theo chiều ngang.

- Overflow-y kiểm soát nội dung tràn theo chiều dọc.

Cách sử dụng:

.container {

  width : 300px;

  height : 150px;

  overflow-x: auto; /* tạo thanh cuộn ngang khi cần */

  overflow-y: hidden; /* ẩn tràn dọc */

  border: 1px solid #333;

}

Với ví dụ này nếu nội dung vượt quá chiều ngang, người dùng có thể cuộn ngang; phần dư theo chiều dọc sẽ bị ẩn, giữ bố cục gọn gàng.

Các trường hợp nên dùng overflow-x và overflow-y:

- Khi container chứa bảng dữ liệu hoặc hình ảnh có thể tràn theo một chiều nhưng không muốn tràn theo chiều kia.

- Trong layout responsive, sử dụng overflow-x và overflow-y để giữ các trục khác ổn định mà vẫn cho phép cuộn nội dung khi cần.

- Khi kết hợp với modal, popup hoặc card, để quản lý overflow theo từng chiều riêng biệt, tránh layout bị phá vỡ.

2. Overflow-wrap (xử lý xuống dòng nội dung dài)

Overflow-wrap là thuộc tính CSS giúp xử lý các từ hoặc chuỗi ký tự dài không có khoảng trắng, ngăn chúng tràn ra ngoài container. Khi nội dung vượt quá chiều rộng phần tử, overflow-wrap sẽ cho phép xuống dòng một cách hợp lý, giữ bố cục gọn gàng và dễ đọc.

Các giá trị phổ biến của overflow-wrap:

- Normal: Nội dung không bị cắt hoặc xuống dòng bất thường, từ dài sẽ tràn ra ngoài.

- Break-word: Từ dài sẽ được chia nhỏ và xuống dòng để vừa container.

- Anywhere: Giống break-word nhưng linh hoạt hơn, có thể xuống dòng tại bất kỳ điểm nào khi cần.

Ví dụ:

.text - container {

  width: 250px;

  border: 1px solid #333;

  overflow-wrap: break-word; /* xuống dòng khi cần */

}

Trong ví dụ này, nếu một từ quá dài (như URL, mã hoặc chuỗi không có khoảng trắng), nó sẽ tự động xuống dòng thay vì tràn ra ngoài container.

Các trường hợp nên sử dụng giá trị overflow-wrap:

- Khi xử lý văn bản dài không có khoảng trắng như URL, mã code hoặc chuỗi ký tự dài trong blog, card sản phẩm hoặc bảng dữ liệu.

- Khi muốn giữ layout responsive mà vẫn đảm bảo nội dung không tràn ra ngoài container.

- Khi muốn kết hợp với word-wrap, white-space để kiểm soát tối ưu cách xuống dòng và hiển thị văn bản.
 

Các thuộc tính Overflow

 

3. Text-overflow (hiển thị dấu "...")

Text-overflow là thuộc tính CSS giúp quản lý cách hiển thị văn bản khi vượt quá kích thước container, thường dùng để rút gọn văn bản dài và hiển thị dấu “…” thay cho phần nội dung bị cắt. Thuộc tính này thường kết hợp với overflow: hidden và white-space: nowrap để đạt hiệu quả.

Cách sử dụng:

.card - title {

  width : 200px;

  white-space: nowrap;   /* ngăn xuống dòng */

  overflow: hidden;      /* ẩn phần tràn */

  text-overflow: ellipsis; /* hiển thị dấu "..." */

  border: 1px solid #333;

}

Với ví dụ này, nếu tiêu đề hoặc tên sản phẩm dài hơn 200px, phần dư sẽ bị cắt và hiển thị dấu “…”, giữ layout gọn gàng mà vẫn truyền tải ý nghĩa tổng quan của nội dung.

Các giá trị phổ biến của text-overflow:

- Clip cắt phần dư ra ngoài mà không hiển thị dấu “…”.

- Ellipsis hiển thị dấu “…”.

- String có thể tùy chỉnh hiển thị một chuỗi khác thay cho “…”.

Thuộc tính text-overflow thích hợp với các trường hợp:

- Trong các card sản phẩm, danh sách bài viết, bảng dữ liệu, nơi cần giới hạn chiều rộng văn bản.

- Khi muốn giữ giao diện gọn gàng mà vẫn truyền tải thông tin chính.

- Kết hợp với overflow: hidden và white-space: nowrap để đảm bảo hiệu quả hiển thị.

4. Overflow-anchor (kiểm soát scroll jumping)

Overflow-anchor là một thuộc tính CSS nâng cao giúp giảm hiện tượng “scroll jumping”, khi người dùng đang cuộn trang và nội dung tải thêm hoặc thay đổi kích thước, vị trí scroll bị nhảy đột ngột. Thuộc tính này kiểm soát điểm neo của scroll, giữ trải nghiệm mượt mà hơn, đặc biệt trong các layout động hoặc nội dung tải lazy load.

Cách sử dụng:

dynamic - content {

 overflow -anchor: auto;   /* bật kiểm soát scroll */

}

.banner {

 overflow -anchor: none;   /* vô hiệu hóa kiểm soát scroll */

}

Cụ thể:

- Auto (mặc định): Bật tính năng neo scroll, trình duyệt sẽ tự động cố định điểm scroll khi nội dung thay đổi.

- None: Vô hiệu hóa neo scroll, dùng khi bạn không muốn container ảnh hưởng tới scroll của trang.

Các trường hợp nên dùng overflow-anchor:

- Khi có nội dung tải động (lazy loading, thêm comment, bài viết mới) mà scroll hiện tại có thể bị nhảy.

- Trong infinite scroll hoặc container nội dung động để giữ người dùng không bị gián đoạn khi cuộn.

- Kết hợp với overflow: auto hoặc scroll để quản lý scroll container chính xác.

5. Overscroll-behavior (kiểm soát hành vi cuộn)

Overscroll-behavior là thuộc tính CSS giúp kiểm soát phản ứng khi người dùng cuộn vượt quá biên của container, ví dụ khi cuộn lên hoặc xuống nhưng không còn nội dung. Thuộc tính này rất hữu ích để ngăn hành vi kéo “bounce” trên mobile hoặc ngăn việc scroll “lọt” sang container cha trong các layout nested scroll.

Cách sử dụng:

. modal {

  overscroll -behavior: contain; /* ngăn scroll lan ra ngoài */

}

body {

  overscroll -behavior-y: none; /* vô hiệu hóa bounce khi cuộn dọc */

}

Các giá trị phổ biến:

- Auto (mặc định) cho phép scroll vượt biên như bình thường.

- Contain ngăn hành vi overscroll lan ra container cha.

- None vô hiệu hóa toàn bộ hành vi overscroll (bounce, pull-to-refresh).

Các trường hợp nên sử dụng overscroll behavior:

- Trong modal, popup hoặc container cuộn lồng nhau, để người dùng không vô tình kéo scroll sang container bên ngoài.

- Trên thiết bị di động, để loại bỏ hiệu ứng bounce không mong muốn khi cuộn đến cuối container.

- Trong các layout nested scroll, kết hợp với overflow: auto hoặc scroll để kiểm soát trải nghiệm cuộn mượt mà.

Thuộc tính CSS Overflow

6. Scroll-behavior (hiệu ứng cuộn mượt)

Scroll-behavior là thuộc tính CSS cho phép bạn tạo hiệu ứng cuộn mượt mà khi người dùng thao tác scroll hoặc khi sử dụng các liên kết nội bộ (anchor links). Thay vì nhảy ngay lập tức đến vị trí mục tiêu, trình duyệt sẽ cuộn từ từ, giúp trải nghiệm đọc nội dung trở nên tự nhiên và dễ theo dõi hơn. Thuộc tính này thường được dùng cùng các phần tử có overflow: auto hoặc overflow: scroll để giúp trải nghiệm cuộn tự nhiên và dễ theo dõi hơn.

Cách sử dụng:

CSS:

html {

  scroll-behavior: smooth;

}

Hoặc áp dụng cho một container riêng:

.container {

  height : 300px;

  overflow-y : auto;

  scroll-behavior : smooth;

}

Các giá trị phổ biến:

- Auto (mặc định): Cuộn ngay lập tức, không có hiệu ứng chuyển động.

- Smooth: Tạo hiệu ứng cuộn mượt khi di chuyển đến vị trí mới.

Các trường hợp nên sử dụng:

- Khi trang web có menu điều hướng dạng anchor link (landing page, one-page website).

- Khi cần cải thiện trải nghiệm đọc nội dung dài, giúp người dùng dễ theo dõi vị trí đang cuộn.

- Trong các single-page application (SPA) để tạo hiệu ứng chuyển section mượt mà.

- Trong container có nội dung dài như bảng dữ liệu, danh sách bài viết hoặc khung chat.

7. Scroll-snap (căn chỉnh điểm dừng khi scroll)

Scroll-snap là nhóm thuộc tính CSS giúp xác định các điểm dừng khi người dùng cuộn nội dung. Thay vì dừng ở vị trí bất kỳ, container sẽ tự động căn chỉnh tới phần tử gần nhất. Điều này đặc biệt hữu ích cho slider, gallery ảnh, carousel hoặc các section toàn màn hình. Để sử dụng scroll-snap một cách chính xác và hiệu quả, bạn cần thiết lập thuộc tính cho cả phần tử cha và phần tử con.

Cách sử dụng:

CSS:

.slider {

    display : flex;

    overflow-x : auto;

    scroll-snap-type: x mandatory;

}

 

.slide {

    min-width: 100%;

    scroll-snap-align : start;

}

HTML

< div class="slider">

    < div class="slide">Slide 1

    < div class="slide">Slide 2

    < div class="slide">Slide 3

< /div>

Trong ví dụ trên:

- Scroll-snap-type: x mandatory yêu cầu container cuốn theo chiều ngang (x) và bắt buộc dừng tại các điểm snap.

- Scroll-snap-align: start khiến mỗi .slide được căn theo mép trái của container khi cuộn dừng.

Các giá trị phổ biến của scroll-snap-type:

- X mandatory: Snap theo chiều ngang, bắt buộc dừng.

- Y mandatory: Snap theo chiều dọc.

- Both mandatory: Snap theo cả hai chiều.

- Proximity: Chỉ snap khi vị trí cuộn ở gần điểm dừng.

Bạn nên dùng scroll-snap khi:

- Tạo slider hoặc carousel bằng CSS.

- Xây dựng website cuộn từng section toàn màn hình.

- Hiển thị gallery ảnh hoặc danh sách sản phẩm cuộn ngang.

- Muốn trải nghiệm cuộn rõ ràng và dễ kiểm soát hơn trên mobile.
 

Các thuộc tính Overflow nâng cao

 

8. Scrollbar styling (tùy chỉnh thanh cuộn)

Mặc định, thanh cuộn (scrollbar) của trình duyệt thường có giao diện khá đơn giản và phụ thuộc vào hệ điều hành. Tuy nhiên, bạn có thể tùy chỉnh màu sắc, kích thước và hình dạng của thanh cuộn để đồng bộ với thiết kế của website. Điều này đặc biệt hữu ích với các khu vực có overflow: auto hoặc overflow: scroll. Trên các trình duyệt dựa trên WebKit như Google Chrome, Microsoft Edge và Safari, bạn có thể dùng các pseudo-element như ::-webkit-scrollbar.

Cách sử dụng:

CSS: 

.box {

    width : 300px;

    height: 150px;

    overflow-y: auto;

}

/* toàn bộ thanh cuộn */

.box::- webkit-scrollbar {

    width: 10px;

}

/* phần nền của thanh cuộn */

.box::-webkit-scrollbar-track {

    background: #f1f1f1;

    border-radius: 10px;

}

/* phần nút kéo */

.box::-webkit-scrollbar-thumb {

    background: #888;

    border-radius: 10px;

}

/* đổi màu khi hover */

.box::-webkit-scrollbar-thumb:hover {

    background: #555;

}

Kết quả là thanh cuộn sẽ có chiều rộng 10px, phần nền màu xám nhạt và nút kéo bo tròn, đồng thời đổi màu khi người dùng rê chuột vào.

Bạn nên tùy chỉnh scrollbar khi:

- Muốn giao diện đồng bộ với màu sắc thương hiệu.

- Thiết kế dashboard, sidebar hoặc khung chat có vùng cuộn riêng.

- Làm nổi bật hoặc giảm bớt sự chú ý của thanh cuộn.

- Tăng trải nghiệm người dùng trên các container cuộn dài.

9. Overflow kết hợp với position & display

Overflow thường được sử dụng cùng với position và display để kiểm soát cách phần tử hiển thị, căn chỉnh và xử lý nội dung tràn. Khi kết hợp đúng, bạn có thể tạo ra các layout phức tạp như dropdown, tooltip, card, modal hoặc slider mà vẫn giữ giao diện ổn định. Ví dụ phổ biến nhất là dùng overflow: hidden với position: relative để giới hạn vùng hiển thị của phần tử con có position: absolute.

Cách sử dụng:

.card {

    position : relative;

    width: 300px;

    height: 200px;

    overflow: hidden;

}

.card img {

    width: 100%;

    transition: transform 0.3s ease;

}

.card:hover img {

    transform: scale(1.1);

}

Trong ví dụ này, khi người dùng hover vào card, hình ảnh sẽ phóng to. Nhờ overflow: hidden, phần ảnh vượt ra ngoài .card sẽ bị cắt, tạo hiệu ứng zoom gọn gàng mà không làm vỡ layout.

Bạn nên kết hợp overflow với position và display khi:

- Tạo card có hiệu ứng hover hoặc zoom ảnh.

- Thiết kế slider, carousel hoặc danh sách cuộn ngang.

- Xây dựng dropdown, accordion hoặc menu ẩn/hiện.

- Kiểm soát nội dung bên trong modal, popup hoặc container cố định.
 

Các thuộc tính CSS Overflow

 

Những tình huống sử dụng overflow phổ biến trong phát triển web

Trong phát triển web, overflow là một thuộc tính quan trọng giúp kiểm soát phần nội dung vượt ra ngoài khung chứa. Nó được ứng dụng trong nhiều tình huống khác nhau: từ việc tạo vùng cuộn cho nội dung dài, ẩn phần dư ra ngoài khung, xử lý văn bản quá dài đến các hiệu ứng hover hay animation.

1. Tạo vùng cuộn cho nội dung dài

Khi bạn có một khối nội dung dài hơn khung hiển thị, việc hiển thị toàn bộ sẽ phá vỡ bố cục của trang. Trong trường hợp này, overflow: auto hoặc overflow: scroll là giải pháp lý tưởng. Nó tạo ra vùng cuộn bên trong phần tử, giúp người dùng vẫn truy cập được tất cả nội dung mà không ảnh hưởng đến các phần tử xung quanh. Ví dụ, trong các khung chat, bảng dữ liệu hoặc danh sách sản phẩm dài, thanh cuộn giúp giao diện gọn gàng và dễ thao tác hơn.

2. Ẩn nội dung vượt khung

Khi bạn muốn giữ giao diện web gọn gàng và không để phần tử tràn ra phá vỡ bố cục, overflow: hidden là giải pháp hiệu quả. Thuộc tính này sẽ cắt bỏ toàn bộ phần nội dung vượt quá kích thước của phần tử, chỉ hiển thị phần nằm trong khung chứa. Ví dụ, nếu một thẻ card có hình ảnh lớn hoặc video chiếm quá nhiều diện tích, dùng overflow: hidden sẽ giúp các phần dư ra ngoài bị ẩn, giữ card đẹp mắt và cân đối. 

Khi kết hợp với border-radius, bạn cũng có thể tạo hiệu ứng bo góc gọn gàng, che đi các phần dư thừa của hình ảnh, giúp giao diện trực quan và chuyên nghiệp hơn.

Lưu ý khi sử dụng:

- Nội dung bị ẩn sẽ không hiển thị và không thể cuộn để xem, nên không dùng khi phần thông tin đó quan trọng.

- Thường kết hợp với các hiệu ứng hover hoặc animation để kiểm soát phần hiển thị động của phần tử con.

3. Tạo hiệu ứng hover & animation

Overflow rất hữu ích trong các hiệu ứng tương tác. Khi bạn muốn hình ảnh hoặc nội dung trượt vào hoặc ra khỏi khung khi hover, đặt overflow: hidden trên phần tử cha sẽ che đi phần nội dung tràn ra ngoài, giữ layout gọn gàng. Sau đó, sử dụng CSS transform hoặc transition để tạo hiệu ứng di chuyển mượt mà cho phần tử con.

Cách này giúp phần tử con xuất hiện hoặc di chuyển mà không phá vỡ các phần tử xung quanh, tạo cảm giác trực quan và sinh động cho người dùng. Đây là phương pháp phổ biến trong các thẻ card, gallery, hoặc banner có hiệu ứng hover, giúp trang web vừa đẹp vừa chuyên nghiệp.

Lưu ý:

- Bạn không nên dùng thuộc tính overflow: hidden cho phần tử chứa nội dung quan trọng cần người dùng thấy toàn bộ vì phần dư sẽ bị ẩn đi.

- Kết hợp transition hoặc animation để hiệu ứng mượt mà hơn, tránh cảm giác giật khi hover.
 

Tình huống Overflow

 

4. Xử lý text dài (truncate nội dung)

Trong nhiều layout web, đặc biệt là danh sách bài viết, card sản phẩm hoặc snippet mô tả, văn bản quá dài có thể phá vỡ bố cục nếu không được xử lý. Để giữ giao diện gọn gàng, CSS cung cấp cách kết hợp overflow: hidden, text-overflow: ellipsis và white-space: nowrap để cắt bớt nội dung và hiển thị dấu “…” khi vượt quá khung chứa.

Ví dụ, bạn có một thẻ card sản phẩm với mô tả dài. Thay vì để văn bản tràn ra ngoài hoặc làm card giãn ra, bạn áp dụng:

.card - description {

  width: 250px;

  white-space: nowrap;

  overflow: hidden;

  text-overflow: ellipsis;

}

Đây là cách phổ biến để giữ giao diện gọn gàng mà vẫn truyền tải ý nghĩa tổng quan của nội dung. Ví dụ, trong các card sản phẩm hoặc snippet bài viết trên blog, text sẽ không “tràn ra” phá layout.

Lưu ý khi sử dụng:

- Phương pháp này chỉ hiển thị một dòng văn bản. Nếu muốn truncate nhiều dòng, cần dùng thêm -webkit-line-clamp hoặc các giải pháp CSS khác.

- Nội dung bị cắt sẽ không hiển thị, nên nếu thông tin quan trọng, hãy cung cấp tooltip hoặc link “Xem thêm”.

5. Tạo thanh cuộn ngang

Thanh cuộn ngang (overflow-x: auto) thường được sử dụng cho bảng dữ liệu rộng, gallery ảnh hoặc danh sách sản phẩm dạng slider. Thay vì ép layout co nhỏ hoặc tràn ra ngoài màn hình, người dùng có thể kéo ngang để xem toàn bộ nội dung. 

Ví dụ trên các thiết bị di động, các bảng dữ liệu hoặc hình ảnh có thể không vừa viewport. Bằng cách áp dụng:

.table- container {

  width: 100%;

  overflow-x : auto;

}

Container sẽ hiển thị thanh cuộn ngang khi cần, giúp layout responsive, dễ thao tác và tránh tràn ra ngoài màn hình. Đây là một giải pháp quan trọng trong thiết kế responsive, đặc biệt với màn hình di động, giúp duy trì bố cục gọn gàng và trải nghiệm người dùng tốt hơn.

6. Ngăn tràn layout trên mobile

Trên các thiết bị di động, nội dung vượt quá chiều ngang viewport là một vấn đề phổ biến, dẫn đến trang web bị tràn ra ngoài màn hình, tạo thanh cuộn ngang không mong muốn và làm giảm trải nghiệm người dùng. Để khắc phục, bạn có thể sử dụng overflow-x: auto hoặc overflow-x: hidden kết hợp với max-width: 100% cho các phần tử con.

Ví dụ, một hình ảnh hoặc bảng dữ liệu rộng hơn màn hình:

img, table {

  max-width : 100%;

}

.container {

  overflow-x : auto;

}

Cách này giúp nội dung không tràn ra ngoài viewport, vẫn có thể cuộn khi cần và giữ layout gọn gàng. Đây là giải pháp quan trọng trong thiết kế responsive, giúp giao diện hiển thị tốt trên mọi kích thước màn hình mà không làm người dùng phải zoom hoặc di chuyển layout một cách bất tiện.

Lưu ý khi sử dụng:

- Chỉ nên dùng overflow-x: hidden nếu chắc chắn không cần thanh cuộn ngang, để tránh cắt mất nội dung quan trọng.

- Kết hợp kiểm tra trên nhiều thiết bị di động để đảm bảo trải nghiệm mượt mà và không xảy ra layout bị tràn.
 

Tình huống sử dụng Overflow

7. Kiểm soát scroll trong modal/ popup

Khi hiển thị modal hoặc popup chứa nhiều nội dung, lạm dụng overflow không kiểm soát có thể khiến toàn bộ trang chính cuốn theo hoặc modal tràn ra ngoài màn hình, làm trải nghiệm người dùng kém. Để khắc phục, bạn nên sử dụng overflow: auto hoặc overflow-y: auto cho phần tử nội dung bên trong modal.

Ví dụ:

.modal - content {

max -height: 400px; /* chiều cao cố định */

overflow-y: auto; /* tạo thanh cuộn dọc khi cần */

}

Với thiết lập này, nội dung trong modal có thể cuộn độc lập, trong khi phần còn lại của trang vẫn đứng yên, giúp người dùng tập trung vào modal mà không làm layout tổng thể bị phá vỡ. Đây là phương pháp phổ biến trong các giao diện web hiện đại, từ popup thông báo, form nhập liệu đến danh sách dài trong modal.

8. Tạo layout cố định (fixed height container)

Khi muốn phần tử có chiều cao cố định nhưng vẫn chứa nhiều nội dung, overflow: auto hoặc overflow: scroll giúp giữ layout ổn định và không làm giãn các phần tử xung quanh. 

Ví dụ, một thẻ card chứa danh sách sản phẩm:

.card - container {

height: 195px; /* chiều cao cố định */

overflow - y: auto; /* tạo thanh cuộn dọc khi cần */

}

Với thiết lập này, nội dung bên trong có thể cuộn độc lập mà không làm card giãn ra hay phá vỡ các phần tử xung quanh. Đây là phương pháp phổ biến cho các card thông tin, bảng dữ liệu hoặc khung chat, giúp giao diện gọn gàng, dễ kiểm soát và trực quan cho người dùng.
 

Tình huống sử dụng Overflow CSS

 

9. Xử lý hình ảnh và media không đúng tỷ lệ

Khi làm việc với hình ảnh hoặc video, nội dung không đúng tỷ lệ có thể tràn ra ngoài container, làm phá layout và ảnh hưởng trải nghiệm người dùng. Để khắc phục, bạn có thể sử dụng overflow: hidden kết hợp với các thuộc tính như object-fit: cover hoặc clip-path. Cách này giúp cắt phần dư thừa mà vẫn giữ phần quan trọng của media, đồng thời giữ container gọn gàng và đẹp mắt.

Ví dụ, trong một thẻ gallery hoặc slider:

.media -container {

  width : 300px;

  height : 200px;

  overflow: hidden;

}

.media - container img {

  width: 100%;

  height: 100%;

  object-fit: cover; /* giữ hình ảnh đầy container mà không méo */

}

Với thiết lập này, phần dư ra ngoài container sẽ bị cắt, hình ảnh hoặc video vẫn hiển thị đầy đủ phần quan trọng và bố cục không bị phá vỡ. Đây là cách phổ biến để xử lý hình ảnh trong thẻ card, banner, gallery ảnh hoặc video thumbnail.

Lưu ý khi sử dụng:

- Giá trị overflow: hidden sẽ ẩn toàn bộ phần dư ra ngoài, nên hãy chắc chắn phần quan trọng không bị cắt.

- Khi cần hiển thị hiệu ứng hover hoặc animation cho media, kết hợp overflow: hidden với transform hoặc transition để tạo hiệu ứng mượt mà.

- Có thể dùng clip-path để tạo hình dạng phức tạp hoặc mask tùy chỉnh mà không làm ảnh hưởng layout.

10. Tạo container cuộn riêng biệt (nested scroll)

Trong các layout phức tạp, bạn có thể cần nhiều vùng cuộn độc lập để người dùng thao tác mà không ảnh hưởng đến các phần tử xung quanh. Đây là lúc nested scroll (cuộn lồng nhau) phát huy tác dụng. Bằng cách áp dụng overflow: auto hoặc overflow-y: auto cho từng container con, bạn có thể kiểm soát việc cuộn riêng biệt cho từng vùng nội dung.

Ví dụ trong một modal chứa bảng dữ liệu dài bên trong:

.modal - content {

  max - height: 400px;

  overflow-y: auto; /* cuộn dọc cho nội dung modal */

}

.table-container {

  max-height: 200px;

  overflow-y: auto; /* cuộn độc lập cho bảng bên trong modal */

}

Với thiết lập này, người dùng có thể cuộn bảng dữ liệu mà modal vẫn cố định, tạo trải nghiệm mượt mà và trực quan. Nested scroll thường được dùng trong dashboard, form phức tạp, bảng dữ liệu, gallery hoặc các layout nhiều container.
 

CSS Overflow

5 lỗi thường gặp khi dùng CSS overflow

Mặc dù overflow là một thuộc tính rất hữu ích trong CSS để kiểm soát phần nội dung tràn ra ngoài phần tử, nhưng khi sử dụng không đúng cách có thể gây ra nhiều vấn đề trong bố cục và trải nghiệm người dùng.

- Nội dung bị cắt không hiển thị: Lỗi phổ biến là sử dụng overflow: hidden mà vô tình cắt mất phần nội dung quan trọng. Điều này xảy ra khi bạn chưa tính toán đúng chiều cao hoặc chiều rộng của phần tử chứa. Ví dụ, nếu một thẻ card chứa hình ảnh và văn bản dài mà dùng overflow: hidden, phần văn bản vượt ra ngoài sẽ bị mất hoàn toàn, khiến người dùng không thể đọc hết nội dung. Để tránh, bạn hãy cân nhắc sử dụng overflow: auto hoặc thiết kế layout linh hoạt hơn.

- Scroll bị khóa ngoài ý muốn: Khi sử dụng overflow: hidden hoặc overflow-x: hidden trên phần tử cha, đôi khi các thanh cuộn của phần tử con cũng bị vô hiệu hóa. Điều này gây khó khăn trong việc truy cập nội dung dài hoặc bảng dữ liệu. Một ví dụ phổ biến là modal chứa danh sách lớn: nếu modal có overflow: hidden mà bên trong có bảng cần cuộn, người dùng sẽ không thể kéo xem toàn bộ nội dung. Giải pháp là đặt overflow trực tiếp trên phần tử con thay vì phần tử cha hoặc sử dụng overflow: auto.

- Xung đột giữa overflow và layout: Sử dụng overflow đôi khi gây xung đột với các thuộc tính layout khác như flex hoặc grid. Ví dụ, khi một phần tử con trong flex container có overflow: auto, kích thước phần tử cha có thể không được tính toán đúng, dẫn đến layout bị lệch hoặc thanh cuộn xuất hiện không mong muốn. Khi gặp vấn đề này, cần kiểm tra lại cách bố trí và cân nhắc sử dụng min-height, max-height hoặc flex-shrink để điều chỉnh.

- Bị tràn layout trên mobile: Trên các thiết bị di động, nội dung tràn ra ngoài màn hình là một vấn đề thường gặp khi không xử lý overflow-x đúng cách. Ví dụ, hình ảnh hoặc bảng rộng hơn viewport sẽ tạo thanh cuộn ngang, làm layout xấu và trải nghiệm người dùng kém. Giải pháp là sử dụng overflow-x: auto hoặc thêm max-width: 100% cho phần tử nội dung để giữ layout responsive.

- Vấn đề thanh cuộn trên các trình duyệt khác nhau: Các trình duyệt hiển thị thanh cuộn khác nhau: một số luôn hiện, một số chỉ hiện khi cần, một số hiển thị “ẩn” thanh cuộn cho touch devices. Điều này có thể gây ra sự khác biệt trong giao diện và trải nghiệm người dùng. Khi phát triển web, cần kiểm tra trên nhiều trình duyệt và thiết bị, đồng thời cân nhắc sử dụng các giải pháp CSS như ::-webkit-scrollbar để tùy chỉnh thanh cuộn nếu cần.
 

Các thuộc tính Overflow CSS

 

So sánh overflow CSS với các thuộc tính liên quan

Trong CSS, overflow thường được sử dụng để kiểm soát phần nội dung vượt ra ngoài khung chứa, nhưng một số thuộc tính khác cũng có thể ảnh hưởng hoặc thay thế hiệu ứng tương tự. Để hiểu rõ sự khác nhau, hãy xem bảng so sánh giữa overflow và các thuộc tính liên quan như clip-path, display/position và white-space.
 

Thuộc tính

Chức năng chính

Cách kiểm soát nội dung

Khi nào dùng

Lưu ý

Overflow

Kiểm soát phần nội dung vượt khung

Hiển thị (visible), ẩn (hidden), cuộn (scroll/auto).

Khi cần giữ layout gọn gàng hoặc tạo vùng cuộn

Chỉ ảnh hưởng phần tử có kích thước cố định.

Clip-path

Cắt hình dạng hiển thị của phần tử.

Định hình vùng hiển thị (circle, polygon, ellipse...)

Khi muốn tạo hình dạng phức tạp, hiệu ứng mask

Không tạo thanh cuộn; phần dư vẫn tồn tại nhưng bị ẩn.

Display / position

Xác định cách phần tử hiển thị và vị trí

display: none ẩn hoàn toàn, position: .absolute/fixed có thể làm tràn.

Khi cần ẩn/hiện phần .tử hoặc định vị chính xác

Có thể thay đổi layout xung quanh, ảnh hưởng flow

White-space

Kiểm soát cách ngắt dòng văn bản.

nowrap, pre, pre-wrap.

Khi muốn giữ văn bản trên một dòng hoặc hiển thị nguyên định dạng.

Không ảnh hưởng hình ảnh hay phần tử con; kết hợp overflow để xử lý tràn.

 

Một số câu hỏi thường gặp về CSS overflow

Trong quá trình phát triển web, overflow là một thuộc tính thường xuyên được sử dụng nhưng cũng gây ra không ít thắc mắc cho các lập trình viên, đặc biệt khi xử lý nội dung tràn, tạo thanh cuộn hoặc kết hợp với layout phức tạp. Dưới đây là tổng hợp những câu hỏi phổ biến nhất về CSS overflow, giúp bạn hiểu rõ hơn về overflow CSS. 

1. Overflow: auto và scroll khác nhau thế nào?

Overflow: auto và overflow: scroll đều tạo thanh cuộn cho phần tử, nhưng cách hiển thị khác nhau. Với overflow: auto, thanh cuộn chỉ xuất hiện khi nội dung vượt quá kích thước phần tử, nhờ đó giao diện gọn gàng và linh hoạt hơn. Trong khi đó, overflow: scroll luôn hiển thị thanh cuộn, bất kể nội dung có tràn hay không. Điều này đôi khi gây thừa thãi nhưng có thể hữu ích khi muốn người dùng biết ngay rằng nội dung có thể cuộn được.

2. Làm sao để ẩn thanh scroll nhưng vẫn cuộn được?

Trong một số thiết kế, bạn muốn nội dung có thể cuộn nhưng không muốn hiển thị thanh cuộn để giao diện đẹp hơn. Cách phổ biến là sử dụng CSS ẩn thanh cuộn tùy theo trình duyệt. Ví dụ, trên trình duyệt WebKit, bạn có thể dùng:

.scroll - box {

    overflow: auto;

}

.scroll - box::-webkit-scrollbar {

    display: none; /* Ẩn scrollbar trên Chrome, Safari */

}

Đồng thời vẫn giữ khả năng cuộn bằng chuột, touchpad hoặc gesture trên mobile. Đây là giải pháp hữu ích cho các slider, carousel hoặc card nội dung trong layout hiện đại.

3. Sử dụng thuộc tính overflow có ảnh hưởng đến SEO không?

Không. Thuộc tính overflow chỉ ảnh hưởng đến cách nội dung được hiển thị trong trình duyệt, không ảnh hưởng trực tiếp đến khả năng lập chỉ mục của công cụ tìm kiếm. Các phần tử bị ẩn bằng overflow: hidden vẫn được Google và các công cụ SEO khác đọc được, miễn là nội dung đó có trong DOM. Tuy nhiên để trải nghiệm người dùng tốt hơn, bạn nên kết hợp overflow với thiết kế responsive, tránh cắt mất nội dung quan trọng, vì trải nghiệm người dùng cũng là một yếu tố gián tiếp ảnh hưởng đến SEO.


Một số câu hỏi về CSS Overflow


Qua bài viết của Phương Nam Vina, CSS overflow là một công cụ quan trọng trong kiểm soát cách nội dung tràn ra ngoài container, từ việc tạo vùng cuộn, ẩn nội dung dư thừa đến xử lý text dài hay media không đúng tỷ lệ. Hiểu rõ các giá trị cơ bản như visible, hidden, scroll, auto cùng các thuộc tính nâng cao như overflow-x, overflow-y, text-overflow, overflow-wrap hay scroll-behavior sẽ giúp bạn tối ưu giao diện web, giữ layout gọn gàng và nâng cao trải nghiệm người dùng. Khi kết hợp đúng cách, overflow không chỉ giữ bố cục ổn định mà còn làm cho trang web trở nên chuyên nghiệp, responsive và thân thiện với người dùng.

Tham khảo thêm:

icon thiết kế website Toàn tập về CSS transitions trong thiết kế web hiện đại

icon thiết kế website CSS Gradient là gì? Cách tạo hiệu ứng màu sắc với Gradient CSS

icon thiết kế website CSS float là gì? Cách hoạt động và sử dụng hiệu quả cho website

Bài viết mới nhất

Kích thước name card chuẩn là bao nhiêu? Cập nhật mới nhất

Kích thước name card chuẩn là bao nhiêu? Cập nhật mới nhất

Thiết kế đẹp có thể thu hút ánh nhìn, nhưng kích thước name card chuẩn xác mới là yếu tố quyết định sự chuyên nghiệp và tinh tế của người sở hữu.

Minify là gì? Cách Minify CSS, JavaScript, HTML cho website

Minify là gì? Cách Minify CSS, JavaScript, HTML cho website

Tổng hợp các cách Minify CSS, JavaScript và HTML cho website từ phương pháp thủ công dành cho người mới đến tự động hóa trong môi trường production.

CSS Gradient là gì? Cách tạo hiệu ứng màu sắc với Gradient CSS

CSS Gradient là gì? Cách tạo hiệu ứng màu sắc với Gradient CSS

CSS Gradient giúp web của bạn đẹp hơn mà không cần hình ảnh, tạo hiệu ứng màu sắc mượt mà, sinh động và trực quan cho nền, chữ, banner và nút bấm.

 
Scroll depth là gì? Cách đo lường và tối ưu scroll depth

Scroll depth là gì? Cách đo lường và tối ưu scroll depth

Chỉ số scroll depth là thước đo cho phép theo dõi mức độ đọc người dùng, giúp tối ưu UX, giữ khách lâu hơn và nâng cao hiệu quả nội dung trên web.

Interaction design là gì? Cẩm nang toàn tập về thiết kế tương tác

Interaction design là gì? Cẩm nang toàn tập về thiết kế tương tác

Một website có thiết kế interaction design tốt giúp website trực quan, dễ sử dụng, từ đó tăng trải nghiệm người dùng và nâng cao tỷ lệ chuyển đổi.

Cross-browser compatibility là gì? Cách tối ưu web đa trình duyệt

Cross-browser compatibility là gì? Cách tối ưu web đa trình duyệt

Tối ưu cross-browser compatibility giúp website tiếp cận 100% người dùng trên các trình duyệt và thiết bị, giảm tỷ lệ thoát trang và cải thiện SEO. 

zalo