样式在添加doctype时破裂

时间:2011-10-08 19:55:16

标签: html css doctype

我正在开发一个在后端使用PHP(使用Savant模板化MVC)和前端使用HTML4和CSS3的网站。我使用了一些字体嵌入和透明度。我用于该网站的doctype如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

然而,这就是发生的事情。地狱破裂了。我的字体大小减少到大约1em左右,填充变为0px。我不明白为什么会这样。

此外,由于我嵌入了两种字体,其中一种字体和样式工作正常,但另一种字体在IE上完全丢失。它出现在Times New Roman中,字体大小为1米。

如果有人知道这方面的解决方案,我恳请您帮助我。谢谢。 :)

3 个答案:

答案 0 :(得分:1)

浏览器有多种呈现模式,其中两个关键模式(标准和怪癖)由Doctype触发(假设使用某些Doctypes的作者知道他们在做什么以及使用其他人的作者,或者没有使用Doctype的作者)

您添加的Doctype触发标准模式,其中浏览器为:

  • 更符合规范
  • 彼此更一致(由于上述原因)
  • 对错误的容忍度较低(同上)。

确保您的HTML和CSS都是valid,并确保您正确使用它们。

答案 1 :(得分:1)

如果我理解你,你在完成所有css编码后添加了doctype。

如果这是对的,那么首先不包括doctype是一个坏主意。 doctype定义确保浏览器不在quirks mode中呈现。在怪癖模式下,每个浏览器都应用完全不同的默认样式规则,并且具有完全不同的呈现行为。

应用doctype并让浏览器使用标准模式是一种很好的做法,因为它可以减少浏览器之间的差异 - 还有更多的东西,比你每天要处理的还多。

答案 2 :(得分:1)

没有doctype的页面将以Quirks模式呈现,而带有doctype的页面将以Standards模式呈现(好吧,假设doctype本身是正确的,并且页面上没有其他内容触发Quirks模式)。

在我看来,添加doctype就是将页面切换到标准模式(这是正确的),但它的渲染方式与您期望的不同,因为您最初在没有doctype的情况下构建它。

在修复特定问题方面 - 如果没有看到实例,就更难做到,但我会确保你的所有字体都有单位,不要在任何地方打字,等等。(你可以运行你的CSS通过W3C的验证器进行仔细检查)。

使用“嵌入式”字体,您在谈论网络字体吗?如果没有,除非在本地安装,否则不会显示该字体。

希望这有帮助!将来,当您开始编码时,肯定会包含doctype,因为这样可以缓解很多这些问题。