Menu

Text shadow CSS: cú pháp, hiệu ứng phát sáng, viền và ví dụ

text-shadow vẽ một hoặc nhiều bóng phía sau chữ. Tìm hiểu bốn giá trị (độ lệch x, độ lệch y, độ nhòe, màu), cách xếp chồng nhiều bóng để tạo hiệu ứng phát sáng, viền chữ và chữ 3D, và cách dùng bóng để giữ chữ dễ đọc trên nền rối mắt.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

text-shadow hoạt động thế nào

text-shadow vẽ một bản sao của chữ phía sau nó, được dịch đi và làm nhòe. Bạn cho nó độ lệch ngang, độ lệch dọc, độ nhòe (không bắt buộc) và một màu.

3px 3px 0 #f59e0b nghĩa là dịch sang phải 3px (theo hướng vật lý, với mọi hướng viết), xuống dưới 3px, không nhòe, màu hổ phách. Bóng thứ hai nhòe 6px và dùng màu đen bán trong suốt, đây là công thức quen thuộc để tạo chiều sâu nhẹ nhàng.

Cú pháp

text-shadow: <offset-x> <offset-y> <blur-radius>? <color>?;
Giá trịBắt buộcÝ nghĩa
offset-xCóSố dương dịch bóng sang phải, số âm dịch sang trái
offset-yCóSố dương dịch xuống dưới, số âm dịch lên trên
blur-radiusKhông (mặc định 0)Độ mềm của mép bóng; giá trị âm không hợp lệ
colorKhông (mặc định là màu chữ)Có thể đứng đầu hoặc đứng cuối

text-shadow: none gỡ bỏ bóng được kế thừa. Thay đổi các giá trị bên dưới để xem tác dụng của từng giá trị:

Thử -4px -4px 0 #16a34a, 0 0 10px red và hai bóng ngăn cách bằng dấu phẩy.

Nhiều lớp bóng: phát sáng, viền chữ và 3D

Dấu phẩy giúp xếp chồng các bóng; bóng đầu tiên được vẽ trên cùng. Chỉ với quy tắc đó, bạn có ba hiệu ứng:

  • Phát sáng: độ lệch bằng 0, độ nhòe tăng dần, trên nền tối.
  • Viền chữ: bốn bóng sắc nét, mỗi bóng theo một đường chéo. Cách này hợp với viền mảnh; muốn viền dày và đều hơn, -webkit-text-stroke: 2px #111827 (được mọi trình duyệt hiện nay hỗ trợ dù có tiền tố) sẽ vẽ nét viền ngay trên mép chữ.
  • 3D: một loạt bóng sắc nét, mỗi bóng lệch thêm 1px, khiến chữ trông như được đùn nổi lên.

Giữ chữ dễ đọc trên nền rối mắt

Chữ trắng trên ảnh hoặc họa tiết sẽ mất mép ở những chỗ nền sáng. Một bóng tối và mềm giúp lấy lại đường nét mà không cần thêm khung nền nào:

Bóng có ích, nhưng không đảm bảo đủ độ tương phản. Với đoạn chữ dài trên ảnh, hãy thêm một lớp phủ màu đặc hoặc gradient phía sau chữ.

text-shadow và box-shadow

text-shadowbox-shadow
Bám theoHình dạng chữ cáiKhung của phần tử (và bo góc của nó)
Giá trị spreadKhôngCó
insetKhôngCó
Nhiều bóng, ngăn cách bằng dấu phẩyCóCó

Để đổ bóng cho thẻ (card) và nút, xem box-shadow.

Lỗi thường gặp

  • Bóng đậm, tối trên chữ nội dung. Chúng làm nhòe hình dạng chữ. Chỉ nên dùng bóng cho tiêu đề và nhãn ngắn.
  • Quên độ lệch thứ hai. text-shadow: 2px #000 không hợp lệ; cả hai độ lệch đều bắt buộc.
  • Độ nhòe âm. Giá trị này không hợp lệ và cả khai báo bị bỏ qua.
  • Tưởng bóng chiếm chỗ. Bóng chỉ được vẽ lên; bóng lớn có thể đè lên dòng kế tiếp hoặc bị cắt bởi overflow: hidden.
  • Hiệu ứng phát sáng trên nền sáng. Ánh sáng nhạt trên nền trắng gần như vô hình. Hiệu ứng phát sáng cần nền tối.

Câu hỏi thường gặp

Cú pháp của text-shadow là gì?

text-shadow: offset-x offset-y blur-radius color;, ví dụ text-shadow: 2px 2px 4px rgb(0 0 0 / 40%);. Hai độ lệch là bắt buộc; độ nhòe mặc định là 0 và màu mặc định là màu chữ.

Làm sao thêm nhiều text shadow cùng lúc?

Ngăn cách các bóng bằng dấu phẩy: text-shadow: 0 0 4px #fff, 0 0 12px #2563eb;. Bóng viết đầu tiên được vẽ nằm trên các bóng phía sau.

Làm sao tạo hiệu ứng chữ phát sáng?

Dùng các bóng không có độ lệch và có độ nhòe, thường là vài bóng với độ nhòe tăng dần: text-shadow: 0 0 4px #60a5fa, 0 0 12px #2563eb;. Trên nền tối, nó trông như ánh đèn neon.

text-shadow có giá trị spread như box-shadow không?

Không. text-shadow không có spread và không có từ khóa inset. Muốn bóng dày hơn quanh các chữ cái, hãy xếp chồng nhiều bóng hoặc dùng -webkit-text-stroke để tạo viền.

text-shadow có ảnh hưởng tới bố cục không?

Không. Bóng chỉ được vẽ lên; nó không chiếm chỗ và không đẩy nội dung xung quanh, nên một bóng lớn có thể đè lên các phần tử gần đó.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu