跳至主要內容

快速开始

njrCSSfrontendcssbasic-knowledge大约 3 分钟约 1008 字

CSS

层叠样式表(Cascading Style Sheet, CSS)是一种用于给网页添加样式的计算机语言,它并不是真正的编程语言,甚至不是标记语言,只是一种样式表语言。

历史

早期的网页是通过 HTML 编写的,随着 Web 的逐渐发展,人们希望 HTML 页面可以更加丰富,因此为浏览器增加了很多具备特殊样式的元素,比如 istrongdel 等。

后来不同的浏览器厂商实现各自的样式语言,但是没有统一的规划。CSS 的发展历史如下:

  • 1994 年,哈肯·维姆·莱和伯特·波斯一起合作设计 CSS,于 1996 年发布 CSS1;
  • 1997 年,W3C 成立 CSS 工作组,于 1998 年发布了 CSS2;
  • 2006 ~ 2009 年,div + css 布局方式逐渐成为网页内容布局的主流方案(2007 年出现 CSS2.1);
  • CSS3 将所有的 CSS 分成了不同的模块,每一个模块都有于 CSS2 中额外增加的功能,并且支持向后兼容。

提示

CSS3标准已部分公布,但仍未全部制订完毕,还会有其它新内容继续加入。 CSS3发展过程报告. W3C.open in new window

基本语法

CSS 可以设置元素的样式,比如使用 color: red 将字体改为红色。

基本语法
<p>我是一个段落</p>
p {
  color: red;
}

CSS 的基本语法规则为:选择器 + 属性声明:

selector {
  property: property value;
}
  • 选择器(Selector):通过选择器选择了一个或多个需要添加样式的元素(在这个例子中就是 p 元素)。
  • 声明(Declaration):一个单独的规则,如 color: red; 用来指定添加样式元素的属性。
  • 属性(Properties):改变 HTML 元素样式的途径,本例中 color 就是 <p> 元素的属性。
  • 属性的值(Property value):在属性的右边,: 后面即属性的值,它用来指定属性的值。

注意

注意其他重要的语法:

  • 每个规则集(除了选择器的部分)都应该包含在成对的大括号里({})。
  • 在每个声明里要用冒号(:)将属性与属性值分隔开。
  • 在每个规则集里要用分号(;)将各个声明分隔开。

引入 CSS

引入 CSS 可以分为三种方式:

  • 内联样式
  • 内部样式表
  • 外部样式表

内联样式

内联样式的使用方式是使用 HTML 元素的 style 属性:

内联样式
<p style="color: red">我是一个段落</p>

内部样式表

将 CSS 放在 HTML 文件 <head> 元素里的 <style>元素之中。

内联样式
<head>
  <style>
    p {
      color: red;
    }
  </style>
</head>
<p>我是一个段落</p>

外部样式表

将 CSS 编写一个独立的文件中,并且 通过 <link> 元素引入进来:

<head>
  <link rel="stylesheet" href="example.css">
</head>
<p>我是一个段落</p>

example.css

p {
  color: red;
}

@规则

@rules 是一种特殊的规则,为 CSS 提供一些关于如何表现的指导。有些 @rules 规则很简单,有规则名和值。

要将额外的样式表导入主 CSS 样式表,可以使用 @import

@import 'example.css'

最常见的 @rules 之一是 @media,它允许使用媒体查询来应用 CSS,仅当某些条件成立 (例如,当屏幕分辨率高于某一数量,或屏幕宽度大于某一宽度时)。

在下面的 CSS 中,我们将给 <body> 元素一个粉红色的背景色。但是,我们随后使用 @media 创建样式表的一个部分,该部分仅适用于视口小于 540px 的浏览器。如果浏览器的宽度小于 540px,则背景色将为蓝色。

@media
<p>改变浏览器宽度查看效果</p>  
p {
  background-color: pink;
}

@media (max-width: 760px) {
  p {
    background-color: blue;
    color: white;
  }
}

注释

CSS 注释以 /* 开始,以 */ 结束。

/* 这是个注释 */
p {
  /* 这是另一个注释 */
  color: red;
}