层叠样式表(cascading style sheet)
层叠是指将多个样式施加在一个元素(标签)上
作用:
好处:
1、在HTML标签的style属性书写,这个属性的值,是由一些小的键值对构成
<div style="color:red; font-size:100px;">12345</div>
2、在页面head标签中添加style标签
<style>
div {
color:yellow;
font-size:500px;
}
</style>
3、在head标签中添加link标签引入css文件
<link rel="stylesheet" href="css文件地址" />
对页面进行布局(div + css)
默认情况,如果我们设置内补丁,会影响到整个盒子的大小,那我们需要设置一个属性box-sizing: border-box
会打破默认的流式布局,一般建议,如果一个元素进行了浮动,其余的和该元素同级别的也进行浮动。
支持百分比或者像素
可以帮助我们快速定位到某一个或者某几个标签的,就称为选择器
格式:
选择器 {
小键值对;
... ...
}
标签名{
样式属性
key:value;
}
#ID{
样式属性
key:value;
}
.类名{
样式属性
key:value;
}
优先级:id选择器 > 类选择器 > 元素选择器
选择器,选择器,选择器{
样式属性
key:value;
}
父标签 后代标签 {
样式属性
key:value;
}
父标签>子标签 {
样式属性
key:value;
}
/*同等级的,标签1后方的*/
标签1~标签2{
样式属性
key:value;
}
/*同等级的,标签1后方的第一个标签*/
标签1+标签2{
样式属性
key:value;
}
标签:link{
标签未被访问前的样式属性
key:value;
}
标签:hover{
鼠标悬停的标签样式属性
key:value;
}
标签:visited{
标签已被访问后的样式属性
key:value;
}
标签:active{
鼠标点击标签未释放的样式属性
key:value;
}
标签:last-child{
最后一个该标签的子标签样式属性
key:value;
}
标签:first-child{
第一个该标签的子标签样式属性
key:value;
}
标签:nth-child(n){
该标签的父标签的第n个该类子标签的样式属性
key:value;
}
标签[key='value']{
样式属性
key:value;
}
标签[key*='a']{
属性key的值包含a的标签的样式属性
key:value;
}
标签[key^='a']{
属性key的值以a开头的标签的样式属性
key:value;
}
标签[key$='a']{
属性key的值以a结尾的标签的样式属性
key:value;
}
标签[key~='hello']{
属性key的值包含单词hello的标签的样式属性
key:value;
}
/*从其当前位置移动元素*/
transform: translate(横向, 纵向);
/*旋转一定的角度*/
transform:rotate(角度deg);
/*增大或减小元素大小*/
transform:scale(宽度增大倍数,高度增大倍数);
/*元素绕其 X 轴旋转给定角度*/
transform: rotateX(角度deg);
/*元素绕其 Y 轴旋转给定角度*/
transform: rotateY(角度deg);
/*元素绕其 Z 轴旋转给定角度*/
transform: rotateZ(角度deg);
@keyframes 动画名
{
from{开始样式}
to{结束样式}
}
div{
animation:动画名 时间;
}
Flex 布局,即 Flex Box(弹性布局),是一种较为灵活、强大的页面 CSS 布局方式。
Flex 布局的优点:
使用 Flex 布局的元素(display: flex
),称之为 Flex 容器(Flex Container
),简称 "容器"。Flex 的布局发生在父容器和子容器之间,因此,元素一旦被申明为 Flex 布局后,它的所有子元素自动成为容器成员。通常,我们将容器内的成员统称为 Flex 项目(Flex item
),简称 "项目"。
容器中默认存在两条线轴,即:主轴(main axis)、交叉轴(cross axis)。主轴与交叉轴是垂直关系,值得注意的是主轴不一定是水平方向,而是由 flex-direction
属性所决定的。
main axis
:主轴。cross axis
:交叉轴。项目(flex item)默认是沿主轴方向排列的,单个项目占据主轴的空间称之为 main size,占据交叉轴的空间称之为 cross size
flex-direction 属性,定义了在哪个方向上排列项目。
取值 | 说明 |
---|---|
row | 由左到右。(默认) |
row-reverse | 从右到左。 |
column | 从上到下。 |
column-reverse | 从下到上。 |
定义了项目在轴线上的排列方式,在默认情况下,项目都排列在一条轴线上,不会换行,可以通过 flex-wrap 来定义换行的方式。
取值 | 说明 |
---|---|
nowrap | 默认值,不换行 |
wrap | 项目沿着轴线方向排列,一行排不下后,换行排列。 |
wrap-reverse | 反向换行。例如:在主轴线上,第一行会在第二行的下放。 |
flex-flow 是 flex-direction 与 flex-wrap 的缩写形式。
语法:flex-flow: <flex-direction> <flex-wrap>
例子:
flex-flow: row nowrap
(默认值,项目沿着主轴排列,不换行。)
flex-flow: column wrap-reverse
(项目沿着交叉轴排列,反向换行)
justify-content 定义了项目在主轴上的对齐方式。
取值 | 说明 |
---|---|
flex-start | 左对齐 |
flex-end | 右对齐 |
center | 居中 |
space-between | 两端对齐,项目间隔相等 |
space-around | 项目间隔相等,两端也有间隔。 |
align-items 属性,定义了项目在交叉轴上的对齐方式,有5个取值。
取值 | 说明 |
---|---|
flex-start | 与交叉轴的起点对齐 |
flex-end | 与交叉轴的终点对齐 |
center | 在交叉轴上居中对齐 |
baseline | 以项目中第一行文字基线对齐 |
stretch | 在未设置高度情况下,将占满容器的高度 |
align-content 属性定义了多根主轴线在垂直方向上的对齐方式。
align-content 取值 | 说明 |
---|---|
flex-start | 与交叉轴起点对齐 |
flex-end | 与交叉轴终点对齐 |
center | 在交叉轴上居中对齐 |
space-between | 与交叉轴两端对齐,轴线之间的间隔平均分布 |
space-around | 轴线之间的间隔平均分布,包括两端 |
stretch | 默认值,轴线占满交叉轴 |
项目属性 | 默认值 | 说明 |
---|---|---|
order | 0 | 定义了项目的排列顺序。 |
flex-grow | 0 | 扩大因子,定义了项目的放大比例 |
flex-shrink | 1 | 收缩因子,定义了项目的缩小比例 |
flex-basic | auto | flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。 |
flex | 0 1 auto | flex-grow、flex-shrink、flex-basis的缩写形式 |
align-self | auto | align-self 属性允许单个项目有与其他项目不一样的对齐方式,也就是说改属性可以覆盖父容器设置的 align-items 属性。 |