日期:2014-05-17  浏览次数:20630 次

CSS基础(一)
早就想系统的学习CSS还有一些网页美化和设计的东西,可惜一直是个计划,现在工作不是很忙了,那就开始学习一下吧,Let's go。

CSS先说点什么呢?先说一下它的历史,Cascading Style Sheet 层叠样式表,最早的规范是level 1,后来改进到level 2,现在2.1得到了个浏览器厂商的广泛支持,未来是3.0。

在互联网最初的时候,页面的基本格式和结构完全是依赖HTML控制的,比如<font>标签等等,这个在JavaScript中的document对象的部分属性中也有体现。后来随着CSS的出现,这种局面得到了控制。最主要的是简化了HTML的编码混乱。HTML专门负责用来标记页面的内容,而页面的外观则交由CSS控制。

但是任何事情都不是绝对的,HTML仍然有很多用于页面外观表现的元素,在恰当的时候使用它们,要比纯粹使用CSS来得好。

OK,回到正题,从最基本的开始

1.在一个页面中如何使用CSS

两种方式,一种是之间在页面编写CSS,另一种是使用外部的CSS文件,对于第一种要使用style标签,例如:
<style>
<!--
p 
{
color:#000000;
}
-->
</style>

在第二种中,有两种形式引入外部CSS文件,一种是使用link标签,列如:
<link herf="test.css" rel="stylesheet" type="test/css"/>

另外一个用style标签 + @import,比如:
<style>
<!--
@import url("test.css");
-->
</style>

同样的,在CSS文件中也可以使用@import,不过对于@import这种方式,要强调一点老式的浏览器不支持,因此利用这个特点,我们可以完成对多浏览器的支持,比如,我们可以把我们的样式分成两部分,一部分是最基本的,任何浏览器都支持,另外一部分只有现代的浏览器才支持,这样我们就可以这样编写CSS代码:
<link herf="basic.css" rel="stylesheet" type="test/css"/>
<style>
<!--
@import url("advanced.css");
-->
</style>

呵呵,怎么样看懂了吧

PS:都是在head标签之间哦

2.CSS选择器
CSS的选择器是CSS的核心功能,通过选择器,可以使我们把样式应用到我们想应用的元素上面。主要的CSS包括这样一些:

类型选择器,比如:
p {color:red;}

ID选择器,比如:
#someid {font-weight:bold;}

类选择器,比如:
.someclass {color:green;}

同时上面的三个选择器是可以随意组合的,比如:
li a {text-decoration:none;}
#someId a {text-decoration:none;}
.someClass a {text-decoration:none;}

而这种组合顺序是依照DOM树的顺序。

伪类选择器,比如:
a:link{color:green;}

但是这种选择器并不是所有浏览器都支持的,比如IE6对好多的伪类都不支持。

通用选择器,比如:
* {color:red;}


子选择器,比如:
对于
<ul id="nav">
<li>Home</li>
<li>Services
<ul>
<li>Design</li>
<li>Development</li>
<li>Consultancy</li>
</ul>
</li>
<li>Contact us</li>
</ul>

如果我们使用
#nav li {color:red}
那么整个li包含的字体颜色都会被制为红色,但是如果我们使用
#nav > li {color:red;}
那么只有ul的第一个子元素li的字体颜色会被设置。

相邻选择器,比如:
h1 + p {font-weight:bold;}


属性选择器,比如:
对于
<abbr title="some title">Some Text</abbr>

我们可以使用
abbr[title] {border-bottom:1px dotted #999;}

我们甚至可以使用abbr[title="some"]或者abbr[title~="some"],来选择某些元素。

注意子选择器,相邻选择器,还有属性选择器ie6都是不支持的。

3.CSS的优先级法则
当两个或更多的规则寻找同一个元素时,那么那个规则其作用呢?CSS通过cascade的过程处理这种冲突,我倒是更愿意把这种方式理解为CSS的优先级,也就是当两个样式冲突时,谁先被优先处理。

首先可以使用!import来提高任何规则的优先性,因为它优先于任何规则,不过ie6不支持,也正是因为ie6不支持,我们可以使用它来完成一些跨浏览器的工作,比如,可以写如下样式:
p {
color:red;!import
color:green;
}

这样就可以,区分ie和其他浏览器了。

接着,CSS的样式遵循以下规则
a 标签内的样式,a=1
b ID选择器的总数
c 类,伪类,属性选择器的总数
d 类型选择器和伪元素的总数

比如:
<a style="">test</a>

根据以上规则,它的