虽然略有不同,这个问题does not seem to be new,但链接中给出的唯一答案却相当简短而不是解释。
我正在创建一个ASP.NET MVC Web App,在我的cshtml
文件中,我有以下几行:
<text>@Html.ActionLink("Create New Employee", "Create")</text>
<br />
something else below
虽然我已经设置换行符,但结果是相同的,如果我不放任何<br />
,两者都会被渲染成以下结果:
请注意,“Mark”直接放在“Create New Employee”之后。结果与我只提出
时的结果相同<text>@Html.ActionLink("Create New Employee", "Create")</text>
no break here
something else below
没有<br/>
只有当我放置双<br />
时,才会使用额外的换行符进行渲染:
<text>@Html.ActionLink("Create New Employee", "Create")</text>
<br />
<br />
something else
导致:
现在,我对网络应用程序制作并不陌生,因此可能会有一些<br/>
标签的特殊属性,我不知道。当我在<br/>
或<h4>
之后使用<table>
时似乎没问题。但是,为什么当我在<text>
之前放置<ul>
时,它无法按照我的预期渲染?这个常见问题是放两个<br/>
而不是一个吗?
答案 0 :(得分:2)
代码中的something else below
似乎代表了无序列表(ul
)和一些列表项(li
),所以我猜你生成的HTML看起来像这样:
<a href="#">Create New Employee</a>
<ul>
<li><a href="#">Mark</a></li>
<li><a href="#">Luke</a></li>
</ul>
让我们调查一下发生了什么。 a
是内联元素。如this article:
另一方面,内联元素不会在新行上启动,只会占用 必要的宽度。
ul
元素是块级元素,并且如同一篇文章中所述
块级元素始终在新行上开始并占用 全宽可用(向左和向右延伸直至它 能)。
因此,根据上述说明,ul
始终从新行开始。如果您在br
之后未添加a
,则ul
会自动移至下一行。如果您添加br
,则无需将ul
移至新行,因为它已经存在。
总体而言 - ul
之前的换行似乎被忽略了,因为ul
是块级元素,它显示在新行上。
我创建了带有可见元素边框的jsFiddle,因此可以更清楚地看到发生了什么。