cshtml文件中标记中的空白是否有意义?

cshtml文件中标记中的空白是否有意义?,html,css,asp.net-mvc,forms,layout,Html,Css,Asp.net Mvc,Forms,Layout,在ASP.NETMVC4项目中尝试为登录表单添加基本标记时,我看到一些奇怪的行为。以下是我的cshtml文件中有问题的部分: <form class="navbar-form pull-right"> <input type="text" placeholder="Email" class="span2" /> <input type="password" placeholder="Password" class="span2" />

在ASP.NETMVC4项目中尝试为登录表单添加基本标记时,我看到一些奇怪的行为。以下是我的cshtml文件中有问题的部分:

<form class="navbar-form pull-right">
    <input type="text" placeholder="Email" class="span2" />
    <input type="password" placeholder="Password" class="span2" />
    <button class="btn" type="submit">Sign in</button>
</form>

登录
该标记在我的主题中表现出色:

但是,如果我将其更改为:

<form class="navbar-form pull-right">
    <input type="text" placeholder="Email" class="span2" /><input type="password" placeholder="Password" class="span2" />
    <button class="btn" type="submit">Sign in</button>
</form>

登录
它开始呈现如下所示:

我注意到了这一点,因为我试图从一个基础主题中获取一个简单的表单,并用
Html.BeginForm()
实现它。这导致了所有标记都在一行上,所以我看到了压缩的外观


我可能只是用一些css来纠正它,但我很好奇是否有人知道我为什么会看到这种行为。有什么想法吗

回答你的问题,不,不应该。。。。但显然是。。。所以我会先在Firebug中检查这两个版本,看看你能在那里找到什么。还要检查布局中是否定义了Doctype。

在HTML中,任何空白都被视为单个空格。例如:

<div>TestTestTest</div>
元素
foo
将有3个子元素(一个输入、一个文本元素、另一个输入)-其中:

<div id="foo"><input /><input /></div>

将有2个子元素。以前,当我试图通过索引引用一个子元素时,这把我搞砸了,它是在IE上工作,而不是在Chrome上工作(专业提示:永远不要这样做)


您应该使用CSS精确地指定元素的布局方式,这是正确的。为类指定
标记,并定义该类中的子元素的流动方式,以及每个元素之间的边距、填充和间距。

另外,只需说“。。。也可以/>根据您的输入。:)我还没有发现Firebug与Firebug有什么不同,尽管我肯定不是这方面的专家。另外,我还有这个doctype集:
。这只是一个示例表单,但我将继续为后代添加/>。。。谢谢:)是的,我理解空格在一个div中应该如何工作。但是,似乎我在两个元素之间的空格中遇到了一些意想不到的行为。没有区别。实际上,在两个输入标记之间有一个空格字符。删除换行符时,DOM中两个输入之间绝对没有任何元素。换句话说,在第一个屏幕截图中,两个输入之间看到的是文本。如果你不相信我,请加大字体大小。@atcrawford将元素之间的空格设置为
block
inline block
。输入元素是
内联块
。感谢您提供的额外信息,特别是JSFIDLE演示!我确实学到了一些新东西。
<div>Test     Test
Test</div>
<!-- No spacing -->
<div>
    <input /><input />
<div>

<!-- Line break converts to a space -->
<div>
    <input />
    <input />
<div>

<!-- Really big font -->
<div style="font-size: 120pt;">
    <input />
    <input />
<div>
<div id="foo">
   <input />
   <input />
</div>
<div id="foo"><input /><input /></div>