Menu

Xuống dòng trong HTML: thẻ br, ký tự xuống dòng và điểm ngắt

Dùng <br> để bắt đầu một dòng mới bên trong một khối văn bản. Tìm hiểu khi nào <br> là đúng và khi nào nên dùng đoạn văn, cách giữ ký tự xuống dòng trong văn bản, cách cho từ dài được ngắt với <wbr> và cách ngăn một dòng bị ngắ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.

Cách xuống dòng

Đặt <br> vào chỗ bạn muốn dòng mới bắt đầu. Đây là phần tử rỗng nên không có thẻ đóng:

Địa chỉ được ngắt dòng đúng tại mỗi <br>. Đoạn thứ hai vẫn nằm trên một dòng dù mã nguồn có ký tự xuống dòng: HTML coi ký tự xuống dòng, tab và chuỗi khoảng trắng liên tiếp là một khoảng trắng duy nhất. Đó là lý do <br> tồn tại.

<br>, <br/> và <br /> đều tạo ra cùng một phần tử. Hãy dùng dạng mà dự án của bạn đang dùng (JSX và XHTML bắt buộc có dấu gạch chéo).

br và p: ngắt dòng không phải là tạo khoảng cách

<br> kết thúc một dòng bên trong cùng một đoạn văn. Một thẻ <p> mới bắt đầu một đoạn văn mới, có khoảng cách phía trên và phía dưới từ margin mặc định. Xếp chồng nhiều thẻ <br> để tạo khoảng cách vẫn chạy, nhưng dễ vỡ và mang sai ý nghĩa:

Hai khung trông gần giống nhau, nhưng với trình đọc màn hình thì khung đầu chỉ là một đoạn văn, và muốn đổi khoảng cách thì phải sửa từng trang. Ở khung thứ hai, khoảng cách chỉ là một dòng CSS.

Những chỗ nên dùng <br>: địa chỉ, thơ và lời bài hát, các dòng trong chữ ký, nơi việc xuống dòng thuộc về chính văn bản. Với mọi thứ khác, hãy dùng đoạn văn, danh sách hoặc tiêu đề.

Giữ ký tự xuống dòng trong văn bản

Khi văn bản đến từ nơi khác (một ô bình luận, cơ sở dữ liệu, một script), nó chứa ký tự xuống dòng thật thay vì thẻ <br>. Thuộc tính CSS white-space: pre-line khiến trình duyệt hiển thị các ký tự đó thành những lần xuống dòng:

Cùng một chuỗi hiện trên một dòng trong khung xám và trên ba dòng trong khung xanh. Cách này cũng an toàn hơn việc chèn thẻ <br> vào văn bản của người dùng bằng innerHTML, vốn cho phép người dùng chèn HTML vào trang. Để giữ cả khoảng trắng và thụt lề, dùng white-space: pre, được giới thiệu ở trang khoảng trắng trong HTML.

Cho từ dài được ngắt: wbr

Một từ hoặc URL dài không có khoảng trắng có thể tràn ra khỏi một khung hẹp. <wbr> đánh dấu chỗ mà trình duyệt được phép ngắt dòng khi cần, và không làm gì trong các trường hợp khác:

Đường dẫn đầu tiên tràn ra ngoài khung; đường dẫn thứ hai được ngắt tại các điểm <wbr>. Với văn bản bạn không kiểm soát được, thuộc tính CSS overflow-wrap: anywhere sẽ ngắt từ dài ở bất kỳ chỗ nào.

Ngăn một dòng bị ngắt

Đôi khi bạn muốn điều ngược lại: giữ "10 km" hay một số điện thoại liền nhau. Có hai công cụ:

&nbsp; là một khoảng trắng mà trình duyệt sẽ không ngắt dòng tại đó, nên "10" và "km" luôn đi cùng nhau. white-space: nowrap giữ cả một span trên một dòng. Thay &nbsp; bằng khoảng trắng thường, hoặc bỏ class đi, thì ở độ rộng này cả hai đều bị tách ra hai dòng.

Lỗi thường gặp

  • Nhấn Enter trong mã nguồn và mong có dòng mới. Ký tự xuống dòng trong HTML là khoảng trắng. Dùng <br>, các phần tử riêng hoặc white-space: pre-line.
  • Xếp chồng <br><br><br> để tạo khoảng cách. Dùng đoạn văn và margin.
  • Dùng <br> để tạo danh sách. Dùng <ul> hoặc <ol> với <li>, thứ mà trình đọc màn hình đọc như một danh sách.
  • Viết </br>. Cách viết này không hợp lệ. Hãy viết <br>.
  • Thêm <br> vào văn bản của người dùng bằng innerHTML. Thay vào đó, gán textContent và dùng white-space: pre-line.

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

Làm sao xuống dòng trong HTML?

Chèn <br> vào chỗ dòng mới cần bắt đầu: Line one<br>Line two. Nhấn Enter trong tệp HTML không có tác dụng, vì trình duyệt coi ký tự xuống dòng trong mã nguồn là khoảng trắng bình thường.

Nên viết <br>, <br/> hay <br />?

Cả ba đều chạy được trong HTML và tạo ra cùng một phần tử. <br> là dạng HTML thuần; các dạng có dấu gạch chéo được chấp nhận để tương thích với XHTML và JSX. Riêng </br> là không hợp lệ, dù trình duyệt vẫn đọc nó như một lần xuống dòng nữa.

Khi nào nên dùng <br> thay vì <p>?

Dùng <br> khi việc xuống dòng là một phần của chính nội dung, như trong địa chỉ hay bài thơ. Dùng các phần tử <p> riêng cho từng đoạn văn, và margin trong CSS để tạo khoảng cách, thay vì xếp chồng nhiều thẻ <br>.

Làm sao giữ các lần xuống dòng trong văn bản mà không cần thêm thẻ <br>?

Gán cho phần tử white-space: pre-line trong CSS. Khi đó trình duyệt hiển thị mọi ký tự xuống dòng trong văn bản thành một lần xuống dòng, nhưng vẫn gộp các khoảng trắng thừa. Cách này rất tiện cho bình luận của người dùng và văn bản được nạp bằng JavaScript.

Làm sao ngăn xuống dòng trong HTML?

Bọc văn bản trong một phần tử có white-space: nowrap, hoặc nối hai từ bằng khoảng trắng không ngắt &nbsp; để chúng luôn nằm trên cùng một dòng.

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