您的位置:首页 > Web前端 > CSS

写给自己看的HTML、CSS、XHTML指南 一

2010-05-13 09:34 239 查看
在Web开发生涯中,做为程序员的我们,必须充分考虑到多种浏览器已存的兼容性问题,我们的客户可能通过手机浏览Web页面的、也有可能通过桌面计算机浏览Web页面,还有一些则可能通过个人数字助手(PDA)浏览Web页面;稍等一下,你是不是忘记考虑视觉障碍人士,他们可能使用的是语音浏览器或屏幕放大器。

在这些浏览器中,由于每种浏览器(或浏览器的版本)的引擎工作机制不同,所支持的HTML元素、CSS元素不同,所得到的结果也就不一致,又因为各种浏览器宿主环境(比如手机屏幕大小、计算机屏幕大小)的不同,在不同的环境下,用不同的浏览器浏览,其显示的效果就不同。

在实际开发中,我们如何考虑到以上可能出现的种种问题呢?

在回答这个问题前,我们先来看看浏览器的工作机制:

1.服务器(其定义:为一台安装了服务器软件的计算机,其除了运算速度快之外,与普通的个人计算机没什么不同)上存放着各种资源,例如图片、网页文件、音频文件、视频文件、程序压缩包文件等。

2.用户通过在浏览器地址栏输入URL(统一资源定位符)来向服务器发送请求(我们不去考虑浏览器所运行的操作系统)。

3.服务器将接收由客户端浏览器发送过来的请求,然后根据其指定的URL来进行定位(寻找)。

4.若服务器找到该URL请求对应的资源,则将该资源返回到用户浏览器,若没有该资源则返回相应的错误;例:若用户请求的是针对网页(后缀名为.htm或html的页面)的资源,而服务器没有找到该URL对应的网页,则返回到客户端的便是经典的404错误;在此必须了解的一点是:若用户查找的是动态网页(后缀名为.asp、.aspx、.jsp的页面),则服务器将会进行一定的处理(例如链接数据库等操作),然后生成其对应的HTML代码。

5.用户浏览器接收(下载)服务器返回的资源,接收完毕后断开与服务器的链接,开始进行处理。

6.若接收的是网页,则浏览器自动开始调用其内置的解析器以解析HTML页面(比如哪里是段落,哪里是图片),若在解析的过程中发现有页面包含<style>元素或某个元素包含style属性,则调用渲染器程序处理样式规则;若该页面没有使用样式,则浏览器将使用默认样式进行显示(不必按默认样式显示页面,因为默认样式并不好看);若请求的为其他资源,比如视频、音频文件,则浏览器将自动将该内容与本地计算机上相关的程序绑定,然后进行处理。

7.此时处理过程结束,用户将看到被处理后的网页(或看到其他的资源)。

此时,一个普通的基于浏览器的请求 -- 响应交互完成。

现在,我们对浏览器的工作原理大致了解了。

接着往下看:浏览器如何知道按何种格式处理页面?这就是HTML存在的原由,如果没有HTML,浏览器将根本不知道如何处理(显示)此页面,只会按原样输出!

而HTML定义了一种结构,浏览器看到HTML标记时,就能明白这段代码是什么意思,比如<p>元素在HTML中代表一个段落、<h1>元素则代表是一个一级标题。(不幸的是,HTML 5已将<h1> --- <h6>元素完全废弃,~~o(>_<)o ~~ 好消息是,HTML 5.0仍在开发中,预计完成时间为2020年。 不知道2012年之后,我们是否能看到HTML 5.0的诞生 O(∩_∩)O~)

回到先前考虑的问题:为什么用不同的浏览器,浏览同一个页面会出现不同的外观呢?

这就要追溯到早期的互联网浏览器之争了,早期的互联网发展坎坷,功能也不像如今这样的丰富,早期的浏览器仅支持浏览文本这一项功能,而如今的浏览器则大多支持图片浏览、播放音频、播放动画等各种功能新颖、强大的功能。

提到早期的互联网,不得不提到当年的霸主:Netspace浏览器,也许你并没听过它的大名,因为你更加熟悉于IE、FIREFOX、OPERA此类的后现代浏览器。

当年的互联网完全被Netspace所操控,它的市场占用率曾高达90%(具体数据没有调查过,在此只想说明当年多数人都是通过Netspace浏览器链接到互联网的),以至于后来的微软公司为了与其争夺市场份额,不得不使用了捆绑的下下策(将IE内置于WINDOWS操作系统,这在今天依旧为多数开发者所唾弃)。

为了回击微软,Netspace开始在其浏览器上扩展一些新特性,有如今悄然淡出的跑马灯效果,而又因为这些特性,任何使用非Netspace的浏览器浏览带有新特性的网页时将无法体验到这种新颖的技术,类似的,微软为了抗衡Netspace,也开始在其浏览器上进行功能更强、体验更丰富的扩展,以至于后来出现的各种浏览器都指望通过这种伎俩来争夺市场。

再后来,做为软件霸主的微软成功的争夺了浏览器市场,一切似乎已成定局,并一直延续到今,Netspace因无法与之抗衡,黯然退出互联网领域,并淡出人们的视线....

也因为这种私自扩展,而从来不考虑浏览器兼容性的做法,遭到了越来越多的开发者的不满,为了应对这种糟糕的情况,W3C组织理所当然的成立了,它的主旨就是为了消除浏览器之间存在的差异性,让其成员通过浏览器处理速度等方面来争夺市场,千万不要小看这个组织,它比我们想象的更强大,其成员包含Apple、Microsoft、Google等数一数二的科技创新帝国。

为了应付这种囧状,W3C开始制定标准,如发布Html 1.0、2.0、3.2、4.0的做法,不幸的事又发生了,直至今日,其成员也没有完全的遵循其发布的标准,依旧各自为营、孤守自大。

时间回放到2010年,现今开发一个页面,仍需要在多个浏览器中反复调试,修改;不过需要庆幸的是,相比早期的网页,需要针对每款浏览器的不同版本创建不同的页面而言,他们确实在往正确的方向上迈出了很大的一步,我们只能希望未来的Web越来越美好。当然,之所以会出现这种问题,与浏览器厂商有着必然的联系。

孰对孰错,一切留给时间来慢慢证明吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: