Showing posts with label HTML Bug & Solution. Show all posts

Tràn văn bản trong thiết kế? | Overflowing with Text?

Trong các thiết kế web thông thường ta sẽ dễ thây nhất một số lỗi văn bản tran ra khỏi vùng thiết kế được chỉ định dẫn tới ảnh hưởng tới toàn bộ bố cục thiết kế của chúng ta. Đối một một số designer lâu năm thì đây là một vấn đề vô cùng bình thương thường, nhưng với mốt newbie(người mới) trong lĩnh vực thiết kế CSS thì nó có thể là một điều gì đó khó khăng. Để giúp các bạn mới đầu học thiết kế web hoặc CSS hiểu rõ hơn về vấn đề này nên tôi viết bài hướng dẫn này có gì thiết xót thì rất mong nhận được ý kiến phản hồi từ các bạn để cùng nhau học tập.

Như bạn thấy với đoạn text trong div thì nó hiển thị hoàn toàn hợp lệ vì không bị tràn ra khỏi chiều dài 10em được định nghĩa.

Đây là một văn bản dài nhưng không bị tràn qua chiều rộng vùng div.

<div style="width: 10em;border:1px solid #ccc">
    Đây là một văn bản dài nhưng không bị tràn qua chiều rộng vùng div.
</div>

Tuy nhiên nếu trong văn bản trên xuất hiện một từ có chiều dài qua 10em thì bạn sẽ nhập được một thiết kế bị lỗi vì nó vượt qua chiều dài 10em đã được định nghĩa.

Đây là một văn bản dài bị tràn qua chiều rộng vùng div có mã số là AVCDFE_6489846546_DSFDSFSD

<div style="width: 10em;border:1px solid #ccc">
    Đây là một văn bản dài bị tràn qua chiều rộng vùng div có mã số  là AVCDFE_6489846546_DSFDSFSD
</div>

Đây một lỗi do từ quá dài mà tôi đã trình bài trước đây trong bài viết Làm thế nào để một từ dài trong div xuống dòng?, để giải quyết trường hợp này ta có 2 giải pháp môt là ẩn đi các ký từ có chiều dài lớn hơn 10em bằng thuộc tính "overflow-x: hidden", tuy nhiên đây là một giải pháp không trọn vẹn, nên thay vào đó đó người ta sẽ dùng thuộc tính "word-wrap: break-word" để giải quyết trường hợp này. Để hiểu hơn bạn hãy xem hai ví dụ bên dưới.

Đây là một văn bản dài nhưng không bị tràn qua chiều rộng vùng div có mã số là AVCDFE_6489846546_DSFDSFSD

Đây là một văn bản dài nhưng không bị tràn qua chiều rộng vùng div có mã số là AVCDFE_6489846546_DSFDSFSD

Phía trên tôi đã nói về chiều rộng(width) nhưng nếu gặp trường hợp chiều cao (height) như ví dụ bên dưới thì phải làm thế nào?

Đây là một văn bản dài bị tràn qua chiều cao vùng div có mã số là AVCDFE_6489846546_DSFDSFSD






 <div style="width: 10em;border:1px solid #ccc;height: 1.2em;">
    Đây là một văn bản dài bị tràn qua chiều cao vùng div có mã số  là AVCDFE_6489846546_DSFDSFSD
</div>

Tương tự như một giải pháp trên chiều rộng (width) ta có thể ẩn các đoạn văn bản bị tràn ra khỏi chiều cao (height) bằng "overflow-y: hidden" được định nghĩa như sau.

Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số là AVCDFE_6489846546_DSFDSFSD

<div style="width: 10em;border:1px solid #ccc;height: 1.2em;overflow-y: hidden;">
    Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số  là AVCDFE_6489846546_DSFDSFSD
</div>

Thông thường chiều cao được định nghĩa mặc định là auto tự động co giãn, vì khi một người đọc thông thường thì không ai mong muốn đọc tin theo một chiều dài xòng sọc mà sẽ là đọc từ trên xuống dưới, vì vậy không ai lại chọn giải pháp cố định chiều cao (height) và để chiều dài auto để giải quyết trường hợp này.

Thay vào đó người ta sẽ chọn giải pháp là tạo thanh scroll để giải quyết trường hợp chiều cao (height) bị giới hạn cùng với chiều rộng (widht) bị giới hạn.

Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số là AVCDFE_6489846546_DSFDSFSD

<div style="width: 10em; height: 1.2em; border: 1px solid #ccc; padding: 1em; overflow: scroll;">
    Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số  là AVCDFE_6489846546_DSFDSFSD
</div>

Sẵn đây xin giới thiệu với các bạn một phương khác, nó tượng tự như overflow-x: hidden, nhưng ở đây ta sẽ thấy thêm dấu 3 chấm (...) tương trưng cho việc đoạn vẵn bản này vẫn còn tiếp và có thể ta sẽ kết hợp với một button nào đó để khi người dùng click vào nó sẽ hiển thị toàn bộ văn bản ở một vị trí nào đó, như message box chẳng hạn.

Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số là AVCDFE_6489846546_DSFDSFSD
Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số là AVCDFE_6489846546_DSFDSFSD

<div style="width: 10em; height: 4.2em; border: 1px solid #ccc; overflow: hidden; text-overflow: ellipsis;white-space: nowrap;">
    Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số  là AVCDFE_6489846546_DSFDSFSD
    <br/>Đây là một văn bản dài nhưng không bị tràn qua chiều cao vùng div có mã số  là AVCDFE_6489846546_DSFDSFSD
</div>

Hi vọng qua bài viết này sẽ giúp các hạn hiểu hơn vấn đế tràn văn bản trong thiết kế website. Nếu bạn viết hữu ích cho bạn thì hay like hoặc g+ để ủng hộ blog của mình ^^!


Làm thế nào để một từ dài trong div xuống dòng? How to word-wrap/break-word long word in div?

Trong khi thiết kế một một trang web thông thường ta có thể gặp một số vần đề việc một chữ quá dài(ví dụ như một dòng mã nào đó), dài hơn chiều dài của một div được định nghĩa dẫn tới việc nó tràn ra ngoài thẻ div, ví dụ như hình bên dưới.

Sử dụng viewport-percentage tạo một div có chiều cao là 100% theo trình duyệt web? | How to use viewport-percentage lengths make div 100% height of browser web window?

Trong một vài thiết kế, bạn sẽ mong muốn tạo một div mà trong đó chiều cao của nó luôn được thể hiện 100% giống với kích thước của trình duyệt web, và khi trình duyệt thay đổi chiều cao thì chiều cao của div sẽ được thay đổi theo. Bài viết này sẽ hướng dẫn sử dụng thông số viewport-percentage để xử lý vấn đề này.

Tạo một div có chiều cao là 100% theo trình duyệt web? | How to make div 100% height of browser web window?

Chắc có một vài bạn khi thiết kế web sử dụng thông số "Height: 100%" với mong muốn là vùng div này sẽ được hiển thị với chiều cao tương ứng với trình duyệt web, nhưng kết quả lại không được như mong muốn. Bài viết này sẽ hướng dẫn cách xử lý vấn đề này.