订阅本栏目 RSS您所在的位置: 深山工作室 > DIV+CSS > 正文

从空格谈起--关于CSS模块化设计

天极网 2007/12/23 19:29:02 深山行者 字体: 浏览 6001
一、空格运算符

      (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把图片垂直居中于div中心
设置个性的文字链接样式,集齐网页上常见的链接样式
江苏绿叶国际旅行社
深山行者v1.0 PSD 源文件下载
连云港党建
Python拼接字符串的几种方式
css分页放大效果
可以用于考试系统中试卷上交的javascript倒计时
共有0条关于《从空格谈起--关于CSS模块化设计》的评论
发表评论
正在加载评论......
返回顶部发表评论
呢 称:
表 情:
内 容:
评论内容:不能超过 1000 字,需审核,请自觉遵守互联网相关政策法规。
验证码: 验证码 
网友评论声明,请自觉遵守互联网相关政策法规。

您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。

更多信息>>栏目类别选择
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
DIV+CSS
HTML
python
更多>>同类信息
jquery设置或获取修改classname
利用css3.0写出一个音乐播放的唱片碟盘的效果
利用css中的scale()实现放大缩小效果
利用background-color:#000000a8在背景颜色16进制代码之后加字母加上数字让背景色透明
css背景使用base64编码或者将base64编码放在img图片标签中
利用css3中的-webkit-font-smoothing把网页文字的毛边去掉
更多>>最新添加文章
dw里面查找替换使用正则删除sqlserver里面的CONSTRAINT
Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素
抖音直播音挂载小雪花 懂车帝小程序
javascript获取浏览器指纹可以用来做投票
火狐Mozilla Firefox出现:无法载入您的Firefox配置文件 它可能已经丢失 或是无法访问 问题解决集合处理办法
在Android、iOS、Windows、MacOS中微信小程序的文件存放路径
python通过代码修改pip下载源让下载库飞起
python里面requests.post返回的res.text还有其它的吗
更多>>随机抽取信息
uni-app设置像页面html或者body的全局背景色
uni-app判断输入内容是否符合要求
facebook广告推广设定像素标准事件的值和币种等说明
爱尚学生网
修改注册表 优化Win XP技巧20招
深山行者个人网站程序V0.1