指定网页doctype解决CSS Hacking

2016-02-19 23:35 8 1 收藏

今天图老师小编给大家介绍下指定网页doctype解决CSS Hacking,平时喜欢指定网页doctype解决CSS Hacking的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - Web开发 】

  我们都知道,要做WD(web designer),首先得伺侯好几个浏览器:IE6,IE7,Firefox.一般的页面,都只要求在IE6,IE7,Firefox下正常工作就行了。

  但是实际上,浏览器远远不止这几个,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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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"

来源:http://www.tulaoshi.com/n/20160219/1630203.html

延伸阅读
  By: w00w00 Security Development article by Nicolas Dubee 译:大鹰 以下代码均在linux i86 2.0.x的内核下面测试通过。它也许可以在之前的版本通 过, 但并没有被测试过. 因为从2.1.x内核版本就引入了相当大的改变, 显著地内存 管理上的差别, 但这些不是我们...
标签: Web开发
用CSS 来布局很容易。如果你已经习惯用表格布局的话,起先会感觉比较困难。其实不难,只不过动机不同,并且在实践中更有意义。 你可以把这一页面的各个部分当作独立的版块来看待,无论你选择哪一块。你可以绝对或相对地用彼块取代此块。 定位 定位属性position用于定义一个元素是否absolute(绝对),relative(相对),static(静态),或...
标签: Web开发
个人总结了在开发css框架中的一点经验,献丑了。希望大家的讨论能使我们共同进步。:) 1、css框架 中国的互联网行业已经发展了10年,浏览器也从最早流行的NS到现在的FF3.IE7等等前端开发工程师的职位也诞生了。近几年在web开发中,有个非常火的词框架。YUI、JQuery、Prototype这些javascript框架在开发网站时,确实成为前端开发工程师的手中...
标签: Web开发
在进行浮动布局时,大多数人都深知,在必要的地方进行浮动清理:div style=clear:both;/div。 例如: div style=background:#666;       div style=float:left; width:30%; height:40px;background:#EEE; Some Content/div /div 此时预览此代码,我们会发现最外层的父元素float container,并没有显示。这...
标签: Web开发
如果在用CSS设计网页时遇到BUG,请认真阅读以下内容,非常容易记忆的,不知道哪位高人把CSS BUG编成了顺口溜了!看看好不好记住呢? 一、IE边框若显若无,须注意,定是高度设置已忘记; 二、浮动产生有缘故,若要父层包含住,紧跟浮动要清除,容器自然显其中; 三、三像素文本慢移不必慌,高度设置帮你忙; 四、兼容各个浏览须注意,默...

经验教程

868

收藏

89
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部