CSS 指层叠样式表(Cascading Style Sheets),样式定义如何显示 HTML 元素,样式通常存储在样式表中。
在相关的标签内使用样式(style)属性。
1
  | 
<p style="color: red; font-size: 20px">This is a paragraph</p>
  | 
 
 
当样式仅需要在一个元素上应用一次时。
使用 <style> 标签在文档头部定义内部样式表
1
2
3
4
5
6
7
  | 
<head>
<style type="text/css">
  hr {color: sienna;}
  p {margin-left: 20px;}
  body {background-image: url("images/back40.gif");}
</style>
</head>
  | 
 
 
当单个文档需要特殊的样式时,就应该使用内部样式表。
1
2
3
  | 
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
  | 
 
 
当样式需要应用于很多页面时。
📌 不要在属性值与单位之间留有空格。
使用 margin-left: 20px; 而不是 margin-left: 20 px;。
内联样式 > 内部样式表 > 外部样式表 > 浏览器缺省配置
🌰 外部样式表拥有针对 h3 选择器的三个属性:
1
2
3
4
5
  | 
h3 {
  color: red;
  text-align: left;
  font-size: 8px;
  }
  | 
 
 
而内部样式表拥有针对 h3 选择器的两个属性:
1
2
3
4
  | 
h3 {
  text-align: right; 
  font-size: 20px;
  }
  | 
 
 
假如拥有内部样式表的这个页面同时与外部样式表链接,那么 h3 得到的样式是:
1
2
3
  | 
color: red; 
text-align: right; 
font-size: 20px;
  | 
 
 
 
用于修饰同类 HTML 标签的共性风格。
1
2
3
4
5
  | 
// 所有的li标签通用
li {
  color: red;
  font-size: 20px;
}
  | 
 
 
 
- id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
 
- id 选择器以 "#" 来定义。
 
📌 HTML 页面,不能出现相同的 id,哪怕他们不是一个类型。比如页面上有一个 id 为 pp 的 p,一个 id 为 pp 的 div,是非法的!
📌 id 区分大小写。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  | 
<head>
<style type="text/css">
  #para {
    color:red;
    font-size: 20px;
  }
</style>
</head>
<body>
<p id="para">this is a paragraph.</p>
</body>
  | 
 
 
 
在 CSS 中,类选择器以一个点号(.)表示。
多个标签可以公用一个类;同一个标签可以使用多个类选择器,用空格隔开。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
  | 
<head>
<style type="text/css">
.center {text-align: center;}
.important {font-size: 20px; color:red;}
</style>
</head>
<body>
<h1 class="center">
This heading will be center-aligned
</h1>
<p class="center">
This paragraph will also be center-aligned.
</p>
<p class="center important">this is an important part.</p>
<!-- 错误写法 -->
<p class="center" class="important">this is an important part.</p>
</body>
  | 
 
 
类选择器结合标签选择器来使用,例如,p.important 解释为:“其 class 属性值为 important 的所有段落。”
后代选择器可以选择作为某元素后代的元素。
1
2
3
  | 
h1 em {color:red;}
h1 .classone {color: blue;}
div #image1 {width: 200px;}
  | 
 
 
上面这个规则会把作为 h1 元素后代的 em 元素的文本变为红色。其他 em 文本(如段落或块引用中的 em )则不会被这个规则选中:
1
2
  | 
<h1>This is a <em>important</em> heading</h1>
<p>This is a <em>important</em> paragraph.</p>
  | 
 
 
📌 空格表示的只是一种后代关系,并不一定指紧跟其后的元素(儿子)。比如上例中,h1 中的所有 em 标签都会应用该样式,不论嵌套深度是多少。
1
2
3
  | 
<h1>
  <b>This is a <em>important</em> heading<b>
</h1>
  | 
 
 
 
如果不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,使用子元素选择器。
1
2
3
  | 
h1 > strong {color:red;}
// 可以结合使用后代选择器和子元素选择器
h1 b > em {color:red;}
  | 
 
 
 
1
2
3
4
5
6
7
8
9
  | 
// h2.important 和 h2 .important 不是一回事
h2.important {
  color:red;
  font-size:20px;
}
p#normaltext {
  color:black;
}
  | 
 
 
选择的元素要求同时满足两个条件:必须是 h2 标签,然后必须是 important 类。
1
2
  | 
<!-- h2.important作用 -->
<h2 class="important"> Important content! </h2>
  | 
 
 
 
逗号隔开选择器,三种基本选择器都可以放进来。
1
2
3
4
  | 
/*定义了一个并集选择器,带有p,h1,id="mytitle",class="one"的标签都内容会显示红色*/
p,h1,#mytitle,.one{
  color:red;
}
  | 
 
 
 
!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
链接的四种状态:
- a:link  普通的、未被访问的链接
 
- a:visited  用户已访问的链接
 
- a:hover  鼠标指针位于链接的上方
 
- a:active  链接被点击的时刻
 
当为链接的不同状态设置样式时,按照以下次序规则:
- a:hover 必须位于 a:link 和 a:visited 之后
 
- a:active 必须位于 a:hover 之后
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
  | 
<!DOCTYPE html>
<html>
<head>
  <style>
    a.one:link {color:#ff0000;}
    a.one:visited {color:#0000ff;}
    a.one:hover {color:#ffcc00;}
  </style>
</head>
<body>
  <p>
    <b>
      <a class="one" href="/index.html" target="_blank">这个链接改变颜色</a>
    </b>
  </p>
</body>
</html>
  | 
 
 
 
CSS的四种基本选择器和四种高级选择器
W3CSchool
CSS选择器优先级总结