服务器端包括中断布局

时间:2011-01-03 20:55:03

标签: html server-side-includes

我终于完善了我的网页,它在每个浏览器中都能完美运行。

但是,当我将页眉和页脚内容抽象到服务器端包含时,布局在Firefox / Opera / Safari中略有变化,但在IE中,布局更改会使页面看起来破碎。

使用SSI时是否存在可能导致布局更改的已知问题?坦率地说,使用SSI会产生这样的效果,我感到很惊讶。我正在使用HTML5标签,modernizr js库,并且页面验证是否有任何重要。

编辑:我通过更改抽象的代码修复了我的问题(我只是抽象了一个父标记,比以前更进一步)。但是,我仍然急于确切地知道为什么这个错误发生在第一位。是否有人可以解释特别是导致这种情况的原因?

4 个答案:

答案 0 :(得分:1)

可能是SSI没有引起任何问题。

完全有可能HTML代码中有换行符导致IE插入无关的空格,导致布局中断。

此外,请确保在将片段移动到包含时正确分隔代码。通过验证器运行HTML可能最容易检查。

答案 1 :(得分:0)

我遇到了类似的问题,修复如下。

我有这样的事情:

<div>
   <include>
</div>

并通过将其更改为:

来修复它
<div><include></div>

答案 2 :(得分:0)

该问题最终成为服务器如何解析HTML和HTML5标记的错误。无论出于何种原因,当我向SSI添加一个额外的标签集时,它都有效。

我原来的包括这样:

<header>
    <!--#Include File="/includes/header.shtm"-->
</header>

包含的文件为:

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

但是当我从include中取出所有HTML5标签时,如下所示,一切正常。我不确定这是旧版本的apache或者是什么问题,但这样做会解决所有问题。

<header>
  <nav>
    <!--#Include File="/includes/header.shtm"-->
  </nav>
</header>

答案 3 :(得分:0)

这可能是UTF-8的文件编码问题,在包含文件的开头插入BOM字符。我的解决方案是将包含文件保存为UTF-8而不使用BOM签名。

我注意到在body标签显示额外空间之后有了include语句,但是在include语句周围添加(任何?)html标签会隐藏它。我猜测浏览器会在他们内部&#34;内部&#34;之后忽略这些字符。身体而不是开始。

我的特殊情况涉及Visual Studio,但它出现了混合编辑器。另见