在线教程
1 什么是OOCSS
2 OOCSS中的对象
2.1 类 ooCss.Type
2.2 成员ooCss.Member
2.3 样式表ooCss.Sheet
2.3.1 ooCss.load
2.3.2 ooCss. create
2.3.3 <oocss>标签… 4
2.4 命名空间ooCss.Namespace. 4
2.5 变量… 5
2.6 表达式:… 5
1 继承… 5
1.1 单继承… 5
1.2 多继承… 6
1.3 多层继承… 6
2 覆盖… 7
3 修饰符… 8
3.1 private. 8
3.2 protected. 9
3.3 public. 9
3.4 internal. 10
3.5 sealed. 10
3.6 abstract. 10
4 成员访问… 11
4.1 访问基类成员… 11
4.2 对非基类成员的访问… 11
5 书写格式… 12
6 开关项… 13
7 输出面板… 13
8 反馈… 13
9 版权所有… 13
1 什么是OOCSS
OOCSS是Object Oriented Cascading Style Sheets的缩写,于2008年10月提出,是用面向对象的方式使用CSS。
2 OOCSS中的对象
2.1 类 ooCss.Type
CSS中的Rule,一个OOCSS类,便是一个样式规则。
.div
{
color:red;
}
以上代码定义一个类 .div
2.2 成员ooCss.Member
构成类的属性,如color、border、font-size等。
.div
{
color:red;
}
以上代码给类 .div 定义一个成员 color,值为red;
2.3 样式表ooCss.Sheet
包含多个类,通常对应一个.css文件,可以通过以下几种方式来创建样式表
2.3.1 ooCss.load,
该方法有三个参数:
url,css文件的路径
defer,延迟加载的时间,默认0,不延迟加载
namespace,如果css文件中没有定义命名空间,则可以通过这个参数指定。一旦指定,则会覆盖css文件中的定义
如:
<script type=’text/javascript’>
ooCss.load(”a.css”) ;
ooCss.load(”a.css”,100) ;
ooCss.load(”a.css”,100,’namespaceA’);
</script>
2.3.2 ooCss. create,
该方法有三个参数:
defer,延迟加载的时间,默认0,不延迟加载
namespace,如果css文件中没有定义命名空间,则可以通过这个参数指定。一旦指定,则会覆盖css文件中的定义
content,样式内容
如:
<script type=’text/javascript’>
ooCss.create(100, ‘mespaceA’,’body{font-size:9pt;}’) ;
</script>
2.3.3 <oocss>标签
在页面head或body下定义oocss标签。
如,可以通过如下标签,加载a.css
<oocss url=’a.css’ defer=100 namespace=’namespaceA’ />
也可以通过以下方式创建一个样式表
<oocss defer=100 namespace=’namespaceA’ >
body{font-size:9pt;}
</oocss>
2.4 命名空间ooCss.Namespace
用来存放类,通常一个命名空间包含一个样式表,也可以包含对个样式表。
可以通过如下方式定义:
@namespace namespaceABC;
Body{font-size:9pt;}
……
推荐把命名空间定义语句@namespace放css文件第一行,namespace前的“@”和最后的“;”是必须的,也可以在加载样式表时指定,如
<oocss url=’a.css’ defer=100 namespace=’ namespaceABC’ />
如果即没有在内容中指定,也没有在加载是指定,则会取样式表人url小写文件名作为命名空间。
2.5 变量
跟Javascript里面的变量相同,用来存储一个值,供其他地方访问;用var关键字定义,如:
@namespace namespaceABC;
var defaultColor=’red’;
public var defaultSize=12;
以上代码定义一个私有变量defaultColor和一个公有变量(全局变量)defaultSize
注意:var 关键字放变量名称前,修饰符放var关键字前,后面的‘;’号也是必须的。通常把变量的定义放css文件头部,命名空间后。
2.6 表达式:
用来计算值的一个字符串,用eval定义。如:
@namespace namespaceABC;
public var defaultSize=12;
body
{
font-size : eval(defaultSize+5)pt;
}
以上代码中,类body的成员font-size的值不是一个固定值,而是一个表达式,表达式内容为“defaultSize+5”,表达式引用了变量defaultSize,最后计算font-size成员值为“17pt”。
1 继承
OOCSS中可以用操作符“->”实现类的继承。
1.1 单继承
.base
{
color:red;
}
.son -> .base
{
font-size:12pt;
}
类 .son 继承自 .base ,除了拥有自己的成员 font-size还拥有继承自基类 .base 的成员 color,因此 .son 最终表现为 color:red;font-size:12pt;相当于以下定义:
.son
{
color:red;
font-size:12pt;
}
1.2 多继承
如果要将一个类继承自多个类,则可以用多个“->”操作符连接多个基类名称,如:
.base
{
color:red;
}
.baseBorder
{
border:1px solid gray;
}
.son -> .base -> .baseBorder
{
font-size:12pt;
}
类 .son 继承自两个基类 .base 和 .baseBorder,.son相当于以下定义
.son
{
color:red;
border:1px solid gray;
font-size:12pt;
}
1.3 多层继承
OOCSS允许一个类继承自另一个类的子类
.base
{
color:red;
}
.son -> .base
{
font-size:12pt;
}
. grandson -> .son
{
border:1px solid gray;
}
类 .grandson 继承 .base 的子类 .son,则 .grandson拥有自身的成员border外,还拥有 .son 的成员font-size和 .son继承自.base的成员color,.grandson相当于以下定义
. grandson
{
color:red;
font-size:12pt;
border:1px solid gray;
}
2 覆盖
在下面的类 .son 和.son的基类 .base 中,同时存在成员color
.base
{
color:red;
font-size:12pt;
}
.son -> .base
{
color:blue;
}
则.son只会继承.base类中font-size成员,基类的成员color将会被自身的color成员覆盖,但不影响基类本身的定义,上面的两个类等同于如下定义:
.base
{
color:red;
font-size:12pt;
}
.son
{
color:blue;
font-size:12pt;
}
3 修饰符
OOCSS 2.0 支持的修饰符有:
private , protected , public , internal , sealed , abstract
3.1 private
私有,表示一个类或者成员不能供外部访问。
如果在一个类的定义中加上private关键字,则该类不能被其它样式表中的类访问只能在对当前样式表可见。
例如,在样式表a.css和b.css中进行如下定义
| a.css |
| private .base { color:blue; } .sonA -> base } |
| b.css |
| .sonB -> base { color:blue; } |
上面的定义中 a.css中的 .sonA 类可以正确继承 .base ,而 b.css 中的.sonB则不能实现对 .base的继承,因为.base为私有,对a.css外的b.css不可见。
如果在一个成员定义中加上private关键字,则该成员不能被其它类访问,也不能被子类继承,只能在对当前类可见。
例如,在样式表a.css和b.css中进行如下定义
.base
{
private color:blue;
height:30px;
}
.son -> base
{
}
则.son只能继承.base中的height成员。
3.2 protected
保护,该修饰符只能应用于成员对象,表示一个成员只能供当前类及其子类访问。如
.base
{
protected color:blue;
height:30px;
}
.son -> base
{
}
body
{
color:eval()
}
则.son便继承了.base中的两个成员color和height。
3.3 public
公有,该修饰符可以用于类、成员和变量,表示其访问不受任何限制。
3.4 internal
内部,该修饰符可以用于类、成员和变量,表示其访问访问只限于当前样式表。
3.5 sealed
密封,该修饰符只能应用于类,密封类不能被其它类继承。如
.base
{
protected color:blue;
height:30px;
}
.son -> base
{
}
类div不能正确继承 .redDiv ,因为.redDiv是密封类,但调试的输出窗口不会给出任何提示。
3.6 abstract
抽象,该修饰符只能应用于类,表示该类是一个抽象类,抽象类不会在页面中呈现出来,一般用作其它类的基类。如
abstract .base
{
color:red;
}
.son -> .base
{
}
类. base是抽象类,可以被.son正确继承,但最终.base不会被呈现到页面,如 < id=’redDiv’ div class=”base”>红色</div> 这样的引用是错误的,.base 类不会对redDiv有任何影响
注意:默认情况下,类、成员是共有的,变量是私有的。
4 成员访问
4.1 访问基类成员
在OOCSS中,一个类可以用bases访问自己的所有基类,如:this.bases 。
由于在OOCSS中一个类可以继承多个基类,因此,基类是一个数组对象,而类的名称是可以同名的,所以基类每一项可能又包含同名的几个类,所以类的基类是一个二维数组对象,可以像这样访问类的某一个具体基类:
.base1
{
color:red;
height:30px;
}
.base2
{
font-size:9pt;
}
.son -> .base1 -> base2
{
font-size : eval(bases[‘base2’][0].get(‘font-size’));
color:eval(bases[0][0].get(‘color’));
height:eval(base[0].get(‘height’);
}
而通常我们的类都只继承一个基类,因此,OOCSS允许用base访问第一个基类。
4.2 对非基类成员的访问
要访问不是自己基类的其他类,可以在Namespace访问。如:
@namespace abc;
.base1
{
color:red;
height:30px;
}
.base2
{
font-size:9pt;
}
.son
{
font-size: eval(namespace.abc[‘.base2’][0]. get(‘font-size’));
font-size : eval(namespace.abc[‘.base2’][0]. get(‘font-size’));
}
5 书写格式
OOCSS在兼容传统CSS语法的同时,也有局部调整,下面的一段OOCSS代码包含了所有新的特性
| @namespace setting; //定义命名空setting
public var defaultSize=10; //定义全局变量 defaultSize var maxHeight=40; //定义私有变量 maxHeight var logoUrl=”images/logo.gif” //定义私有变量 logoUrl private absolute .base //定义私有的抽象类 .baseColor { color:blue; //定义成员color font-size:12pt; //定义成员 font-size }
.header //定义类 .header { Height:eval(maxHeight); //定义成员height,值等于 maxHeight #logoDiv //嵌套定义类 .header #logDiv { Background-image:url(eval(logoUrl)); } .navBar a:hover //嵌套定义类 .header .navBar a:hover { Font-size:9pt; span -> .base //嵌套定义类 .header .navBar a:hover span,继承自.base { font-size:9pt; //覆盖基类成员 font-zie } } }
|
6 开关项
ooCss.LINK_OFF :关闭<link>标签检测,默认开启
ooCss.OOCSS_OFF:关闭<oocss>标签检测,默认开启
DEBUG_OFF:关闭调试功能,默认关闭
7 输出面板
我们可以通过ooCss.DEBUG_OFF=true/false来开启或关闭输出面板;
供下载的包中有两个Javascript文件,分别是:
Oocss-2.0.js,是经过压缩的,默认没有开启输出面板
Oocss-2.0-debug.js,没有经过压缩,是调试用的,默认已经开启调试面板
8 反馈
如果你有对OOCSS任何建议或疑问,可发送邮件到myoocss@gmail.com,也可到官方网站ww.oo-css.cn提交留言。
9 版权所有
李子哥哥 ® OOCSS ®
本文档中的信息,包括 URL 和其他 Internet Web 站点参考,如有变更,恕不另行通知;文档最新版本将始终在http://www.oo-css.cn网站发布。遵守任何适用的版权法是用户的责任。在不限制版权所辖权利的前提下,未经作者(李子哥哥)的明确书面许可,无论出于何种目的,均不得以任何形式或借助任何手段(电子、机械、影印或其他手段)将文档中的任何部分、恶意传播或用于商业用途。
Microsoft 可能拥有对本文档内容的专利、专利申请、商标、版权或其他知识产权。除了任何Microsoft 授权许可协议所提供的明确书面许可,拥有本文档并不赋予您任何有关这些专利、专利申请、商标、版权或其他知识产权的许可。
© 2009-2015 李子哥哥。保留所有权利。

