Menu

Thẻ span trong HTML: định dạng một phần chữ, div và span

Thẻ <span> là một khối chứa inline chung: nó bọc vài từ bên trong một dòng để bạn định dạng hoặc thao tác bằng script mà không làm ngắt dòng. Tìm hiểu cách dùng span, span khác div thế nào, và khi nào một thẻ cụ thể hơn sẽ phù hợp hơn.

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.

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ốiInline
Bắt đầu dòng mớiCóKhông
Chiều rộngToàn bộ chiều rộng còn trốngRộng bằng nội dung
width, height, margin chiều dọcCó tác dụngBị bỏ qua
Có thể chứaMọi thứ, kể cả phần tử khốiChỉ chữ và phần tử inline
Cách dùng điển hìnhCác phần, thẻ, lớp bọc bố cụcMộ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ĩaDù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 width cho span thường. Giá trị này bị bỏ qua. Hãy dùng display: 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ó onclick khô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.

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