CSS技术的出现实现结构与表现分离

(编辑:jimmy 日期: 2024/11/1 浏览:2)

css的作用
有一次找工作面试,很直接的那个面试官就问了我“CSS的作用是什么?”我当时回答也很搞笑,就说了句,“现在做网站离不开CSS,这个就像鱼离不开水一样”。可能觉得说得也没错。但深层次的想,确实没有回答人家的问题。
记得在很久以前,久得我都记不清楚了。那时我刚接触做网页的时候,要让页面中的某个段落加粗一下,就要添加一个HTML标签并加上相应的属性。要让某个段落对齐,我会在dreamweaver的设计器里打一大堆空格,然后代码里会产生一大堆的  (不好意思,我当时根本不知道)。每次要修改都要经历这样一个过程,光不谈HTML代码的臃肿不说,维护起来更是一个让人崩溃的事。
还好不久CSS就出现了,在这儿要感谢那些前辈们。通过他们的努力上面的问题得到了很好的解决。抛开各个浏览器对CSS解析的不同不说,最起码CSS让页面不再那么难维护了。

我认为CSS的出现具有以下几个重要作用
修饰页面的元素时,避免了对HTML元素的改动(也就是现在流行的一个概念:“语义化”结构与表现分享了)
每个浏览器对HTML的解析都不同。HTML原来设计的时候定位于定义文档的内容,通过使用<p>,<table>,<b>各类标签,所要表达的初衷是“段落”、“表格”之类的信息。但随着各大浏览器的出现,也逐渐将新的HTML标签和属性到HTML规范中,以至于使得创建一个合理的语义化的页面结构变得困难许多。
通过使用CSS样式,可以定义字体、颜色,那么就可以让这些原本不需要的表现形式的标记消失,使合理的语义化标记处于更好的位置,更好的发挥标记的作用。

使我们能够更轻松的控制页面结构和布局
网站重构随着这个概念的出现,也带来了DIV结构的流行,因此也就出现了我们现在口头常说的“DIV+CSS做网站”。单从这个DIV+CSS的叫法来分析,可以了解到CSS已经被大家用在了页面布局上了。
但一个页面不是只有控制DIV就控制了全面,还有很多其它的HTML标记,以前用table布局的页面,一样可以用CSS来控制它。

最根本的也是我们开发人员关心的,提高开发和维护的效率
一个网站,如果有很多相同的结构的文件需要修改,涉及到的工作量是巨大的,但如果通过改CSS来实现页面的灵活变换,只需要修改某个样式就可以上,效率上大大提升。

CSS的基本结构:selector{property:value;}
CSS的语法结构由两部分组成即:选择器和规则。规则也就是花括号中包含的内容。
选择符(selector):主要是告诉浏览器这个样式是用于页面中的哪些对象的,这个对象可以是HTML中的某个标记,也可以是指定的Class或ID。这个后面会详细的说。
声明:声明主要是告诉浏览器怎样去渲染页面中的与选择符相匹配的对象。由属性与属性值组成,冒号相隔、分号结束的声明形式可以一个或者多个的组合而成。
属性:属性主要以一个单词的形式出现,并且都是CSS约定的,不可以自己定义。
属性值:属性值将根据属性改变形式,包括数值,单位等。
说理论一般都不容易让人记住,来举个例子吧。

现在我要将页面中的也就是body下的所有的文字设为红色,且要18号字体,加粗显示,可以这样写:

复制代码代码如下:
body
{
color:red; /*红色,以后我会专门写一下关于CSS中颜色的表现方面的东西*/
font-size:18px; /*大小18px*/
font-weight:bold; /*加粗,还有一种写法font- weight:700;这两个是相等的*/
}

怎么样很清楚吧,注释也够详尽了,但这样的做法有个弊端就是,注释很详尽,样式一多的时间,文件会很大。在HTTP请求非常奢侈的今天任何一点额外的负担都是要注意的。
所以我们下面可以再简一下,这样:

复制代码代码如下:
/*对body下所有的文字以红色加粗并以18像素显示*/
body{color:red; font-size:18px; font-weight:bold}

可能有的人认为这没什么,而且会带来阅读上的不便。但你想一下,我们现在做的一般互联网项目有哪个少于十个八个样式表的。不管什么东西在小的时候都无所谓,但一旦一多,就不得不考虑一些性能上的问题(当然关于CSS的执行效率方面的知识也有很多的学问,以后看情况也会介绍)。
这边就压缩CSS给大家两个有用的在线工具,可以作为参考一下,我平时一直在用非常不错:
http://www.cleancss.com/ 和 http://www.cssdrive.com/index.php/main/csscompressor
上面讲了半天,这会总结一下,所有的CSS代码都存在这么几个特点:
每个声明的属性和属性值之间都是用冒号隔开、分号结束。如:font-size:18px;font-weight:bold;
声明都是紧跟着选择符的,并被花括号包含着。如:body{.......}
属性与属性之间的空格可有可无。