CSS比表格更难吗?

来源:互联网 发布:3d试衣软件 编辑:程序博客网 时间:2024/05/01 22:29

CSS比表格更难吗?
原文
CSS布局提倡者的声音正被"表格布局的优点"的声音所覆盖。一个荒诞的说法是CSS是难学的。事实上,CSS一点也不比其他网页技术难。问题在于:对于表格设计已经相当有经验的web设计师不得不完全放弃他们的思维模式改用CSS方法。

我曾经用表格布局设计过许多年,当我第一次开始使用CSS布局时,我也遇到了问题。"用表格多简单呀"我想。但是,那只是因为我已经用惯了表格,我知道如何巧妙的处理它们。任何改变,哪怕是小小的一点,都会让我觉得麻烦,更不用说这么激烈的变化。

回忆起我第一次学习用表格布局,同样有一大堆的问题困绕着我。回头想想那些rowspans, colspans以及空白的GIF图片,公平的说这两种布局方法,用表格布局更加难些。www.3w3sky.com

另一个陈旧的观点是:CSS设计的页面(字节数)非常大,比表格设计的页面大。理由是:因为你将整个站点所有的样式都放在一个文件里,当用户访问一个页面,包含整个站点样式的样式表都需要下载,因此页面非常大。

那么为什么你要将所有样式都放在一个CSS文件里?没有人限制你只能用一个CSS文件,你完全可以为某部分章节的细节样式设立单独的子样式表文件。在我的经验里,从简单的手册型站点到大型的数据库驱动,多功能的系统网站,我从来没有只用过单独一个样式表文件,没有一个首页的代码比用表格设计的多。那些table,tr,td标签占据了大量空间,立刻行动起来吧,用CSS布局方法将你的文件尺寸猛砍下来。

当你用表格布局时,你失去了标签本身的语意。web标准方法布局分离了内容和表现层将带来巨大的好处。当你用表格锁定了你的设计,一旦你需要改变它,你必须找到这个页面,然后再分析出表格结构,再一页一页修改,而CSS文件可以简单的改变整个站点的设计。用CSS你根本无须考虑设备无关性,无须考虑用户选择他们自己的样式。www.w3sky.com

还听说一个表格的"好处":设计forms。但是forms可以用任何方法实现表格排列。是为了Netscape4? 我从来没听说过支持这么老的浏览器是一个理由。大部分主流浏览器的用户利益远远大于少数的用不支持样式表的浏览器的用户的利益(先不说CSS也支持纯文本)。

那些"超级表格"支持者的观点归结起来就是一点:"表格更容易。"这是胡说!如果你满足于一个低效率的方法,那随你的便。如果你想突破限制,使页面内容更加通用、易用,代码更加少,那就努力转变吧。当然如果你是新学网页设计,从头开始,你就不会有这些问题。

"小车不倒只管推","这只是设计师工具箱里的工具而已。"这是一些讨论者的观点。表格布局象一把老式的木头柄螺丝起子,你可以仍旧使用它来钻进一面墙。而我宁愿使用电动的螺丝起子,CSS布局更加高效,不会让我的手再起水泡。

QQQ
Flash页面如何通过校验
作者:阿捷 2004-6-25 10:11:52
本文是我在蓝色理想论坛上讨论的一个回复,我想大多数设计师都会有这个疑问,就保存下来。

1.embed是非法的
<embed>标签是Netscape的私有标签,虽然<embed>标签应用广泛存在,但是从HTML3.2,HTML4.0到XHTML1.0,W3C都没有收录这个标签。使用<embed>标签的页面将不能通过W3C校验。

2.应该用object
W3C推荐的是<object>标签。甚至在XHTML2中,<img>都要被<object>所取代。用<object>方法插入flash的代码是:

<object type="application/x-shockwave-flash" data="test.swf" width="200" height="100"> <parm name="movie" value="test.swf /> </object>
但是这个方法在IE5-IE6/Win上不能正确显示(不能连续播放,要下载完才能放),在低版本的可以正确显示。后来采用先调一个小flash文件再嵌入大flash文件的方法解决了连续播放的问题,但是在IE5以上版本有时依然出现不能显示flash的情况。

3.目前的临时办法
那么既要符合标准,又想在所有浏览器正确显示flash应该怎么做?macromedia网站是如何通过W3c校验的?

有设计师想到了用JavaScript来隐藏非法的<embed>标签,

<script type="text/javascript "> if (navegiator . mimeTypes && navigator . mimeTypes["application/x-shockwave-flash"] { document . write('<embed src="test . swf" ...
这是目前比较好的解决办法。你一定要插flash,就用js调用。这种方法可以欺骗W3C的校验程序,使页面通过校验。但仅仅是"欺骗",而不是真符合标准。

macromedia是怎么做的呢?看到这句代码:

<!-- $RCSfile: FlashDetection2k.pm,v $ $Revision: 1.68 $ : your browser's accept header indicates you have Flash 6,0,65,0 or better, so you're OK for this Flash 6 movie, here it comes. -->
它采用了一个折中二选一的办法:

(1).首先javascript来判断你的浏览器版本和flash player的版本;
(2).根据版本的不同在后台动态的生成HTML代码。
简单说就是默认采用<object>方法,如果浏览器不能处理object的MIME类型“ application/x-shockwave-flash”,它就插入子元素<embed>。说穿了,这和用js隐藏<embed>方法类似,也是一种“欺骗”的办法,但这是目前能够做到的最符合标准的,比较完美的做法了。

要想真正抛弃<embed>,只能等IE浏览器对<object>更好的支持才行,也许要等到Longhorn出来了。

 
原创粉丝点击