4、CSS

css概述

层叠样式表(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文件地址" />

使用时机

盒子模型

说明: clipboard.png

对页面进行布局(div + css)

padding:设置内补丁

默认情况,如果我们设置内补丁,会影响到整个盒子的大小,那我们需要设置一个属性box-sizing: border-box

margin:设置外补丁

float浮动

会打破默认的流式布局,一般建议,如果一个元素进行了浮动,其余的和该元素同级别的也进行浮动。

position定位

属性

尺寸

支持百分比或者像素

文本(字体)

背景

边框

选择器

可以帮助我们快速定位到某一个或者某几个标签的,就称为选择器

格式:

选择器 {
    小键值对;
    ... ...
 }

元素选择器

标签名{
    样式属性
    key:value;
}

ID选择器

#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; 
}

2D\3D转换

2D

/*从其当前位置移动元素*/
transform: translate(横向, 纵向);
/*旋转一定的角度*/
transform:rotate(角度deg);
/*增大或减小元素大小*/
transform:scale(宽度增大倍数,高度增大倍数);

3D

/*元素绕其 X 轴旋转给定角度*/
transform: rotateX(角度deg);
/*元素绕其 Y 轴旋转给定角度*/
transform: rotateY(角度deg);
/*元素绕其 Z 轴旋转给定角度*/
transform: rotateZ(角度deg);

动画

@keyframes 动画名
{
    from{开始样式}
    to{结束样式}
}
div{
    animation:动画名 时间;
}

动画属性

Flex

Flex 布局,即 Flex Box(弹性布局),是一种较为灵活、强大的页面 CSS 布局方式。

Flex 布局的优点:

Flex相关术语

img

容器与项目

使用 Flex 布局的元素(display: flex),称之为 Flex 容器(Flex Container),简称 "容器"。Flex 的布局发生在父容器和子容器之间,因此,元素一旦被申明为 Flex 布局后,它的所有子元素自动成为容器成员。通常,我们将容器内的成员统称为 Flex 项目(Flex item),简称 "项目"。

主轴、交叉轴

容器中默认存在两条线轴,即:主轴(main axis)交叉轴(cross axis)。主轴与交叉轴是垂直关系,值得注意的是主轴不一定是水平方向,而是由 flex-direction 属性所决定的。

轴线起始位置

主轴、交叉轴空间

项目(flex item)默认是沿主轴方向排列的,单个项目占据主轴的空间称之为 main size,占据交叉轴的空间称之为 cross size

容器flex container属性

flex-direction

flex-direction 属性,定义了在哪个方向上排列项目。

取值 说明
row 由左到右。(默认)
row-reverse 从右到左。
column 从上到下。
column-reverse 从下到上。

flex-wrap

定义了项目在轴线上的排列方式,在默认情况下,项目都排列在一条轴线上,不会换行,可以通过 flex-wrap 来定义换行的方式。

取值 说明
nowrap 默认值,不换行
wrap 项目沿着轴线方向排列,一行排不下后,换行排列。
wrap-reverse 反向换行。例如:在主轴线上,第一行会在第二行的下放。

image-20241202111855531

flex-flow

flex-flow 是 flex-direction 与 flex-wrap 的缩写形式。

语法:flex-flow: <flex-direction> <flex-wrap>

例子:

flex-flow: row nowrap (默认值,项目沿着主轴排列,不换行。)

flex-flow: column wrap-reverse(项目沿着交叉轴排列,反向换行)

justify-content

justify-content 定义了项目在主轴上的对齐方式。

取值 说明
flex-start 左对齐
flex-end 右对齐
center 居中
space-between 两端对齐,项目间隔相等
space-around 项目间隔相等,两端也有间隔。

image-20241202112140687

align-items

align-items 属性,定义了项目在交叉轴上的对齐方式,有5个取值。

取值 说明
flex-start 与交叉轴的起点对齐
flex-end 与交叉轴的终点对齐
center 在交叉轴上居中对齐
baseline 以项目中第一行文字基线对齐
stretch 在未设置高度情况下,将占满容器的高度

align-content

align-content 属性定义了多根主轴线在垂直方向上的对齐方式。

align-content 取值 说明
flex-start 与交叉轴起点对齐
flex-end 与交叉轴终点对齐
center 在交叉轴上居中对齐
space-between 与交叉轴两端对齐,轴线之间的间隔平均分布
space-around 轴线之间的间隔平均分布,包括两端
stretch 默认值,轴线占满交叉轴

项目flex item属性

项目属性 默认值 说明
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 属性。