指定网页的doctype解决CSS Hacking方法总结

但是实际上,浏览器远远不止这几个,Firefox分为Firefox 1.5,Firefox 2,Firefox 3几个主要版本,IE7,IE6中也各有好几个系列,另外除开这两个主流厂商的产品之外,还有Opera,Konqueror,Netscape,chrome等一系列。

  这些浏览器,各有各的一套,往往在这里运行正常,在那里运行就不正常了。于是WD们拆东边补西边,终于能在几个浏览器下都正常了。结果,产品经理又有了新的需求,需要在哪儿哪儿那儿改一下,于是乎,好不容易糊弄好的的纸架子一下子倒塌了,WD们又忙得焦头烂额。之所以这么说,因为,这是我的经验。

  大凡是WD,总是收集了一堆Css Hacking 技巧,为的是在各个浏览器下正常。网上一搜,一大堆。

  然而,首先WD们没有弄清楚一个基本问题,我们为什么需要css Hacking?如果有1000种浏览器,我们是不是要记住1000种浏览器的Hack 技巧?

  事实上, Css Hacking从某种程度上说,是一个拿不上台面的东西。Css Hacking有很多技巧,纯粹就是利用了浏览器的Bug.比如常见的用_class{….} 去区别IE和firefox,按理说_class是一个不合法的标记方法。Css Hacking的出现,是WD们不得已而为之,WD们的日常工作并不是疯狂地Css Hack.

  其实这么多浏览器,并不是可以随便乱来,想自己定义个啥就定义个啥标记的。人们习惯了在标准的世界里生活,在网页世界里,也有一系列标准。浏览器们也都努力地做到web标准兼容。但是有些浏览器出道得早,可以说后来出现的web标准就是在它们的影响下诞生的。还有一个,当年非常牛B,所以做了很多创新,没有把web标准放在心上,蛮不在乎。更何况,标准自身也是在不断更新的。因此,一般各个浏览器产品系统都曾有过一段没有不太在乎web标准的日子,后来大家都意识到不行了,我们大家都妥协一下,要制订一套标准,大家都遵守。可是以前各家都有自己制订的一些小条条小框框,他们不符合标准,咋办呢?

  于是,这些人想了个法子:标准模式和怪异模式。另外还有一种,叫“近乎标准模式”,almost standard.要说真是够怪异,我都听晕了。别着急,听我慢慢道来。

  不是说了吗,这些老大们坐在一起,制定了各式各样的标准,以后大家都按这套标准来解释网页。如果你做的网页可以按这套标准来解释,那就用一个标记doctype注明这是可以按web标准来解释的。这就是标准模式。

  那以前各家都生产过,规定过的小九九们不符合标准,咋办啊?也不能就马上把它们全扔掉不要了吧?软件上大抵有这样一套原则,叫向下兼容。在怪异模式下,各个浏览器都模拟那些老版本的浏览器的操作,以防止老的页面无法工作。在网页没有指定doctype时,浏览器一般就都按怪异模式工作,以防老页面无法工作。

  对于这两种模式之间的差异,最显著的例子涉及Windows上IE专有的框模型。在IE 6出现时,在标准模式中使用正确的框模型,在怪异模式中使用老式的专有框模型。为了维持对IE 5和更低版本的向后兼容性,Opera 7和更高版本也在怪异模式中使用有缺点的IE框模型。

  Mozilla和Safari还有第三种模式,称为“几乎标准的模式(almost standards mode)”,除了在处理表格的方式方面有一些细微的差异之外,这种模式与标准模式相同。

  正是由于这个原因,您可以丢掉很多css hacking技巧了。有些书介绍说,IE6和firefox的盒模型(或者有的地方叫框模型)不一致,因此需要这样做hack:

div{
width:100px;
*width:95px;
}

  我说,这种书真是误人子弟。因为,只要正确指定了doctype,这些浏览器解释上的差异就都不存在了,我们按照标准来就行了。

  这个模式的指位于HTML文件开头的DOCTYPE域指定的。一般常见的有这几种:

HTML 4.01 Transitional:


代码如下:

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

HTML 4.01 Frameset

代码如下:

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

  XHTML 1.0 Strict

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  XHTML 1.0 Frameset

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

  XHTML 1.1

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

(0)

相关推荐

  • 第1天:选择什么样的DOCTYPE

    前言 大家好!这个系列文章是按阿捷自己制作这个站点的过程编写的.之前阿捷也一直没有制作过一个真正符合web标准的网站.现在边参考国外资料边制作,同时把过程中的心得和经验记录下来,希望对大家有点帮助.好了,让我们开始吧 第一天 开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE. 查看本站首页原代码,可以看到第一行就是: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht

  • doctype后如何获得body.clientHeight的方法

    在ie6中很多js脚本执行就会出现问题,一般是在获取clientWidth, clientHeight,offsetWidth, offsetHeight,scrollWidth, scrollHeight,scrollTop, scrollLeft会返回不正确的值. 因为在加了doctype后,在ie6中这些document.body的属性已经重新分配给了document.documentElement. 比如:原来document.body.clientHeight,就要改成document

  • HTML <!DOCTYPE> 标签

    在默认情况下,FF和IE的解释标准是不一样的,也就是说,如果一个网页没有声明DOCTYPE,它就会以默认的DOCTYPE解释下面的HTML.在同 一种标准下,不同浏览器的解释模型都有所差异,如果声明标准不同,不用我说,您自己想就可以了.学习网页标准,浏览器兼容,从哪里开始您自己决定,但是, 请认识DOCTYPE: 一.什么是DOCTYPE DOCTYPE是Document Type(文档类型)的简写,在页面中,用来指定页面所使用的XHTML(或者HTML)的版本.要想制作符合标准的页面,一个必不

  • 网页中经常用到的Metas, Links and DocTypes集合

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR

  • !DOCTYPE声明对JavaScript的影响分析

    要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分:除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效:当然对JS的取值也会有影响. DOCTYPE声明如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> DOCTYP

  • 指定网页的doctype解决CSS Hacking方法总结

    但是实际上,浏览器远远不止这几个,Firefox分为Firefox 1.5,Firefox 2,Firefox 3几个主要版本,IE7,IE6中也各有好几个系列,另外除开这两个主流厂商的产品之外,还有Opera,Konqueror,Netscape,chrome等一系列. 这些浏览器,各有各的一套,往往在这里运行正常,在那里运行就不正常了.于是WD们拆东边补西边,终于能在几个浏览器下都正常了.结果,产品经理又有了新的需求,需要在哪儿哪儿那儿改一下,于是乎,好不容易糊弄好的的纸架子一下子倒塌了,W

  • jQuery设置指定网页元素宽度和高度的方法

    本文实例讲述了jQuery设置指定网页元素宽度和高度的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button").click(function(){ $("

  • Jquery实现网页跳转或用命令打开指定网页的解决方法

    Jquery实现网页跳转或用命令打开指定网页!location.href = "www.jb51.net";location.href = "aa.aspx";

  • window.print打印指定div指定网页指定区域的方法

    第一种方法:指定不打印区域 使用CSS,定义一个.noprint的class,将不打印的内容放入这个class内. 细如下: <style media=print type="text/css"> .noprint{visibility:hidden} </style> 要打印的内容.哈哈! <p class="noprint">将不打印的代码放在这里.</p> <a href="javascript:

  • jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法

    本文实例讲述了jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法.分享给大家供大家参考.具体分析如下: jQuery通过load()方法载入另外一个网页文件内的指定标签内容到div标签,如果我们可以加载网页b.html中的id为p1的标签内容到网页a.html的div标签内 <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> <

  • SqlDataReader指定转换无效的解决方法

    SqlDataReader指定转换无效的解决方法,具体内容如下 //获取最新显示顺序数据 string str = string.Format(@"if exists(select ShowOrder from GIS_FuncDefaultLayer where GISFuncId = {0}) select max(ShowOrder) as ShowOrder from GIS_FuncDefaultLayer where GISFuncId ={0} else select '0' as

  • python获取指定网页上所有超链接的方法

    本文实例讲述了python获取指定网页上所有超链接的方法.分享给大家供大家参考.具体如下: 这段python代码通过urllib2抓取网页,然后通过简单的正则表达式分析网页上的全部url地址 import urllib2 import re #connect to a URL website = urllib2.urlopen(url) #read html code html = website.read() #use re.findall to get all the links links

  • 使用C# Winform应用程序获取网页源文件的解决方法

    在C# Winform 应用程序中,获取某网页的源文件,可以用以下方法: 首先引入名称空间 using System.IO; using System.Net; WebClient MyWebClient = new WebClient(); MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据 Byte[] pageData = MyWebClient.Do

  • JavaScript实现网页带动画返回顶部的方法详解

    服务器由阿里云换到了腾讯云,我的代码之前一直都是托管在git上的,但是搬家的时候,可能是着急了,之前有些新加的文件没有托管到git上,所以,就丢了. 不过无所谓了,可以重新写嘛. 之前博客的回到顶部功能是请之前的一位前端的同事帮忙写的,这次打算自己尝试一下. 返回顶部无非就是锚点. 第一个版本: <body style="height:2000px;"> <div id="topAnchor"></div> <a href=

  • js实现带关闭按钮始终显示在网页最底部工具条的方法

    本文实例讲述了js实现带关闭按钮始终显示在网页最底部工具条的方法.分享给大家供大家参考.具体如下: 这是一款很实用的代码,给网页加入一个始终显示在浏览器窗口底部的工具栏,可以在上面放上公告,联系人等等信息,此代码的工具条还带有关闭按钮,可以随时关闭 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml

随机推荐