"); //-->
近来,在Web开发中”框架”是一个相当时髦的词。比如JavaScript 框架 YUI、 JQuery和Prototype 都引起广泛的关注, Web应用框架Rails and Dojo 更是引人瞩目,仿佛所有人都使用某种框架来开发自己的网站。但究竟什么是框架?是不是框架仅仅是对程序员有用,设计师是否可以从中收益? 什么是框架? 为了便于沟通,我们给“框架”统一一个定义(至少在本篇文章中是统一的):一套包含工具、函数库、约定,以及尝试从常用任务中抽象出可以复用的通用 模块,目标是使设计师和开发人员把重点放在任务项目所特有的方面,避免重复开发。通常的讲,框架就是上面提到的JavaScript框架和Web应用框 架。 需要强调说明的是,我们不必讨论构造、打包发布,相反,一个框架只为你或你的团队使用即可。 有些时候,你可能尝到了抽象类似的CSS代码的甜头,在那些同时设计几个类似网站的设计师身上表现最为明显。此外,团队中的设计师们从框架的方法上 有很多的获益。比如,我在一家报馆工作,所有的20多个网站保持着很多的共同点,基于新闻网站的特点,它们趋向于更加相似,而不是差异。但是,即使单独一 个设计师,设计一个从表面上看有差异很大的项目,也可以为CSS框架抽象出一些通用的小碎片。 劳伦斯日报(Lawrence Journal-World),我在那里工作,我们最近建立了一个CSS框架,并发现它是一个巨大的效率倍增。当然,我们花了数天时间自己创建了一个 CSS框架,但一旦框架完工,开发高质量网页的速度是极快的。更何况,既然团队每一个设计师现在都使用这个框架,当一个设计师修改另一个团队成员网页时, 他们不再需要花20分钟理解别人的构建思路,可以马上上手。 有那些可以忽略? 当投入到一个整体性很强的CSS框架,你想寻找的东西,是每个项目都做了一遍又一遍的重复通用的代码,目标是巩固这些代码核心地位,遵循“不重复自己(Don’t Repeat Yourself)”编码方法。这使得维护工作容易了许多,还可以帮访问者节省带宽开销。 几乎每个我参与的项目中,我必须声明的几个CSS问题: “大量重置”浏览器默认风格,比如,设置所有元素的margin和padding为0,去掉框架(framesets)和图片(images)的border,等等。 另外要做的可能是抽取hack(如兼容那些旧浏览器)加入自己的扩展的样式模块。我自己尝试过,但发现hack过于专有而不能抽取到通用框架里。 什么是真正的益处? 框架的真正好处是能够快速启动工作,你可以创建一个新的(X)HMTL文件,引入你框架,你不用再处理重置padding 和 margins的事情,漂亮的排版,干净的表单,整齐的布局,有效的widgets,等等。很明显,很明显,虽然,你一定要来定制外观和感觉为每个站点。 为实现这一目标,所有你需要做的是复写,并添加到默认的风格是必要的。 很显然,尽管你必须为每个网站定制外观,为了完成这一任务,你所需要做的就是在默认的样式上加几行代码。举个例子,如果在你的框架里,为所有的 class属性为“tabs”的UL标签设置了基本的水平导航样式,并且有一个灰色的边框,你只需要几行CSS代码,就可以定制成你的网站所符合的外观样 式。 Example Source Code
列表左浮动,并且将链接以块的形式置于列表当中,链接也左浮动,字体居中,象烦人的广告一样的这些工作,框架以帮你完成,在你的网站设计工作中,只需集中精力处理特别的、有趣的网站细节,而不是写已经写过百万次的CSS代码。 如何构建一个CSS框架? 构建一个框架有几种可能的方式,但最常见,可以说是最有用的,抽象通用的CSS放到一个独立样式表文件,该样式表文件只包含整体的一个特有部分。例 如,你可以,一个样式处理排版,另一个处理大量重置。这种好的方法能使你选择性引入你需要的样式,在你框架里可能有六七个不同的样式文件,但不需要其中的 一两个,只要不引入即可。我们团队创建的框架包含5个样式文件: reset.css —处理重置 忠告 这种方法不错,但也带来新的问题:增加了每一个页面的http链接数。对于大流量和中等流量的网站,每个页面增加5个以上HTTP连接数,系统管理员可能就麻烦大了。两个可能解决办法: 把所有样式都放到一个文件里,而不是分成多个模块。这里的问题是,失去了框架只包含特定文件的灵活性,而且维护也变得麻烦。 总结 我们web设计师往往经常重复自己,就像我程序世界里的那些朋友,我们重置浏览器默认样式、设计布局和导航菜单写了一遍又一遍——几乎每个项目。花 一点时间整理CSS 框架,可以使你快速的启动每一个网站项目,更轻松的维护网站,并帮助团队里其他的设计师理解你作品。要注意的一点,这些益处的获得必须以不影响网站的性能 为前提。 |
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。