为什么Visual Studio格式文档工具将标题标记放在两行上?

时间:2009-05-21 23:31:55

标签: html visual-studio formatting

所以,如果我有这样的HTML标题

<h2>A Heading</h2>

我运行Edit -> Format Document它最终看起来像这样

<h2>
    A Heading</h2>
这是为什么?它不会对其他块元素执行,但它会对其他内联元素执行(例如<label>)。

更新:澄清一下,我的意思是为什么这是默认值,而不是更改此设置的位置

1 个答案:

答案 0 :(得分:16)

这样做是因为它们是默认设置。在旧版浏览器中,有时在子元素之后的新行上具有块或内联元素的结束标记(有效地留下空格,例如不间断空格或空文本节点)会影响页面的呈现方式。我以前遇到过麻烦。例如,如果您的锚点有边框或填充,则以下内容可能会出现正确渲染问题:

<a>
    <img src="..." />
</a>

有时链接底部会有额外的间距。将其更改为以下内容将删除额外的间距:

<a><img src="..." /></a>

基本上,愚蠢的格式化解决了浏览器中的一些渲染问题,如IE6那样的伪劣CSS支持。如果您有IE6,请查看我创建的this JSFiddle来说明问题。图像底部有额外的间距,锚标记存在于自己的行上。

来自Scott Guthrie's blog

  

如果格式化选择的标记并看到一个close标记没有被移动到一个单独的行 - 那是因为前面的标记的末尾和终止标记之间没有空格,因此VS是小心不要改变它以避免改变渲染语义。

与Visual Studio中的设计器格式或输出一样丑陋,它更可能在比正确格式化标记(例如XHTML)更多的浏览器中工作。

要更改Visual Studio中格式的默认值,请转到:

Tools > Options > Text Editor > HTML > Format > Tag Specific Options...

在“默认设置”下,将客户端和服务器“标记支持内容”选项的“换行符”选项更改为“之前和之后”。