DTD与模式

简介: 摘要    我们在制作页面时必须要测的就是IE浏览器,毕竟IE浏览器市场占有率还是很高。随着HTML5的流行,可能项目要求兼容IE最低版本为IE8或者更高,但是还是有很多项目兼容IE低版本。所以我们经常会碰到页面在ie浏览器低版本中排版错乱的问题,这是因为IE浏览器有两个模式影响着页面,现在就来研究下 文档验证机制(DTD)   DTD是html文件的验证机制,属于html文件组成的一部分。

摘要

   我们在制作页面时必须要测的就是IE浏览器,毕竟IE浏览器市场占有率还是很高。随着HTML5的流行,可能项目要求兼容IE最低版本为IE8或者更高,但是还是有很多项目兼容IE低版本。所以我们经常会碰到页面在ie浏览器低版本中排版错乱的问题,这是因为IE浏览器有两个模式影响着页面,现在就来研究下

文档验证机制(DTD)

  DTD是html文件的验证机制,属于html文件组成的一部分。三种文档类型:S(Strict)、T(Transitional)、F(Frameset)。

  • Strict
    干净的标记,免于表现层的混乱。
  • Transitional
    DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时使用
  • Frameset
    DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD

HTML5简化了DTD,可以直接使用 <!DOCTYPE HTML>。

模式

  模式主要是针对ie浏览器,在ie7以下,微软的代码规范与W3C制定的标准有所差别,但是ie市场占有率非常大,所以开发人员会按照微软的规范来编写代码,随着各大浏览器厂商的发展和W3C组织的努力,浏览器的标准化越来越明显。微软为了兼容ie6/7,在ie8浏览器增加了模式这个功能,这样就可以解决代码标准不一致而引起的问题。

 

模式分为两种一种是浏览器模式,一种是文档模式。这两种模式有什么区别呢?

  • 浏览器模式
    用于切换IE针对该网页的默认文档模式、对不同版本浏览器的条件备注解析、发送给网站服务器的用户代理(User-Agent)字符串的值。网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和安装的功能,这样就可以向不同的浏览器返回不同的页面内容。默认情况下,IE8的浏览器模式为IE8。用户可以手动切换到不同的浏览器模式。
  • 文档模式
    用于指定IE的页面排版引擎(Trident)以哪个版本的方式来解析并渲染网页代码。切换文档模式会导致网页被刷新,但不会更改用户代理字符串中的版本号,也不会从服务器重新下载网页。切换浏览器模式的同时,浏览器也会自动切换到相应的文档模式。

 对于文档模式,每个浏览器都有不同的工作模式

  IE6 IE7 ​IE8 ​IE9 IE10 Chrome Firefox Safari Opera
混杂模式(Quriks Mode)
接近标准模式(Almost Standards Mode)
标准模式(Standards Mode)

我们如何控制浏览器以何种文档模式来显示页面呢?

<meta http-equiv="X-UA-Compatible" content="IE=edge">

通过上面的代码用来指定IE浏览器以标准文档模式渲染页面,我们可以修改edge来指定特定版本,例如:IE=8

问什么要控制这个呢?很明显,加上这个元素能够告诉浏览器用什么模式来渲染页面,有时候我们在IE高版本的浏览器中显示正常,到了低版本排版就乱了,加上下面的和正确的DTD声明就可以了。

< meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />

 判断当前页面的文档模式

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=8,chrome=1">
 6 </head>
 7 <body>
 8     <script>
 9         function detect() {
10             var mode = document.documentMode;
11             switch (mode) {
12                 case  5:
13                     alert('Internet Explorer 5 quirks mode');
14                     break;
15                 case  7:
16                     alert('Internet Explorer 7 Standards mode');
17                     break;
18                 case 8:
19                     alert('Internet Explorer 8 Standards mode');
20                     break;
21                 case 9:
22                     alert('Internet Explorer 9 Standards mode');
23                     break;
24                 case 10:
25                     alert('Internet Explorer 10 Standards mode');
26                     break;
27             }
28 
29         }
30         detect();
31     </script>
32 </body>
33 </html>

 

 

S(标准模式)、A(接近标准模式)、Q(混杂模式)

Doctype NS6 Old Moz Moz &
Safari &
Opera 10
&
IE10
& HTML5
Opera 9.0 IE 8, IE 9 & Opera 9.5 IE 7 & Opera 7.10 IE 6 & Opera 7.0 Mac IE 5 Konq 3.2
None Q Q Q Q Q Q Q Q Q
<!DOCTYPE html> Q S S S S A A A  
<!DOCTYPE html SYSTEM "about:legacy-compat"> ? ? ? ? ? ? ? ?  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> Q Q Q Q Q Q Q Q Q
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> S S S S S A A A A
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> S S S S S A A Q A
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/html4/strict.dtd"> S S S S S A A A A
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> S S S S S A A A A
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> Q Q Q Q Q Q Q Q Q
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> Q Q Q Q Q Q Q Q Q
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> S S A A A A A A Q
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> Q S A A A A A A Q
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> Q Q Q Q A A A A Q
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> S S S S S A A A A
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> S S S S S A A A A
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> S S S S S A A A A
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> S S A A A A A A Q
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
S S S S S A Q A Q
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
S S S S S A Q A Q
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
S S S S S A Q A Q
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
S S A A A A Q A Q
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN"> Q S S Q Q Q Q Q Q
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HyperText Markup Language//EN"> Q S S S S A A A Q
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:1999//DTD HTML//EN"> S S S Q Q Q Q Q Q
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:1999//DTD HyperText Markup Language//EN"> S S S S S A A A Q

PS:

  Opera文档模式:http://www.opera.com/docs/specs/doctype/

  Firefox文档模式:https://developer.mozilla.org/en-US/docs/Mozilla%27s_DOCTYPE_sniffing

  IE8:http://blogs.msdn.com/b/ie/archive/2010/03/02/how-ie8-determines-document-mode.aspx

相关文章
|
应用服务中间件 Docker 容器
Docker 安装 Tomcat
一、查看 tomcat 版本 访问 tomcat 镜像库地址:https://hub.docker.com/_/tomcat,可以通过 Tags 查看其他版本的 tomcat; 二、拉取 Tomcat Docker 镜像 打开终端或命令提示符,运行以下命令从 Docker Hub 拉取 Tomcat Docker 镜像: docker pull tomcat 三、创建 Tomcat 容器 一旦 Tomcat 镜像下载完成,可以基于该镜像创建一个容器。运行以下命令创建 Tomcat 容器: docker run -d -p 8080:8080 --name tomcat-container t
514 0
|
监控 数据可视化 Java
《使用 JFreeChart 进行数据可视化:提升 Java Web 应用的数据展示能力》
【4月更文挑战第4天】JFreeChart 是 Java Web 应用中数据可视化的强大开源库,提供多种图表类型如线图、柱状图,助于理解数据趋势和模式。通过导入库、创建数据集、设置图表属性,开发者可生成吸引人的图表提升用户体验。使用时注意数据准确性、配色、标签和交互性。JFreeChart 具有高度可定制性、良好性能和社区支持,适用于业务展示、系统监控及数据分析场景。
302 9
|
9月前
|
机器学习/深度学习 人工智能 算法
o3-mini:OpenAI 发布最新推理模型,强大的STEM推理能力,灵活调整推理强度
OpenAI o3-mini是OpenAI推出的全新推理模型,专为科学、数学和编程等技术领域优化,支持三种推理强度,灵活调整性能。
560 25
o3-mini:OpenAI 发布最新推理模型,强大的STEM推理能力,灵活调整推理强度
|
9月前
|
数据挖掘 OLAP 云计算
[直播预约]StarRocks 2025 Roadmap 全面解读
2月19日19:00-20:30,StarRocks TSC Member赵恒、康凯森将解读2025 Roadmap,并邀请多位专家分享最新进展。欢迎参与交流!
|
10月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
472 8
|
11月前
|
自然语言处理 搜索推荐 算法
如何利用电商API接口打造个性化购物体验
在数字化时代,电子商务竞争激烈,传统购物体验难以满足消费者的个性化需求。电商平台需通过创新提供定制化服务,而电商API接口作为系统连接的桥梁,提供了强大技术支持。本文探讨如何利用电商API打造个性化购物体验,涵盖其在个性化推荐、定制营销和智能客服等方面的应用,并提出实施策略与未来展望。通过数据收集与分析、算法设计及智能系统建设,电商平台可显著提升用户体验和满意度,推动业务增长。成功案例如亚马逊、淘宝和Zappos展示了个性化服务的巨大潜力,同时也指出了面临的挑战及应对措施。
689 9
|
弹性计算 运维 负载均衡
阿里云SLB的性能优势
【11月更文挑战第3天】
283 3
|
消息中间件 Python
深入理解操作系统的进程间通信(IPC)机制
本文将探讨操作系统中的核心概念——进程间通信(IPC),揭示其在系统运作中的重要性及实现方式。通过分析不同类型的IPC手段,如管道、信号、共享内存等,帮助读者更好地理解操作系统的内部工作原理及其在实际应用中的表现。
621 1
|
人工智能 自然语言处理 安全
2024年中国CRM市场领导者:年度排行榜揭晓
在竞争激烈的商业环境中,CRM 系统对企业至关重要。本文介绍了十款知名 CRM 系统,包括销售易、金蝶云之家、神州云动、八骏科技、天衣云、红圈、简道云、悟空、八百客和销帮帮。这些系统各具特色,涵盖从大中型企业到中小企业的不同需求,帮助企业更好地管理客户信息、提高销售效率、优化客户服务。企业在选择时应根据自身规模、行业特点和预算等因素综合考虑,选择最适合自己的 CRM 系统。
|
人工智能 安全 物联网
园区导航如何实现?GPS与蓝牙定位技术精准导航
园区导航系统融合了大数据、人工智能和物联网技术,实现了室内外无缝切换和精准定位,提供智能路径规划、全方位服务信息和安全保障,提升了园区管理效率和用户体验。
467 0
下一篇
oss云网关配置