登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 

日志

 
 

XHTML定位不明确。作为具体页面描绘语言,XHTML功能不如以前老的HTML;作为对要显示的数据的定义,XHTML又带有太多HTML残余。  

2005-12-07 21:52:36|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

画网页想到与平台无关的客户端和服务器端通讯一想就是XML,XML要显示到网页上,有三大流派:a、用脚本操作DHTML画上去;b、用XSLT转换成HTML;c、直接CSS显示出来。不知怎么乱逛就逛到XHTML,又找到一个表格对决CSS--一场生死之战的文章,吹捧XHTML+CSS,吹得我热血沸腾,恨不得马上把表格统统搞掉换成div。冷静下来想了下,XHTML其实完全是个没用的技术,XHTML设计的目的就是兼容现有浏览器的HTML,并且又体现XML显示与内容分开的原则。然而这纯粹是吃饱了撑的,因为前面说了XML本来就可以直接用CSS格式化,就已经兼容现有浏览器了,何必多此一举转换成XHTML然后再搞CSS,况且XHTML很多很傻的规定,比如说不鼓励用框架图片用img,而鼓励放到CSS的背景里面,但是这没有搞清楚一个基本问题,就是说HTML设计的目的就是用来显示给人看得布局而不仅仅是给机器看的内容。XHTML搞得不伦不类,又要不关注具体显示布局,又还要带上HT两个字。

然而,在现实中情况却恰恰相反,吹捧标准化的人一般狂吹XHTML,一般认为,现阶段来说,后台采用xml+xslt,前台采用xhtml+css比较合理,我认为,根本原因在于直接用css来格式化XML就不能使用<textarea></textarea>、<a href="XXX"></a>和<button onclick="doSomething(this)"></button>这样的语法了,XML+CSS只是把东西显示出来,然而显示出来鼠标点上去有什么用,那就不管了。虽然XHTML强烈BS什么<a target="_blank"></a>这样的语法,但是实际上要完成这交互的另一半,还得靠HTML中的href啊!

当然,现阶段,如果你只需要在IE的平台能够使用的话,css中使用behavior:url(xxx.htc)也是一样没问题的,虽然不能使用textarea和input,虽然你有耐心,自己用htc实现一个文本框也可以,但是还是感到非常BT。

不过除了没有textarea和input,XML+CSS+HTC并不是标准,你看

在W3关于XML+CSS的原话:Note: Formatting XML with CSS is NOT the future of how to style XML documents. XML document should be styled by using the W3C's XSL standard!
另外,HTC也不是标准。

真混蛋,为什么会搞出这样的事情呢,我们看1999年微软推出IE5,IE5增加了CSS2支持,XML支持,还有,HTC,当时这些技术,配合jscript,客户端浏览器功能就很舒服了。到2002年ASP.NET来了,ASP.NET的服务器端控件鼓励开发者把客户端处理的都放到服务器端去,浪费服务器端资源,这之后微软也就不怎么热心HTC和客户端JS这些玩意儿了。实在可恶。不过想到现在AJAX这么流行,过两年也许就好了。

------------------------------------------------

如果把XHTML当成一种画页面的语言的话,则不应该对表格作页面布局,和<a target="_blank">之类的语法作出限制。HTML现在不仅仅是静态页面,还是网页应用程序的界面的描绘语言,他应该能够做到交互的方方面面。XHTML的设计原则是页面具体的构造靠css,XHTML只定义数据之间的逻辑。比如,XHTML鼓励这样的代码:<div class="Title">CSDN</div><div class="Items"><div class="Item">社区</div><div class="Item">新闻</div><div class="Item">专题</div></div>
这样的代码,如果配合CSS用来画简单的页面确实是足够了。但是把XHTML想要作出复杂的界面,那就远远不够,而HTML能做到,原因在于HTML设计的目的就是用来描绘这些东西,把<img>用在界面上,而不是内容中,才可以做到很多复杂的界面。


如果把XHTML仅仅当成描绘显示数据的话,那么这显然不如直接用XML来描绘显示数据,同样上面的例子,如果用XML表示,那么是这样:<title>CSDN</title><items><item>社区</item><item>新闻</item><item>专题</item></items>  这样的描绘,明显比XHTML要优雅得多,因为XML不必考虑HTML遗留的各种element。但是问题在于这样的XML要显示出来,现在事实上能用的唯一方案就是用XSLT转换成HTML,然后再用CSS来补充HTML的不足。

把XML转换成HTML这一步骤明显不科学,我这里谈的这个XML,并不是那种用来做缓存的XML,也不是用来做SOAP传递数据的XML,而是已经格式化好的,准备拿给用户看的XML,理想的方案应该是直接用一个东西把这个XML的文本结构转换成用户屏幕上能够看到的图形结构,并且!很重要的是,还有交互接口!用CSS把XML显示,实际上是可以的,但是让这种办法行不通的问题在于,CSS只能定义如何显示,没法定义要接受什么用户输入。比如我想要做到用XML定义一个文本框,然后显示出来,那么CSS就做不到。
CSS除了无法定义输入,即使是显示也有不足,比如说一个盒,可以定义它的宽度,定义成百分比或者像素都可以,但是要想定义成比100%少300个像素,那就做不到,实际上这很常用,比如说一个页面要分栏,左边一栏是180px宽,右边一栏是120px宽,中间的就应该是100%-300px了。当然你可以说这个可以用float:right这样的奇淫异技来做到,那么垂直怎么办呢?并没有一个float:top这样的语法。当然,可能绝大多数画网页的都会觉得垂直方向无所谓,反正屏幕往下滚就行了。
我要说,这明显是不人性化的,一个windows窗口程序中可能会有滚动条,但是,滚动条滚动的时候会让整个菜单工具栏还有什么状态栏一起跟着滚吗?!!!
再比如说,我现在在写帖子的这个网页,发出回复以及那个文本框都在页面最下面,假如这个帖子有100楼,不论我是看完了所有回复,还是只看了前2、3楼的回复,还是只看了楼主的帖子,我都得滚到页面最下面才能写回复,而且我写回复的时候,如果想引用上面的话,还得再滚上去复制,这,一点也不人性化
因此,网页设计,在网页中,也应该是只滚动想要让他滚动的部分,所以垂直的方向,也应该是如上述,是需要一个类似100%-100px这样的一个定义高度的语法。那么我们就可以做到这样(overflow:auto的意思是让这个div可以滚动):
<div style="height:20px"><!--这里是顶上的工具栏--></div>
<div style="height:50%-20px;overflow:auto"><!--这里是楼主--></div>
<div style="height:50%-100px;overflow:auto"><!--这里是其他回复--></div>
<div style="height:100px">
<div style="input:editbox"><!--这里是下面的回复框框--></div>
<button>发出回复</button>
</div>

据Atry预测,height和width这两个CSS属性,在5年以内就会支持我所说的特性,同时定义百分比和像素值,以及类似input:editbox这样的CSS中定义可以接受输入的文本框下拉框什么的。

CSS还有不足的地方就是背景图片,应该要允许一个element拥有多个背景图片,这样就可以设置好边框了

  评论这张
 
阅读(137)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018