面向对象CSS FAQ[译]

作者:ytzong 时间:2009-10-27 15:59:00 

在OOCSS中怎么定义“对象”?

对象类似JAVA中的类,保持着OO的特征。

一个CSS对象由4部分组成:

  1. 可能是一个或多个DOM节点的HTML

  2. 由wrapper节点的class名开始的CSS样式声明

  3. 类似于背景图片和显示用的sprites组件以及

  4. JavaScript行为,监听或者与对象关联的方法

这可能令人费解,因为每个CSS class不是其自身必要的对象,但可以是一个wrapper class的一个部件。比如:

<div class="mod">
        <div class="inner">
                <div class="hd">Block Head</div>
                <div class="bd">Block Body</div>
                <div class="ft">Block Foot</div>
        </div>
</div>

对象是一个class为mod的模块。包括4个部件节点(不能独立于模块外,包括2个区块,inner和body,和两个可选择的区块,head和foot)

OOCSS如何提升性能?

OOCSS具有双倍的性能优势:

  1. 高度重用的CSS代码,只需要很少的CSS代码,意味着:

    • 更小的文件,从而更快的传输

    • CSS代码在站点页面中调用的比重增大则有希望被复用或被浏览器缓存

  2. 就浏览器而言更少的重绘和布局计算

    • 单个页面,CSS规则复用的越多,渲染引擎花在“computed values”的计算时间越少

    • 手动增加的"extending"类,重写更少的规则,这再一次意味着引擎做很少去应用规则

要用ID来对内容写样式吗?

当你在同一页面(或者同一站点同时缓存良好)复用一个对象时,这是性能的“免费赠品”。用ID来写样式在同一页面中只能使用一次。@cgriego (twitter) 拿它与singletons比较过,我认为非常精确。可能有些情况下你要用ID定义样式,比如非常特殊的 header menus,此时你可以在用ID来沙箱(译注:动名词)特殊元素并确保此处的代码不会影响站点的其它地方。选择ID而非class前要三思,随着站点的发展,真的很难预料其他人会怎么处理依据你的CSS所构建的HTML。如有选择的余地,尽可能的考虑扩展性。

我正在考虑移除模板head, body, foot中的ID。某些人或许有多个主区域。站点的多个header 和 footer更难以猜测,但我敢打赌肯定有设计师会这样想,所以ID很可能会消失(不太顺,看原文:Someone could have multiple main content areas. Multiple site headers and footers are more difficult to imagine, but I bet there is a designer who can dream up something like that, so the IDs are very likely to disappear.)。

另一方面,ID hooks are great for linking。放在HTML中,不过别用它们来写样式。

标签:面向对象,css,对象,OOCSS
0
投稿

猜你喜欢

  • 复习一下sql server的差异备份

    2024-01-20 13:30:34
  • Python搭建代理IP池实现接口设置与整体调度

    2023-05-25 11:52:03
  • SQL数据库操作类

    2009-01-14 16:26:00
  • 一文详解CNN 解决 Flowers 图像分类任务

    2023-02-28 22:23:39
  • python通过pil模块获得图片exif信息的方法

    2021-08-26 14:31:21
  • 图解Golang的GC垃圾回收算法

    2023-07-12 23:25:45
  • 一个ASP写的侧边菜单栏

    2010-05-27 12:22:00
  • asp版FCKEditor编辑器的用法

    2008-07-05 12:15:00
  • Web开发人员常用速查手册 英文集合推荐

    2023-03-27 22:22:03
  • selenium+opencv实现滑块验证码的登陆

    2022-03-28 06:49:04
  • Pytorch 使用不同版本的cuda的方法步骤

    2023-02-06 07:52:23
  • Codeigniter发送邮件的方法

    2023-11-15 05:08:25
  • 后工业时代的后规范思考2——如何应用

    2009-06-05 12:35:00
  • Python标准库06之子进程 (subprocess包) 详解

    2021-05-24 02:00:25
  • Python Selenium自动化获取页面信息的方法

    2023-08-22 18:29:31
  • Python实现利用163邮箱远程关电脑脚本

    2023-08-29 10:08:08
  • Python 如何利用ffmpeg 处理视频素材

    2022-05-31 19:25:17
  • 阿里云CentOS7搭建Apache+PHP+MySQL环境

    2023-11-23 02:44:59
  • Python字典“键”和“值”的排序5种方法

    2022-01-13 04:45:42
  • asp如何用通过Web访问OLAP数据?

    2010-06-16 09:52:00
  • asp之家 网络编程 m.aspxhome.com