关闭窗口
首页
厅长之窗 李春燕 李江河 赖厚明 吴海平 熊远国 唐国栋
机构设置及职能 厅办公室 综合规划处 科学技术处 无线电管理处 信息化推进处 网络及通信管理处 机关党委(人事处) 纪检组(监察室) 机关后勤服务中心
工作动态 综合动态 电子信息产品制造业动态 软件业动态 无线电管理动态 信息化推进动态
公告公示 公告 无线电管理公告 电子信息产品制造业公告 软件业公告 信息化推进公告
领导讲话 部省领导讲话 厅领导讲话 李春燕 李江河 赖厚明 吴海平 熊远国 唐国栋 年度工作报告 其他
政府文件 赣信人 赣信字 赣信综 赣信科 赣信无 赣信信 赣信监 <赣信发 赣信厅办 赣信党字
工作简报 信息产业厅大事记 厅简报 专项工作简报 专项工作简报 政务双评 保持共产党先进性教育 惩治商业腐败
政策法规 法律 行政法规 部门规章 地方性法规 省政府规章 无线电管理专门法律法规 规范性文件 法律法规 频率台站管理规定 设备管理规定 收费规定 规章制度
统计信息 全国通信行业运行情况 我省电子信息产业经济运行情况 我省软件产业经济运行情况 我省无线电台登记情况
人事教育 人才招聘 人事教育 文件选编 文件选编
纪检监察 工作部署 党纪法规 动态信息 警示教育
规划部署 电子信息产品制造业规划部署 软件业规划部署 无线电管理规划部署 信息化规划部署
产业动态 电子信息产品制造业动态 软件业动态 信息化推进动态 无线电管理业动态
知识园地 电子信息产品制造业知识 软件业知识 信息化知识 无线电知识
频道首页
政务公开指南
行政执法目录
办事项目 综合规划处 科学技术处 信息化推进处 无线电管理处
相关法规文件
办结通知
行政处罚
收费标准
数据库查询
频道首页
厅长信箱
行政投诉中心
信访、纠风热线
纪检举报
便民服务
常见问题 办公室 综合规划处 科学技术处 无线电管理处 信息化推进处 人事处 省无线电监测站 其他问题
民意调查
便民服务
数据库查询
网站群导航 网站全目录 繁體 简体 收藏本页 设为首页 电子信息产品制造业 软件业 无线电管理 信息化推进
 您现在的位置: 江西信息产业厅 >> 政务公开 >> 知识园地 >> 信息化知识 >> 文章正文
  译稿:网站设计之合理架构css 打印此文【字体:
译稿:网站设计之合理架构css
作者:佚名    文章来源:不详    点击数:    更新时间:2006-12-1
 
架构css
  在当前浏览器普遍支持的前提下,css被我们赋予了前所未有的使命。然而依赖css越多,样式表文件就会变得越大越复杂。与此同时,文件维护和组织的考验也随之而来。
  (曾几何时)只要一个css文件就够了——所有规则(rule)汇聚一堂,增删改都很方便——可这种日子早已远去。(现在)建立新网站时,必须花点时间好好筹划怎么组织和架构css。
  文件的组织
  构建css系统的第一步是大纲的拟定。(我认为)css组织规划的重要性堪比网站目录结构。(htmlor注:用词夸张一点,让你加深记忆) 没有哪种方案放之四海而皆准,因此我们会讨论一些基本的组织方案,以及它们各自的利弊。
  主css文件
  通常可以使用一个主css文件,来放置所有页面共享的规则。这个文件会包含默认的字体、链接、页眉和其他等样式。有了主css文件之后,我们开始探讨高级组织策略。
  方法一:基于原型
  最基本的策略是基于原型页面(archetype page)分离css文件。假如一个网站的首页、子页面和组合页设计不同,就可以采用基于原型的策略。(这种策略下)每个页面都会有专属的css文件。
  在原型数量不多的情况下,这个方法简单明了、行之有效。然而,当页面元素并不按部就班的位于各个原型页时,问题就出现了。如果子页面和组合页共享某些元素,而首页却没有,我们应该怎么做呢?
  把共享元素放入主css文件。这虽不是最纯正的解决办法,却适用于某些具体情况。可是如果网站庞大,(这样做的话)主css文件会迅速膨胀——这就违背了分离文件的初衷:避免导入不必要的大文件。
  在组合页和子页面的css文件里各放一份样式代码。(这么做)就意味着要维护冗余代码,很显然我们不想这样。
  创建一个新的文件,由这两种页面共享。这听起来不错。不过假如只有10行代码,我们创建这个文件仅仅是为了共享这10行代码?(htmlor注:杀鸡用牛刀?) 这方法很纯粹,但如果网站庞大有很多对页面共享很少量元素时(htmlor注:比如30对页面分别共享10行代码),就显得很笨重了。
  创建一个单独的css文件,包含所有共享元素的样式。这方法可能比较简单,却要取决于网站的大小和共享元素的多少。有种情况会很烦:导入了一个很大的css文件,但页面只用到一小部分样式——还是那句话,这违背了分离文件的初衷。
  这就是我所说的重叠的两难(overlap dilemma)。零碎css规则的重叠不一而足,并没有一个完全清晰无误的方案来组织它们。
  方法二:基于页面元素/块
  如果网站使用
服务器
端include,这个方法会很不错。举例说明,如果使用页眉include,它会有自己相应的css文件。页脚或者其他部分的include可以如法炮制,只须导入自己的css文件。这个方法简单干净,不过可能会产生很多小css文件。
  举例来说,假如页脚的样式只需要20行css代码,单独创建一个文件就划不来了。而且这个方法会导致每个页面都包含一堆css文件——因为有多少include,就得有多少css文件。
  方法三:基于标记
  这个方案直观实际,与前一个类似。如果网站共有30个页面,其中10个含有form,那么可以创建一个css文件专门处理form的样式,只在这10个页面导入它。如果另外10个页面含有table,就创建一个文件专门处理table样式……诸如此类。
  另外的组织技巧
  除了用主观的方法组织文件,我们还要考虑如
打印
、手持设备和屏幕等多种媒体类型。这虽然已经很清楚的定义过,可依旧是建立文件结构时应该考虑的一个因素。一旦必须支持多种媒体类型,主css文件里的某些规则可能就得重新考虑。
  另外,品牌联合也可能是一个重要因素。(htmlor注:如google和nike联手推出的joga) 如果涉及品牌联合,你就得考虑哪些元素应该调整以适应另一品牌。比如分别使用不同的css文件等。
  还有一个常被忽略的技巧:使用嵌套的@import语句。只包含一连串@import语句,或者再加几句css规则,就能创建一个css文件。用这个方法完全可以创建网站的主css文件(用@import导入各部分的样式文件)。假如网站的每个页面都导入了4到5个不同的css文件,无疑你应该考虑使用这个技巧。
  规则和选择器的组织
  谈完了文件组织,接着讨论一下怎么组织文件里的东西吧。很自然,我们希望在文件里畅通无阻的浏览,迅速找到要编辑的选择器(selector)或规则。
  冗余 vs. 附属
  正如Dave Shea在其文章《冗余 vs. 附属》(Redundancy vs. Dependency)里所说的,你必须不断了解级联(cascade)。你要决定是对选择器编组(意味着附属),还是把它们分离(意味着冗余)。编组可以保持代码简洁扼要,可是会建立附属关系,导致维护开销增加。如果不编组,就会增加文件大小,让相似的选择器保持一致变得困难。只有做好这种权衡、取舍,才能每次都作出正确的决定。
  按相互关系/上下文编组
  既然文件组织可以是主观的,那么显然,按照规则和选择器与其他部分的相互关系来进行编组是最好的方法。举例说明,假设你用容器、页眉和页脚来完成布局,就应该把它们编成一组。
  这似乎很简单,其实不然。比如,把页眉中的导航加入css时,是将它跟父元素编组还是独立编组?这种情况下,要视乎规则的上下文。通常,页眉与页面布局相关,应该与其他布局元素一起编组。而导航是页眉的一块,应该和页眉的其他块编组,而不是页眉本身。
  使用注释
  跟大多数代码类似,注释是组织良好与否的关键。应该根据css的控制范围,清楚的标注每节(section)。最好确保注释视觉突出,以便在内容滚动、一目十行时快速定位。
  Doug Bowman在其文章《css组织技巧之一:标记》(CSS Organization Tip #1: Flags)里把css注释玩得高明之极。他详细说明了在节名之前加上等号,以便使用文本编辑器的查找功能迅速跳到某节。
  别忘了
  你应该细致认真的了解了特异性、级联和继承,并善用它们。它们之中的每一项都可以是你最可怕的敌人,也可以是你最友善的朋友。当建立庞大的网站时,是否理解这些细微精妙之处,决定了你所构建的是坚如磐石的系统,还是经不起风雨的豆腐渣工程。(htmlor注:这句完全意译,比较爽)
  属性的组织
  现在我们了解了文件的组织,也知道了文件内规则的组织,但还有一个重要的组织环节(没有提到),那就是属性(attribute)。虽然属性比前两个概念更简单,可是还有一些非常好的、能够保持规则整洁的方法很值得一提。
  按字母排序
  提到属性,如果说需要遵循什么原则的话,那就是:按-字-母-排-序。其实这招对于属性浏览帮助不大,不过可以防止属性值覆盖这种偶然事件的发生。
  举个例子吧,已经数不清有多少次,我为某个选择器定义过了margin值,之后的某天无意间又加了一个(或前或后)。(这种情况下)后一个属性自然会起作用。假设不知道第二个属性存在,不管我怎么调整第一个属性值、刷新浏览器,也看不到页面变化。(htmlor注:这个问题我深有体会) 如果按照字母顺序排列,你就会发现margin被定义了两次(因为它们挨在一起),这个问题自然可以避免。
  优先项
  当网站复杂、牵涉太多css文件时,会建立大量的附属关系。一旦需要定制某个元素特有的样式,!important选项似乎是最佳选择。没错,!important是能解一时之需,但最好搞清楚导致问题的根源,然后根据级联关系决定是否真的需要用它。
  如果你对上文提到的特异性、级联和继承很熟悉,大可不必抱着!important一颗树不放。(htmlor注:整片森林等着你~) 当然它还是会派上用场,不过使用之前要对具体情况了然于胸。千万不要因为不知问题的症结所在而把!important当作捷径或是补救方案。
  小结
  当我们变得依赖css而使样式表日渐复杂时,就需要正确的计划来避免犯错,并使代码易于维护。既然完美无缺的方案并不存在,那么了解css的工作方式以及文件、选择器和属性的多种组织方案,无疑有助于我们写出优质的代码,经受住时间考验。
文章录入:高琨    责任编辑:高琨 


相关文章:
FireFox浏览器领军人物:网络斗士
别样中秋:网上惊现Firefox月饼
社科院:网游是未成年人犯罪诱因
译稿:现代世界十大最糟糕科技现象
张琪司长在第三届中国国际网络文化论坛上的讲话:网游、动漫产业与先进网络文化
奥运警报:网站假冒奥运网发动彩票攻击
嘟嘟牛实现:网吧计费“苛求”完美
观点:网络交易模式中C2C暂时只能为辅
分析:网上开店如何才能够被有效的规范
人民日报:网络交易纳税并非无法可依
业内观察:网络交易亟待建立税收征管体系
分析:网银合作能否解中小企业融资之渴?
应用分析:网格计算让安全变得更为复杂
读者来稿:我眼中的Linux
立体融合防御体系:网络安全出重手
23岁青年彭海涛:网络游戏“玩出”1亿
双核网吧路由:网吧接入速度欲革命?
千千静听5.0:网络音频一网打尽(组图)
商务部:网上交易也应交税 目前鼓励不强制
视频:网络色情报告
  • 上一篇文章:

  • 下一篇文章:
  • 政务公开的内容
    服务承诺
    监督检查
    政务详细指南
    行政执法主体
    行政执法依据目录
    政务详细指南
    无线电频率指配
    无线电台(站)设置审批
    船舶、机车、航空器上的制式无线电台(站)强制备案
    无线电台(站)呼号指配
    无线电发射设备进关核准
    建立卫星通信网和设置卫星地球站审批
    无线电发射设备型号初审
    卫星电视广播地面接收设备的定点生产许可的初审
    申请军工电子装备科研生产许可证的推荐
    计算机信息系统集成资质认定的初审
    信息系统工程监理资质认证
    信息系统工程监理工程师资质认定的初审
    作弊录音
    执业资格考试(认定)合…
    2008年上半年软考系统分…
    2008年上半年软考信息系…
    2008年上半年软考信息系…
    2008年上半年软考信息系…
    2008年上半年软考网络工…
    2008年上半年软考数据库…
    2008年上半年软考软件设…
    2008年上半年软考软件评…
    关于我厅 | About Jxdii | 法律声明 | 个人隐私声明 | 网站帮助 | 网站地图 | 电子邮局 | 个性化订阅 | 问卷调查 | 旧版网站回顾

    Copy-right © 2000 - 2009 JXDII GOV.All Rights Reserved

    主办单位:江西省信息产业厅 地址:江西省政府大院北二路102号 邮编:330046 联系电邮:master@jxdii.gov.cn
    赣洪备2-4-3-0856214