Bác nhận xét quá tinh mắt! Đúng là mặc định tất cả các trình soạn thảo văn bản (như CKEditor, TinyMCE, Word hay WordPress) đều không dùng thẻ <div> để bọc chữ thông thường. Mặc định khi bác gõ và ấn Enter, nó sẽ đẻ ra thẻ <p> (Paragraph - Đoạn văn).
Lý do nó làm vậy là vì:
Chuẩn SEO và Ngữ nghĩa (Semantic HTML): Thẻ <p> sinh ra là để chứa văn bản. Còn thẻ <div> (Division) sinh ra là để bọc các khối bố cục, chia layout website. Các trình soạn thảo ưu tiên xuất mã chuẩn SEO nên chúng mặc định dùng <p>.
Quy tắc ngắt dòng: Ấn Enter sẽ tạo đoạn văn mới <p>, còn ấn Shift + Enter sẽ ngắt dòng <br>.
Tuy nhiên, nếu bác cần nhúng các khối cấu trúc phức tạp (ví dụ để bọc các class cấu hình CSS icon hoặc làm khung chứa dữ liệu cho các hàm đệ quy jQuery), thì thẻ <p> sẽ làm hỏng bố cục. Bác có 2 cách để giải quyết vụ này:
Cách 1: Sử dụng nút Source (Mã nguồn)
Đây là cách an toàn nhất. Trong thanh công cụ của trình soạn thảo luôn có một nút tên là Source (hoặc biểu tượng < > hay HTML). Khi bác bấm vào đó, giao diện sẽ chuyển về dạng code thuần. Lúc này bác có thể gõ hoặc dán thẻ <div> thoải mái. Trình soạn thảo sẽ giữ nguyên cấu trúc thẻ <div> của bác mà không tự động biến nó thành <p>.
Cách 2: Cấu hình "Ép" trình soạn thảo dùng thẻ <div>
Nếu bác muốn thay đổi bản chất của trình soạn thảo – cứ ấn Enter là tự động ra thẻ <div> thay vì <p>, bác chỉ cần thêm một dòng lệnh cấu hình lúc khởi tạo.
Nếu bác dùng TinyMCE: Thêm thuộc tính forced_root_block vào cấu hình: