2012-02-06 54 views
16

thể trùng lặp:
Why is <br> an HTML element rather than an HTML entity?Tại sao là <br> một phần tử, không phải là một thực thể?

Tại sao là một ngắt dòng trong HTML một yếu tố <br> thay vì một thực thể, chẳng hạn như &br;? Theo nhiều cách, có vẻ như không phù hợp để trở thành một phần tử (ví dụ: có một thuộc tính loại nút khác với các phần tử HTML thông thường, tương tự như &nbsp; trong những gì nó làm).

+1

Bởi vì trong một số trường hợp, bạn có thể muốn vô hiệu hóa ngắt dòng và làm cho mọi thứ xuất hiện một dòng đơn. không thể tự động remap một ' ' thành một cái gì đó khác, nhưng bạn CÓ THỂ sử dụng css để tạo ra một '
' không thực hiện ngắt dòng. –

+0

trong trường hợp đó, hãy để tôi thuật lại câu hỏi của tôi: Tại sao   không phải là một thẻ? :) – wheresrhys

+0

Một điều tôi có thể nghĩ đến: khả năng tương thích. &br; dường như chỉ ra một ký tự đơn nhưng \ r \ n là chuỗi đúng trên Windoze, \ n đối với Linux, \ r dành cho Mac OS cũ. Tuy nhiên, một ký tự dấu cách không phá vỡ có ý nghĩa giống nhau trên tất cả các hệ thống (và là một điểm mã duy nhất). – darvids0n

Trả lời

-1

Từ các yếu tố spec *

BR đại diện cho một ngắt dòng.

Trong khi ngắt dòng thường được thể hiện trong môi trường trực quan bằng thể chất di chuyển văn bản tiếp theo cho một dòng sản phẩm mới, một phong cách trang ngừơi tiêu dùng đại lý sẽ không kém phần hợp lý trong việc gây ra ngắt dòng để được trả lại một cách khác nhau, ví dụ dưới dạng chấm màu xanh lục hoặc cách thêm khoảng cách.

Phần tử br chỉ được sử dụng cho các ngắt dòng thực sự là phần của nội dung, như trong bài thơ hoặc địa chỉ.

Vì vậy, nó nêu rõ rằng bạn có thể tạo kiểu ngắt dòng như một thứ gì đó khác, do đó giải thích tại sao nó không phải là một thực thể. Nó làm cho tôi nghĩ rằng cần có hai cách để thêm một ngắt dòng - như một thực thể &br; hoặc một thẻ <br>, do đó cho phép tác giả linh hoạt hơn cho dù ngắt dòng là có thể tạo kiểu hay không. Tuyên bố trên - tương đương với việc sử dụng các ngắt dòng trong thơ và địa chỉ - là một chút của một bàn chải rộng nếu bạn hỏi tôi.

* Không chắc nếu nó các spec, nhưng nó chắc chắn một đặc tả

+0

Và điều này sẽ xảy ra như thế nào? Bằng phép thuật? Điều gì sẽ '&br;' được mở rộng đến trong DTD mà sẽ hiển thị như là một ngắt dòng? –

11

Khoảng trắng trong HTML được hiển thị dưới dạng khoảng trắng một ký tự bất kể khoảng trắng. Điều này hỗ trợ quyền tác giả đánh dấu mà không ảnh hưởng đến hiển thị đánh dấu.

< br/> không phải là ký tự hiển thị, mà là trình định dạng định dạng khi định dạng ảnh hưởng đến ý nghĩa của nội dung. Thông số HTML 5 nói rằng "chỉ được sử dụng cho các ngắt dòng thực sự là một phần của nội dung, như trong bài thơ hoặc địa chỉ."

+3

Giải thích tuyệt vời. Phần tử '
' * bị sử dụng sai mục đích rộng rãi cho mục đích bố trí (ví dụ: mọi người sử dụng '

' thay vì các đoạn). – animuson

+0

Tôi vẫn không thấy lý do tại sao điều này có nghĩa là thẻ phải là một thẻ khi không có  . Như ai đó đã nhận xét ở trên, nếu bạn muốn bạn có thể tạo kiểu
để hiển thị không có CSS ​​(http://jsfiddle.net/XqdKE/), do đó thay đổi ý nghĩa của nội dung. Tôi biết rằng về mặt kỹ thuật, điều này không thay đổi ý nghĩa khi thay đổi CSS không phải là sự thay đổi trong đánh dấu, nhưng nếu một br được cho là có ý nghĩa nội tại phụ thuộc vào nó là một dòng mới, có vẻ như nó không thể thay đổi được cách này. – wheresrhys

+1

@wheresrhys - Tôi đồng ý. Trên cơ sở ngữ nghĩa hiện đại của '
', nó nghi ngờ liệu nó có được phát minh hay không. Chúng tôi có thể đã được dự kiến ​​sử dụng U + 2028 LINE SEPARATOR thay vào đó, có thể được ánh xạ tới '&br;'. Nhưng thiết kế của HTML hiếm khi bị cắt. Lịch sử và tiện lợi đóng một phần lớn ('
' hoạt động bất kể bộ ký tự là gì, và trừ khi bạn có thể thấy một vấn đề thực tế với cách thức hiện tại, tốt nhất là chấp nhận nó và đi với nó. – Alohci

Các vấn đề liên quan