为什么呢?类似 &br;
这样的东西不更加合适吗?
HTML实体引用(entity reference)根据HTML版本的不同,可以是SGML实体或XML实体(HTML从底层技术继承了实体)。实体是一种将在文档其他地方定义好的内容块插入文档中的方式。
所有HTML实体都是单个字符实体,因此基本上与字符引用相同(从技术上讲,它们与字符引用不同,但由于没有定义多字符实体,因此这种区别对HTML没有影响)。
例如,当HTML处理器看到—
时,它会使用DTD中的相关部分,将其替换为该实体引用的内容和适当的实体。
<!ENTITY mdash CDATA "—" -- em dash, U+2014 ISOpub -->
所以它用实体引用替换了实体—
,而这个实体引用又被字符—
(U+2014)替换。实际上,除非你正在使用不直接理解HTML的通用XML或SGML处理器,否则这将在一步完成。<br/>
相同),因为它们是空格字符,在大多数HTML代码中并不重要。这对于编写HTML来说是件好事情,因为如果我们不能在源代码中格式化可读性,那么编写HTML将会更加困难。<br/>
元素,并将其相关标记放入源代码中。<br>
是语义换行的指示。(现在,如果你能抨击一下那些认为<br><br>
可以替代<p>
的白痴人士,我的一天就完美了... ;-)) - Donal Fellows<br>
标签存在的原因是 HTML 折叠空格。需要一种方法来指定一个硬换行 - 必须换行的位置。这就是 <br>
标签的作用。U+2028 LINE SEPARATOR
具有类似的含义,即使将其用于换行也没有帮助,因为它被认为是空格,HTML 会折叠它。&br;
字符实体引用:换行的定义方式可能包含多个字符,请参见 HTML 4 规范:换行定义为回车符(
)、换行符(

)或回车符/换行符对。
字符实体引用是一个 SGML 构造,它引用了文档字符集中的一个字符。
你会发现所有已定义的字符实体都映射到了单个字符。换行符/新行无法通过这种方式进行清晰的映射,因此需要使用实体而不是字符实体引用。
这就是为什么换行符不能由字符实体引用表示的原因。
不过,这并不重要,因为只需使用 Enter 键即可插入换行符。
&br;
是一个实体引用,而不仅仅是一个字符引用。它确实可以表示不止一个字符。 - Gumbo\r\n
作为行尾无关。 - John Kugelman<pre>
元素中),不同的行尾符号都会被规范化,因此不会造成任何问题。这个回答完全是误导性的。 - Jon Hanna—
代表“—”)或需要转义的字符(&
代表“&”)。一个假设的&br;
实体代表什么?\r
、\n
或\r\n
,因为这些已经很容易输入了(只需按回车键即可)。你要解决的问题是,HTML在大多数情况下会折叠空白,并将换行符视为空格。也就是说,\n
不是换行符,它只是像制表符和空格一样的空白字符。&br;
必须被替换为其他文本。你要使用哪个字符来代表“硬换行”的概念?标准的换行符\n
恰好是正确的字符,但不幸的是它不适合,因为它被放入通用的“空白字符”桶中。你要么重载其他控制字符来表示“硬换行”,要么使用一些扩展的Unicode字符。当HTML设计时,Unicode还只是一个新兴的、正在发展的标准,所以那不是一个选择。
<br>
元素是向文档添加“硬换行”概念的简单、直接的方法,因为没有任何字符可以代表该概念。
)、换行符(

)或回车符/换行符对。所有换行符都构成空格。PRE
元素之外的所有HTML元素,空格序列将单词(这里我们使用术语“单词”表示“非空格字符序列”)。[...]
[...]
请注意,在源文档中单词之间的一系列空格可能会导致完全不同的渲染间隔(除了PRE
元素的情况)。特别是,用户代理应在生成输出间隔字时折叠输入空格序列。[...]这意味着在HTML中没有普通字符或普通字符序列来标记换行。这就是为什么有请注意,尽管


和

在[ISO10646]中被定义为分别明确地分隔行和段落,但它们在HTML中不构成换行符号[...]。
BR
元素的原因。&br;
而不是<br>
,您只需要声明实体br来表示值<br>
:<!ENTITY br "<br>">
<br>
)替换每一个出现的实体引用&br;
。例如一个文档:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd" [
<!ENTITY br "<br>">
]>
<HTML>
<HEAD>
<TITLE>My first HTML document</TITLE>
</HEAD>
<BODY>
<P>Hello &br;world!
</BODY>
</HTML>
<br>
,因此他们必须将其定义为<pre>&#a;</pre>
。 - Jon Hanna实体是内容,标签则是结构或布局(非常粗略地说)。似乎制作 <br>
标签的人认为换行更多地与结构和布局有关,而不是与内容有关。由于无法实际“看到”<br>
,我倾向于同意这种观点。哦,我是边写边想的,所以请随意反驳;)
<EM>
标签为例,它告诉用户代理应该强调放置在开放和关闭<EM>
标签之间的任何文本,但它并没有规定这种强调应该如何呈现。是的,大多数视觉Web浏览器会把文本显示为斜体,但这只是一种约定。其他浏览器,例如单色纯文本浏览器,可能会将文本显示为相反的颜色。屏幕阅读器可能会用更响亮的声音读出文本,或改变发音。搜索引擎蜘蛛可能会认为该文本比其他元素更重要。<BR>
标签——它不仅仅是另一个字符实体,它实际上代表了文档结构中的换行。一个<BR>
不仅仅是换行符的替代品,而是文档及其结构的“语义”部分。这类似于<H1>
不仅仅是使文本变大、变粗的一种方式,而是文档结构的一个重要组成部分。br
元素可以进行样式设置。那么你该如何对一个HTML实体进行样式设置呢?由于它们是元素,因此更加灵活。
<br />
元素进行样式设置是一种hack方法;系统并没有为容纳hack而构建,hack是为了绕过系统而构建的。 - Richard JP Le Guen<br style="clear: both" />
不能够用更好的CSS和更有效的HTML元素标识符来实现的。就我个人而言,我认为这是一种hack(不正规的解决方法)。 - Richard JP Le Guen是的。HTML实体更合适,因为换行标签不能包含文本,并且表现得很像换行符。
但事实并非如此。太晚了。由于未关闭的换行标签,我不知道有多少不兼容XML的HTML文档需要处理...
br
标签不应该被使用。 - Yi Jiang