产品中心

新闻邮件订阅

IT要闻
产品评测
技巧推荐
社区精华
请输入您的e-mail地址:

使用技巧 - How to Use

 您的位置:首页 > 使用技巧 > 编程 软件
CSS模块化设计——从空格谈起
daijianchun Levelup | 2007-12-18 10:27:35 |

引:简单地说,CSS语言类似JS语言,是通过客户端下载后,通过本地浏览器解析。而CSS语言又是非常低级的“弱类型”语言,离JS这种基于对象的比较完善的“弱类型”语言,还差相当一段距离。要知道CSS样式是定义出来的,

      一、空格运算符

      (1)CSS语言

      简单地说,CSS语言类似JS语言,是通过客户端下载后,通过本地浏览器解析。而CSS语言又是非常低级的“弱类型”语言,离JS这种基于对象的比较完善的“弱类型”语言,还差相当一段距离。要知道CSS样式是定义出来的,而样式的呈现是根据文档流顺序和CSS优先级别,浏览器自己识别计算后显示出来的。而浏览器又有忽略和纠错功能(尤以IE为甚),所以样式定义的语法有错误,并不影响浏览器正常工作,只不过显示不出应有的效果罢了。在我们设计定义样式的时候,排错是比较令人苦恼的,其本质原因是于这种弱类型CSS语言本身的不严禁性有关系的,所以我们就更应该注重CSS定义的严禁,才能出较少的错误,较快更好的完成工作。

      (2)CSS的运算符

      首先说,CSS语言的运算符就不多,有.#{}:";还有一个非常重要的空格。这几个运算符,都是常用的定义声明符号。而在CSS样式定义中,空格就有点特殊,我们可以把它视为在.Net或Java中命名空间或类包定义中的 . 运算符。换句话说,我们可以把空格视为路径指向的箭头,表明HTML标签的父子级别关系。CSS是与HTML想关联的,也就是说,CSS的每一个定义都与“某个HTML标签”或“某段模块化HTML代码”相对应,而HTML可以调用多个样式类。一个CSS样式类可以根据HTML代码来“复合定义”;一个HTML标签也可以“复合调用”多个样式类。所以说,CSS样式定义的复杂性与关联的HTML是密不可分。

      (3)实例说明

以下是引用片段:
<style type="text/css">
td .b { 
       color:#00ff00; 
}
th.b {  
       color:#ff0000;
       font-family:黑体;
       font-size:20px;
}
.b {
       color:#0000ff;
       font-size:12px;
}
</style>
<table>
       <tr>
              
              <td><div class="b">第一个类b的类路径是th .b</div></td> 
              <th class="b">第二个类b的类路径是th.b</td>
              <td class="b">第三个类b的类路径是 .b</th>
       </tr> 
</table>
<div class="b">第三个类b的类路径是 .b</div>

      讲解:

      1、第一个类b的类路径是td .b,定义该HTML文档内所有的td标签内的带class="b"的标签的样式 。

以下是引用片段:
td .b { 
       color:#00ff00; 
}

      定义的是<td><div class="b">text</div></td>这组代码块中的b类,class="b"是包含在td标签内的,是td的子级,所以在这里要用“空格”指向明确表明父子级别关系。

      2、第二个类b的类路径是th.b,定义的是该HTML文档内所有的带class="b"的th标签的样式。

以下是引用片段:
th.b {  
       color: #FF0000
}

      定义的是<th class="b">text</td>,在这里的代码中,th和class='b'是平级的,先th后.b组成一个同级类路径th.b,所以没有空格代表“HTML类”和“自定义类”具有同级路径!

      3、第三个类b的类路径是 .b,定义该HTML文档内所有的td标签的样式,它是该文档的一个全局样式,是body .b的简写。

以下是引用片段:
.b {
       color:#0000ff;
       font-size:12px;
}

      定义了<td class="b">第三个类b的类路径是td.b</th>和<div class="b">第三个类b的类路径是 .b</div>这两处的b类没有明确的路径指向,优先级别要比有明确路径的低。

      4、大家可以看到,在HTML代码中,同样都是class="b",但是在CSS定义时,采用的类路径不同,作用就不同了。类路径越完整,优先级越高。在具体应用的时候,我们可以,使用完整类路径来定义某HTML代码块某一些特殊地方,做异化处理。例如本例表头th的黑体字显示效果。

      二、HTML中复合调用样式类

      (1)在一个HTML标签内,可以复合调用多个样式类,也是用空格做运算符,复合类名总字符不能超过256。

      (2)示例:

以下是引用片段:
<style type="text/css">
.myTxt {
       font-size:50px;       
       font-family:Arial Black;
}
.txtRed {
       color:red; 
}
.txtOrange {
       colorrange;
}
.txtGreen {
       color:green;
}
.txtBlue {
       color:blue;
}
</style>
<ul>
       <li class="myTxt txtRed">123</li>
       <li class="myTxt txtOrange">Text</li>
       <li class="txtGreen">Text</li>
       <li class="myTxt txtBlue">Text</li>
</ul>

      (3)应用:

      对于某些多数样式属性累同,仅有几个不同样式属性的定义,可以用这个方法来缩写。也可以在某个不改变某个通用样式类的同时,用HTML调用复合类,突出局部特例。

      三、CSS+HTML的模块化设计

      (1)举个简单例子:

      .classNameA .classNameB .classNameC 

      就是一个类包路径,A包含B,B包含C. 意思就是,在A块内的全部HTML代码(包括B块、C块),先应用样式classNameA; 然后,在B块内的全部HTML代码(包括C块),先应用样式classNameA,之后再先应用样式classNameB; 最后,在C块内的全部HTML代码,先应用样式classNameA,再先应用样式classNameB,最后应用样式classNameB;

      (2)在样式表中,关于类包的路径,对于某些复杂的HMTL代码,最后写绝对路径,就是每一个类名都不要拉下。这样可读性更强,错误率更小;当然,宽容度就越低。

      例如

以下是引用片段:
<style type="text/css"> 
/*控制 li 的样式*/ 
.a1 ul li { 
    color:red; 

/*控制class="a"的div块内,全部连接 a 的样式*/
.a1 a {
    font-size:20px;
}

/*控制class="a"的div块内,一个一个为 class="mylink"的样式*/
.a1 .myLink {
       font-size:12px;
}

/*控制 li 内连接a的样式*/
.a1 ul li a {
       font-size:40px;
}

/*控制名 li 内,一个为 class="mylink"的连接的样式 */
.a1 ul li .myLink {
       font-size:60px;
       font-family:黑体;
}

/*b1样式*/
.b1 {
      color:blue;
}
/*控制 li 内 b1 的样式*/
.a1 ul li .b1 {
     color:green;
}
</style>

<div class="a1">
      <a href="#">linkText</a>
      <a href="#" class="myLink">titleText</a>
      <div class="b1">b11111111</div>
      <ul>
            <li>
                   <a href="#">titleText</a>
                   <div class="b1">nameCN</div>
            </li>
            <li>
                   <a href="#" class="myLink">titleText</a>
                   <div class="b1">nameCN<span class="c1">nameEN</span></div>
            </li>
            <li>titleText</li>
            <li>titleText</li>
            <li>titleText</li>
      </ul>
</div>

      样式,按*.HTML从内层到外层;按*.CSS上下文,从下文到上文;按内联样式表上下文,从下文到上文;按内嵌>内联>外联的优先级;
叠加覆盖计算最终显示效果。

      CSS语句,严格说是JS代码的一类,换句话说,CSS语句也是“弱类型”的,空格是一个“运算符”,由于“弱类型”不严谨,所以,没有空格的时候,虽然不报错,也有显示效果,但那是按错误逻辑运算的,有时歪打正着,但确莫名其妙。再加上有很多满足各浏览器的HACK语法,CSS语句就更加零乱不堪。所以,写的时候,尽量在满足宽容度的情况下,严禁一些。

 
 
 
推荐】【打印
 
相关文章
· 调整CSS类型的顺序改变链接翻滚 2007-12-07 10:32:52
· 用CSS实现的固定表头的HTML表格 2007-12-06 11:39:31
· 运用CSS样式表立刻改变鼠标的样式 2007-12-06 11:30:08
· CSS让网页更容易设计与维护 2007-12-06 10:56:05
· 用CSS制作Alpha滤镜测试板 2007-11-30 10:23:56
 
 
PCWorld社区

网友评论
以下网友评论只代表网友个人观点,不代表PCWorld观点
发表内容:

SPONSORED LINKS

联想M930一体机体验专区
5月15日,联想率先在喷墨一体机市场上发布了针对soho用户和小型办公类市场为主打……
联想外设数码业务百城巡展
传承奥运品质 倾心百城服务
爱普生3LCD联盟
了解3LCD已经汇集了3LCD技术精英的联盟站点
全方位深入的存储资讯
从企业级到个人应用,从业界动态到大型评测,带您尽览存储风云
享受高质量低成本的照片打印
联想4330照片打印机,打印成本仅需1元
尚品·人生网
尚品·人生网,让优质生活与事业和谐平衡
中华部落阁
加入中华部落阁,记录你的新生活。
润眼电脑“3H高清润眼屏”
免费体验,火热报名,海尔润眼电脑系列。
万元级彩色激光一体机
爱普生彩色激光多功能一体机CX11系列专区
联想投影机全球同一品质
新联想一周年庆典 新投影共享全球同一品质
关于我们投稿指南 公告 注册 诚信与安全 规则与政策 友情链接 网站地图 IDG全球资源 业务联系 68130909-6865 《微电脑世界》2009刊例
Copyright(c) 2000-2008 pcworld.com.cn. All Rights Reserved. 京ICP备 05038969 号