- vừa được xem lúc

Xử lý text trong CSS như thế nào?

0 0 31

Người đăng: Pham Thi Ngoc Mai

Theo Viblo Asia

Chào các bạn!

Đã bao giờ các bạn đau đầu trong việc xử lý text dài ngắn hay không? Chẳng hạn có một số trường hợp như thế này:

  • Text nó cứ kéo dài mãi, bị tràn sang cả khu vực khác, muốn nó tự nhảy xuống dòng mà không được?
  • Muốn ẩn bớt text khi tới 1 giới hạn nào đó?
  • Hoặc là muốn ẩn bớt text nhưng vẫn có thêm dấu ... để người khác biết là vẫn còn text thừa phía sau? Vân vân và mây mấy số trường hợp...

Thực ra đây cũng là vấn đề của rất nhiều người. Bản thân mình khi chưa có kinh nghiệm về mấy cái này thì thường hay lạm dụng jquery để check các case. Tuy nhiên sau khi phát hiện ra 1 số thuộc tính với cách sử dụng vô cùng đơn giản thì mình đã quăng jquery ra sau đầu ngay và luôn. Bây giờ cùng đi vào bài viết nhé.

1. Text Overflow

Thuộc tính text-overflow dùng để xử lý một đoạn text bị tràn ra ngoài phần tử chứa nó bằng cách cắt bớt đoạn tràn hoặc hiển thị dưới dạng dấu chấm lửng "..." để làm dấu hiệu cho người dùng.

Hai giá trị thường dùng nhất là:

  • clip: cắt bớt đoạn text bị tràn ra ngoài (mặc định).
  • ellipsis: thêm ba dấu chấm (...) nếu text bị tràn ra ngoài. Hai thuộc tính đi kèm text-overflow là:
white-space: nowrap;
overflow: hidden;

Ngoài ra còn có 2 giá trị khác:

  • initial : thiết lập giá trị mặc định
  • inherit : kế thừa giá trị từ thẻ HTML cha.

Cú pháp: text-overflow: clip|ellipsis|string|initial|inherit;


.text { white-space: nowrap; width: 200px; overflow: hidden; border: 1px solid #000000;
} div.a { text-overflow: clip; } div.b { text-overflow: ellipsis; }

Kết quả hiển thị sẽ như thế này:

Vậy để xem lại đoạn text đầy đủ thì làm như thế nào?

.text:hover { overflow: visible;
}

2. Word Wrap

Thuộc tính word-wrap cho phép đoạn text xuống hàng cho dù chữ đó dài cỡ nào đi nữa.

Cú pháp: word-wrap: normal|break-word|initial|inherit;

Trong đó:

  • normal: hiển thị theo mặc định, từ dài có thể bị tràn ra ngoài box (mặc định)
  • break-word: đoạn text nhảy xuống dòng nếu chữ quá dài, tuy nhiên có thể gây hiện tượng đứt gãy từ.
  • initial: trở về trang thái mặc định
  • inherit : kế thừa giá trị từ thẻ HTML cha
div { width: 250px; border: 1px solid #000000;
} div.a { word-wrap: normal;
} div.b { word-wrap: break-word;
}

Kết quả hiển thị như thế này

3. Word Break

Word-wrap xác định có xuống dòng hay không, còn thuộc tính work-break xác định kiểu xuống dòng.

Các giá trị thường thấy là:

  • normal: hiển thị theo mặc định, từ dài có thể bị tràn ra ngoài box (mặc định)
  • keep-all: không sử dụng với các đoạn text tiếng Trung Quốc/Nhật Bản/Hàn Quốc (CJK), chức năng tương tự với normal. Khác biệt ở chỗ nếu từ có gạch nối sẽ được xuống dòng tại một vị trí thích hợp.
  • break-all: khi hết đoạn thì một từ sẽ tự động ngắt ở bất kỳ ký tự nào để xuống dòng, có thể gây hiện tượng đứt gãy từ.
  • break-word: khi hết đoạn thì sẽ tự động ngắt ở bất kỳ từ nào để xuống dòng. Nếu là văn bản bình thường, ta sẽ dùng break-word nhiều hơn, còn break-all thường chỉ dùng cho số (nếu có).

Cú pháp: word-break: normal|break-all|keep-all|break-word

div { width: 250px; border: 1px solid #000000;
} div.a { word-break: normal;
} div.b { word-break: keep-all;
} div.c { word-break: break-all;
} div.d { word-break: break-word;
}

4. Writing Mode

Thuộc tính writing-mode sử dụng để định kiểu cho đoạn text được đặt theo chiều ngang hay chiều dọc.

Các giá trị của writing-mode:

  • horizontal-tb: đoạn text sẽ được đặt theo chiều ngang từ trái sang phải, đọc từ trên xuống dưới (mặc định).
  • vertical-rl: đoạn text được đặt theo chiều dọc từ phải sang trái, đọc từ trên xuống dưới.
  • vertical-lr: đoạn text được đặt theo chiều dọc từ trái sang phải, đọc từ trên xuống dưới.

Cú pháp: writing-mode: horizontal-tb|vertical-rl|vertical-lr

p.test1 { writing-mode: horizontal-tb; width: 300px; border: 4px double red; padding: 15px;
} p.test2 { writing-mode: vertical-rl; height: 200px; margin-right: 50px; border: 4px double navy; padding: 15px;
} p.test3 { writing-mode: vertical-lr; height: 200px; border: 4px double green; padding: 15px;
}

Kết quả hiển thị như sau:

Như vậy qua bài viết bài của mình, có lẽ các bạn cũng đã hiểu được sơ sơ cách xử lý text sao cho đẹp, đơn giản và nhanh chóng rồi nhỉ. Chúc các bạn thành công!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 518

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 390

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 722

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 350

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 440

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 429