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

如果我有这样的 HTML 标题

<h2>A Heading</h2>

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

<h2>
    A Heading</h2>

这是为什么?它不会对其他 block 元素这样做,但对其他内联元素会这样做(例如 <label> )。

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

最佳答案

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

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

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

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

基本上,愚蠢的格式解决了浏览器中的一些呈现问题,这些浏览器支持劣质的 CSS,例如 IE6。如果您有 IE6,请查看 this JSFiddle我创建来说明这个问题。图像底部有额外的间距, anchor 标记存在于它们自己的行中。

来自 Scott Guthrie's blog :

If you format a selection of markup and see that a close tag hasn’t been moved to a separate line – it is because there is no space between the end of the preceding markup and the terminating tag, and as such VS is being careful not to change it to avoid changing the rendering semantics.

因此,尽管 Visual Studio 中设计器的格式或输出可能很丑陋,但与格式正确的标记(例如 XHTML)相比,它更有可能在更多浏览器中工作。

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

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

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

https://stackoverflow.com/questions/895790/

相关文章:

c# - 格式化带有公制前缀的数字?

r - 如何为 rmarkdown PDF 输出格式化复杂表格

c# - 将零值格式化为空字符串?

javascript - 逗号优先的 JS 格式化程序

visual-studio - 使用标准格式将 Visual Studio 复制/粘贴到 Outlo

objective-c - 本地化电话号码格式

html - 如何处理 XSLT 中嵌入的 XML 标记?

formatting - 突出显示重复值

intellij-idea - Intellij 中的链式方法和连续缩进

vba - 是否有将 Excel 文件格式/设置保存到对象的标准过程?