1 简介

  • CSS 指层叠样式表 (Cascading Style Sheets)
  • 样式定义如何显示 HTML 元素
  • 样式通常存储在样式表
  • 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题
  • 外部样式表可以极大提高工作效率
  • 外部样式表通常存储在 CSS 文件
  • 多个样式定义可层叠为一个

2 语法

2.1 CSS 规则

CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:

每条声明由一个属性和一个值组成。

每个属性有一个值。属性和值被冒号分开。

CSS3 - 图1

CSS声明总是以分号(;)结束,声明总以大括号({})括起来

2.2 CSS 注释

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

3 选择器

3.1 id选择器

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. <style type="text/css">
  7. #app1 {
  8. width: 300px;
  9. height: 300px;
  10. background-color: red;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <div id="app1">
  16. 我是div1
  17. </div>
  18. </body>
  19. </html>

3.2 class选择器

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            .app1 {
                width: 300px;
                height: 300px;
                background-color: red;
            }

        </style>
    </head>

    <body>
        <div class="app1">
            我是div1
        </div>
    </body>

</html>

3.3 元素选择器

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            div {
                width: 300px;
                height: 300px;
                background-color: red;
            }

        </style>
    </head>

    <body>
        <div >
            我是div1
        </div>
    </body>

</html>

3.4 选择器分组

h2, p {
    color:gray;
}

3.5 属性选择器

a[href] {color:red;}

a[href*="w3school.com.cn"] {color: red;}
类型 描述
[abc^=”def”] 选择 abc 属性值以 “def” 开头的所有元素
[abc$=”def”] 选择 abc 属性值以 “def” 结尾的所有元素
[abc*=”def”] 选择 abc 属性值中包含子串 “def” 的所有元素

3.6 后代选择器

h1 em {color:red;}

3.7 子元素选择器

h1 > strong {color:red;}

3.8 相邻兄弟选择器

h1 + p {margin-top:50px;}

3.9 伪类

属性 描述
:active 向被激活的元素添加样式。
:focus 向拥有键盘输入焦点的元素添加样式。
:hover 当鼠标悬浮在元素上方时,向元素添加样式。
:link 向未被访问的链接添加样式。
:visited 向已被访问的链接添加样式。
:first-child 向元素的第一个子元素添加样式。
:lang 向带有指定 lang 属性的元素添加样式。

3.10 伪元素

描述
:first-letter 向文本的第一个字母添加特殊样式。
:first-line 向文本的首行添加特殊样式。
:before 在元素之前添加内容。
:after 在元素之后添加内容。

4 引入

4.1 内联样式

 <!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>
        <div style="width: 300px;height: 300px;background-color: red;">
            我是div1
        </div>
    </body>

</html>

4.2 内部样式表

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            div {
                width: 300px;
                height: 300px;
                background-color: red;
            }

        </style>
    </head>

    <body>
        <div >
            我是div1
        </div>
    </body>

</html>

4.1 外部样式表

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/new_file.css"/>
    </head>

    <body>
        <div>
            我是div1
        </div>
    </body>

</html>

new_file.css

div{
    width: 30px;
    height: 300px;
    background: red;
}

5 CSS样式

5.1 背景

  • 背景色background-color
  • 背景图片background-image
  • 背景重复background-repeat
    • 水平repeat-x
    • 垂直repeat-y
  • 背景定位background-position
    • top
    • bottom
    • left
    • right
    • center
  • 背景关联background-attachment
  • 背景裁切background-clip:border-box;
  • 背景裁切background-origin: border-box;

5.2 文本

  • 文本缩进text-indent
  • 水平对齐 text-align
  • 字间隔word-spacing
  • 字母间隔letter-spacing
  • 字母转换text-transform
    • 转为全大写uppercase
    • 转为全小写 lowercase
  • 文本装饰text-decoration
    • none
    • underline
    • overline
    • line-through
    • blink
  • 处理空白符white-space | 值 | 空白符 | 换行符 | 自动换行 | | —- | —- | —- | —- | | pre-line | 合并 | 保留 | 允许 | | normal | 合并 | 忽略 | 允许 | | nowrap | 合并 | 忽略 | 不允许 | | pre | 保留 | 保留 | 不允许 | | pre-wrap | 保留 | 保留 | 允许 |

5.3 字体

  • 通用字体font-family
  • 字体风格font-style
    • 文本正常显示normal
    • 斜体italic
    • 倾斜oblique
  • 字体变形font-variant设定小型大写字母
  • 文本加粗font-weight
  • 文本大小font-size

5.4 链接

  • a:link - 普通的、未被访问的链接
  • a:visited - 用户已访问的链接
  • a:hover - 鼠标指针位于链接的上方
  • a:active - 链接被点击的时刻

5.5 列表

  • 简写属性list-style
  • 将图象设置为列表项标志list-style-image
  • 设置列表中列表项标志的位置list-style-type

5.6 表格

  • 是否将表格边框折叠为单一边框border-collapse
  • width
  • height
  • 水平对齐text-align
  • 垂直对齐vertical-align

5.7 轮廓outline

描述
outline 在一个声明中设置所有的轮廓属性。
outline-color 设置轮廓的颜色。
outline-style 设置轮廓的样式。
outline-width 设置轮廓的宽度。

6 盒子模型

CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式

CSS3 - 图2

去除浏览器的默认样式

* {
  margin: 0;
  padding: 0;
}

元素的总宽度应该这样计算:

元素总宽度 = 宽度 + 左内边距 + 右内边距 + 左边框 + 右边框 + 左外边距 + 右外边距

元素的总高度应该这样计算:

元素总高度 = 高度 + 上内边距 + 下内边距 + 上边框 + 下边框 + 上外边距 + 下外边距

7 定位 (Positioning)

  • static
    元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
  • relative 相对定位
    元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
  • absolute 绝对定位
    元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
  • fixed
    元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

8 浮动 float

描述
left 在左侧不允许浮动元素。
right 在右侧不允许浮动元素。
both 在左右两侧均不允许浮动元素。
none 默认值。允许浮动元素出现在两侧。
inherit 规定应该从父元素继承 clear 属性的值。

9 高级

9.1 水平对齐

  • margin 属性来水平对齐
  • position 属性进行左和右对齐
  • float 属性来进行左和右对齐

9.2 尺寸 (Dimension)

属性 描述
height 设置元素的高度。
line-height 设置行高。
max-height 设置元素的最大高度。
max-width 设置元素的最大宽度。
min-height 设置元素的最小高度。
min-width 设置元素的最小宽度。
width 设置元素的宽度。

9.3 分类 (Classification)

CSS 分类属性允许你规定如何以及在何处显示元素。

属性 描述
clear 设置一个元素的侧面是否允许其他的浮动元素。
cursor 规定当指向某元素之上时显示的指针类型。
display 设置是否及如何显示元素。
float 定义元素在哪个方向浮动。
position 把元素放置到一个静态的、相对的、绝对的、或固定的位置中。
visibility 设置元素是否可见或不可见。

10 css3边框

  • 圆角边框border-radius
  • 阴影box-shadow
  • 图片边框border-image

11 CSS3 背景

  • 规定背景图片的尺寸background-size
  • 规定背景图片的定位区域background-origin 、
  • 规定背景的绘制区域background-clip

12 CSS3 文本效果

  • 文本阴影text-shadow
  • 允许对长的不可分割的单词进行分割并换行到下一行word-wrap
  • 文本的换行规则text-wrap
  • 文本的轮廓text-outline
  • text-align 设置为 “justify” 时所使用的对齐方法text-justify
  • 文本应用重点标记以及重点标记的前景色text-emphasis

13 CSS3 字体

@font-face

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            @font-face{
                font-family: myFirstFont;
                src: url('Sansation_Light.ttf'); /* IE9+ */
            }    
            div{
                font-family:myFirstFont;
            }
        </style>
    </head>
    <body>
    </body>
</html>

14 CSS3 2D 转换

对元素进行移动、缩放、转动、拉长或拉伸。

  • translate() 元素从其当前位置移动
  • rotate() 元素顺时针旋转给定的角度
  • scale() 元素的尺寸会增加或减少
  • skew() 元素翻转给定的角度
  • matrix() 把所有 2D 转换方法组合在一起 | 函数 | 描述 | | —- | —- | | matrix(n,n,n,n,n,n) | 定义 2D 转换,使用六个值的矩阵。 | | translate(x,y) | 定义 2D 转换,沿着 X 和 Y 轴移动元素。 | | translateX(n) | 定义 2D 转换,沿着 X 轴移动元素。 | | translateY(n) | 定义 2D 转换,沿着 Y 轴移动元素。 | | scale(x,y) | 定义 2D 缩放转换,改变元素的宽度和高度。 | | scaleX(n) | 定义 2D 缩放转换,改变元素的宽度。 | | scaleY(n) | 定义 2D 缩放转换,改变元素的高度。 | | rotate(angle) | 定义 2D 旋转,在参数中规定角度。 | | skew(x-angle,y-angle) | 定义 2D 倾斜转换,沿着 X 和 Y 轴。 | | skewX(angle) | 定义 2D 倾斜转换,沿着 X 轴。 | | skewY(angle) | 定义 2D 倾斜转换,沿着 Y 轴。 |

15 CSS3 3D 转换

  • rotateX() 元素围绕其 X 轴以给定的度数进行旋转
  • rotateY() 元素围绕其Y 轴以给定的度数进行旋转 | 属性 | 描述 | | —- | —- | | transform | 向元素应用 2D 或 3D 转换。 | | transform-origin | 允许你改变被转换元素的位置。 | | transform-style | 规定被嵌套元素 在 3D 空间中显示。 | | perspective | 规定 3D 元素的透视效果。 | | perspective-origin | 规定 3D 元素的底部位置。 | | backface-visibility | 定义元素在不面对屏幕时是否可见。 |

16 过渡

属性 描述
transition 简写属性,用于在一个属性中设置四个过渡属性。
transition-property 规定应用过渡的 CSS 属性的名称。
transition-duration 定义过渡效果花费的时间。默认是 0。
transition-timing-function 规定过渡效果的时间曲线。默认是 “ease”。
transition-delay 规定过渡效果何时开始。默认是 0。

17 CSS3 动画

@keyframes

通过规定至少以下两项 CSS3 动画属性,即可将动画绑定到选择器:

  • 规定动画的名称
  • 规定动画的时长

请用百分比来规定变化发生的时间,或用关键词 “from” 和 “to”,等同于 0% 和 100%。

0% 是动画的开始,100% 是动画的完成。

属性 描述
@keyframes 规定动画。
animation 所有动画属性的简写属性,除了 animation-play-state 属性。
animation-name 规定 @keyframes
动画的名称。
animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。
animation-timing-function 规定动画的速度曲线。默认是 “ease”。
animation-delay 规定动画何时开始。默认是 0。
animation-iteration-count 规定动画被播放的次数。默认是 1。
animation-direction 规定动画是否在下一周期逆向地播放。默认是 “normal”。
animation-play-state 规定动画是否正在运行或暂停。默认是 “running”。
animation-fill-mode 规定对象动画时间之外的状态。

18 CSS3 多列

  • column-count 规定元素应该被分隔的列数
  • column-gap 规定列之间的间隔
  • column-rule 设置列之间的宽度、样式和颜色规则

19 CSS3 用户界面

  • resize 是否可由用户调整元素尺寸
  • box-sizing 以确切的方式定义适应某个区域的具体内容
  • outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓