代码之家  ›  专栏  ›  技术社区  ›  Glenn Slaven

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

  •  13
  • Glenn Slaven  · 技术社区  · 15 年前

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

    <h2>A Heading</h2>
    

    我跑 Edit -> Format Document 最后看起来像这样

    <h2>
        A Heading</h2>
    

    这是为什么?它不会对其他块元素执行此操作,但会对其他内联元素执行此操作(例如 <label> )

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

    1 回复  |  直到 12 年前
        1
  •  16
  •   Cᴏʀʏ bcherry    12 年前

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

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

    有时在连接的底部会有额外的间距。将其更改为以下值将删除附加间距:

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

    基本上,goofy格式可以解决浏览器中的一些渲染问题,比如说IE6。如果你有IE6,看看 this JSFiddle 我是为了说明这个问题而创作的。在图像的底部有额外的间隔,定位标记就在它们自己的行上。

    Scott Guthrie's blog :

    如果对所选标记进行格式化,并看到结束标记没有移动到单独的行,这是因为在前面的标记的结尾和终止标记之间没有空间,因此vs会小心地不更改它,以避免更改呈现语义。

    因此,尽管Visual Studio中设计器的格式或输出可能很难看,但它在更多的浏览器中工作的可能性要大于正确格式化的标记(如XHTML)。

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

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

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