我终于完善了我的网页,它在每个浏览器中都能完美运行。
但是,当我将页眉和页脚内容抽象到服务器端包含时,布局在Firefox / Opera / Safari中略有变化,但在IE中,布局更改会使页面看起来破碎。
使用SSI时是否存在可能导致布局更改的已知问题?坦率地说,使用SSI会产生这样的效果,我感到很惊讶。我正在使用HTML5标签,modernizr js库,并且页面验证是否有任何重要。
编辑:我通过更改抽象的代码修复了我的问题(我只是抽象了一个父标记,比以前更进一步)。但是,我仍然急于确切地知道为什么这个错误发生在第一位。是否有人可以解释特别是导致这种情况的原因?
答案 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,但它出现了混合编辑器。另见