Thẻ span làm gì
<span> bọc một đoạn chữ bên trong một dòng để bạn định dạng nó hoặc tìm nó bằng JavaScript. Nó là bản inline của <div>: không có ý nghĩa, không có giao diện mặc định, và không bắt đầu dòng mới.
Câu vẫn nằm trên một dòng. Chỉ những từ được bọc là thay đổi.
div và span
Hai thẻ này có cùng mục đích (một khối chứa không mang ý nghĩa) và khác nhau ở cách chúng nằm trên trang:
Div chia câu thành ba dòng và trải dài hết trang; span nằm yên trong câu và chỉ ôm sát chữ của nó.
<div> | <span> | |
|---|---|---|
| Hiển thị | Khối | Inline |
| Bắt đầu dòng mới | Có | Không |
| Chiều rộng | Toàn bộ chiều rộng còn trống | Rộng bằng nội dung |
width, height, margin chiều dọc | Có tác dụng | Bị bỏ qua |
| Có thể chứa | Mọi thứ, kể cả phần tử khối | Chỉ chữ và phần tử inline |
| Cách dùng điển hình | Các phần, thẻ, lớp bọc bố cục | Một từ hoặc cụm từ trong văn bản |
Thêm một khác biệt: <div> không được đặt bên trong <p>, và trình duyệt sẽ đóng đoạn văn sớm nếu bạn thử, còn span thì đặt được ở bất cứ đâu có chữ. Xem thêm ở trang div.
Định dạng span: cái gì có tác dụng, cái gì không
Màu, font, nền và padding theo chiều ngang đều có tác dụng trên span. Kích thước thì không: phần tử inline bỏ qua width, height và margin trên, dưới. Đổi nó thành inline-block để đặt kích thước mà vẫn giữ nó trong dòng:
Span đầu tiên chỉ rộng bằng các chữ của nó. Span thứ hai rộng đúng 120 và cao 40 pixel mà vẫn nằm trong câu.
Span với JavaScript
Span là chỗ giữ chỗ quen thuộc cho một giá trị do script điền vào, như bộ đếm hay tên người dùng:
Chỉ con số thay đổi; phần còn lại của câu giữ nguyên.
Khi nào một thẻ cụ thể tốt hơn span
Span không có ý nghĩa, nên trình đọc màn hình đọc nó như chữ thường. Khi các từ có một vai trò, hãy dùng thẻ dành cho vai trò đó và định dạng tùy ý:
| Ý nghĩa | Dùng thay cho span |
|---|---|
| Chữ quan trọng | <strong> |
| Nhấn mạnh | <em> |
| Chữ được tô sáng hoặc đánh dấu | <mark> |
| Code, tên tệp | <code> |
| Một phím trên bàn phím | <kbd> |
| Ngày hoặc giờ | <time datetime="2026-09-24"> |
| Chữ bằng ngôn ngữ khác | <span lang="fr"> (span cùng thuộc tính lang) |
Trang chữ đậm giải thích sự khác nhau giữa <strong>, <b>, <em> và <i>.
Lỗi thường gặp
- Đặt
widthcho span thường. Giá trị này bị bỏ qua. Hãy dùngdisplay: inline-block. - Đặt div hoặc đoạn văn bên trong span. HTML không hợp lệ và làm ngắt dòng. Đổi span bên ngoài thành div.
- Span bấm được. Giống div, span có
onclickkhông thể tới được bằng bàn phím. Hãy dùng<button>hoặc liên kết. - Mỗi kiểu định dạng một span. Nếu cả đoạn văn hay cả phần cần định dạng, hãy đặt class lên chính
<p>hoặc khối chứa thay vì bọc chữ bên trong bằng span.
Câu hỏi thường gặp
span trong HTML là gì?
<span> là một khối chứa inline chung. Nó bọc một phần của dòng chữ, chẳng hạn một từ, để CSS hoặc JavaScript nhắm tới được, và bản thân nó không có giao diện hay ý nghĩa riêng.
div và span khác nhau thế nào?
<div> là phần tử khối: nó bắt đầu ở dòng mới và chiếm toàn bộ chiều rộng. <span> là phần tử inline: nó nằm trong dòng chữ và chỉ rộng bằng nội dung của nó. Dùng div để nhóm các khối nội dung, span để đánh dấu các từ bên trong văn bản.
Vì sao width không có tác dụng trên span?
Phần tử inline bỏ qua width, height và margin theo chiều dọc. Cho span display: inline-block để nó vẫn nằm trong dòng mà nhận được kích thước, hoặc display: block để nó hoạt động như một div.
Làm sao đổi màu một từ trong HTML?
Bọc từ đó trong một span có class và tô màu bằng CSS: <span class="accent">word</span> cùng .accent { color: #2563eb; }. Khi chỉ cần dùng nhanh một lần, <span style="color: #2563eb">word</span> cũng được.
span có chứa div được không?
Không. Span chỉ được chứa nội dung inline như chữ, liên kết, hình ảnh và các span khác. Trình duyệt vẫn hiển thị div bên trong span, nhưng đó là HTML không hợp lệ và làm ngắt dòng, nên hãy đổi phần tử bên ngoài thành div.