所以,如果我有这样的HTML标题
<h2>A Heading</h2>
我运行Edit -> Format Document
它最终看起来像这样
<h2>
A Heading</h2>
这是为什么?它不会对其他块元素执行,但它会对其他内联元素执行(例如<label>
)。
更新:澄清一下,我的意思是为什么这是默认值,而不是更改此设置的位置
答案 0 :(得分:16)
这样做是因为它们是默认设置。在旧版浏览器中,有时在子元素之后的新行上具有块或内联元素的结束标记(有效地留下空格,例如不间断空格或空文本节点)会影响页面的呈现方式。我以前遇到过麻烦。例如,如果您的锚点有边框或填充,则以下内容可能会出现正确渲染问题:
<a>
<img src="..." />
</a>
有时链接底部会有额外的间距。将其更改为以下内容将删除额外的间距:
<a><img src="..." /></a>
基本上,愚蠢的格式化解决了浏览器中的一些渲染问题,如IE6那样的伪劣CSS支持。如果您有IE6,请查看我创建的this JSFiddle来说明问题。图像底部有额外的间距,锚标记存在于自己的行上。
如果格式化选择的标记并看到一个close标记没有被移动到一个单独的行 - 那是因为前面的标记的末尾和终止标记之间没有空格,因此VS是小心不要改变它以避免改变渲染语义。
与Visual Studio中的设计器格式或输出一样丑陋,它更可能在比正确格式化标记(例如XHTML)更多的浏览器中工作。
要更改Visual Studio中格式的默认值,请转到:
Tools > Options > Text Editor > HTML > Format > Tag Specific Options...
在“默认设置”下,将客户端和服务器“标记支持内容”选项的“换行符”选项更改为“之前和之后”。