<html>html> :根标签
<head>head> :文档的头部
<title>title> :文档的标题
<body>body>:文档主体
DOCTYPE html> :表示当前使用的是html5的版本来显示网页,
它不是一个HTML标签,只是一个文档类型声明标签
<html lang="en"> :提示是英文网页,“zh-CN”表示中文网站,实际没有太大影响,英文网页也可以写中文
<meta charset="UTF-8"/> :表示万符码,包含基本所有国家的字符集
VScode代码快捷键:
1、! :自动写入框架
2、Alt+b :执行网页
从<h1>到<h6>分为六个等级
如:<h1>一级标题h1>
特点:每个标题独占一行,加了标题的文字会加粗,字体变大。
<p>我是一个段落标签p>
如:<p>我是朱昱崐p>
<p>我是地球人p>
作用:将HTML文档分割为若干段落,换行时有很大空隙
<br/>
如:我是朱昱崐<br/>我是地球人
作用:令文本换行
文本加粗:1、<strong>加粗了strong>
2、<b>加粗了b>
推荐使用上者
文本倾斜:1、<em>倾斜了em>
2、<i>倾斜了i>
推荐使用上者
删除线 : 1、<del>删除线del>
2、<s>删除线s>
推荐使用上者
下划线: 1、<ins>下划线ins>
2、<u>删除线u>
推荐使用上者
大盒子:<div>盒子标签div>
特点:一个盒子的内容独占一行
小盒子:<span>小盒子标签span>
特点:可以多个盒子在一行
图像标签:
src是<img/>标签的必须属性,用于指定图像文件的路径和文件名
如:<img src="pla.jpg"/>
alt:替换文本,图像异常显示时,用文字替换
如:<img src="" alt ="图片异常"/>
title:提示文本,鼠标放在图片上,提示用户显示的文字
如:<img src="pla.jpg" title="我是朱昱崐"/>
width、height:图像宽度、高度
如:<img src="pla.jpg width="500" height="500"/>
border:设定边框,
※各个属性之间用空格分隔,没有前后顺序
路径可以分为:
1、相对路径:以当前html文件的路径做参照
上一级路径:/
下一级路径:../
上级如:<img src="image/pla.jpg" />
下级如:<img src="../pla.jpg" />
2、绝对路径
1、网址路径
2、磁盘完整路径
语法:<a href="跳转目标" target="窗口弹出方式">超链接文本或图像a>
href用于指定目标连接地址(必须属性)
target用于指定连接页面的打开方式,默认为_self本窗口跳转,_blank为新窗口打开
1、外部链接:href中必须带有http://
如:<a href="http://www.qq.com" target="_blank">文本或图片a>
2、内部链接:打开电脑路径下的其他html文件
如:<a href="Untitled-1.html" target="_blank">
3、空链接:href="#",代表超链接为空,等想好具体网页再修改
4、下载链接:在超链接中存放可下载的文件
如: <a href="pla.rar" target="_blank">
5、网页元素超链接:用音视频和图片当做超链接
如:<a href="pla.rar" target="_blank">
<img src="image/pla.jpg" title="下载小图片" />
a>
6、锚点超链接:将页面转移到当前页面的相应位置
如:<a href="#top">返回顶部a>
<h1 id="top">
这里是顶部
h1>
语法:
快捷键:Ctrl + /
空格符:
小于号: <
大于号: >
基本语法:
<table>
<tr>
<td>
表格内文字
td>
tr>
table>
1、table用于定义表格的标签
2、tr中储存每一行的数据
3、td中储存一行中的每一个单元格的数据
<table>
<tr>
<td>
<th>表头th>
td>
tr>
table>
1、表头会居中、加粗显示
属性名 属性值 作用align left、center、right 规定文本对齐方式(网面的显示位置)border 1、"" 有无边框cellpadding 像素值 规定单元边沿与内容之间的空白,默认1响度cellspacing 像素值 规定单元格之间的空白,默认2像素wigth 像素值/百分比 表格宽度
1、属性写在table标签内部
如:
头部区域:
用把第一行的表头包含进去
主体区域:
用把表格主体包含进去
跨行合并:rowspan=“合并单元格的个数”
跨列合并:colspan=“合并单元格的个数”
目标单元格:
跨行:找最上侧
跨列:找最左侧
1、确定跨行或者列
2、找到目标单元格和合并方式
如:
3、删除多余单元格
如:合并了哪几个就删除被合并的单元格的代码
<ul>
<li>
任意元素
li>
ul>
ul :无序列表
li :容纳元素的容器
<ol> <li> 任意元素 li>ol>
ol :有序列表
<dl> <dt>大块dt> <dd>解释dd> <dd>解释dd> <dd>解释dd>dl>
dl :自定义列表
dt :大的类名
dd :描述类的解释
一个完整的表单:由 表单域、**表单控件(元素)**和 提示信息 组成
1、用于定义表单域,会把范围内的元素信息提交给服务器
<form action="url地址" method="提交方式" name="表单域名称"> 各种表单元素控件form>
action会把数据送到相应文件中
method设置提交方式
2、单标签用于收取用户信息
<input type="属性值" /> 如:用户名 :<input type="text">
button:定义可点击按钮
checkbox:定义复选框(多选框)
file:定义输入字段和“浏览”按钮,供文件上传
hidden:定义隐藏的输入字段
image:定义图像形式的提交按钮
password:定义密码字段,字符将被掩码
radio:定义单选按钮(单选框)
reset:定义充值按钮
submit:定义提交按钮,发送给数据服务器
text:定义单行输入的字段,默认20个字符
id: 用来设置labal标签
name :定义本元素的名称 (名称一样才能实现单选按钮的多选一)
value :定义本元素的值 (表示元素中的默认值)
注意:单选、多选按钮一定要有相同的name值
checked :规定按钮当页面打开默认选中此按钮
例:checked = "checked"
maxlength :规定用户输入的最大字符长度
语法:
<labal for="test">用户名labal>
<input type="test" id="test">
解释:for中的目的地至id一样标签
解释:下拉列表标签
语法:
<select>
<opiton>
选项1
option>
<option>
选项2
option>
select>
1、如果想让标签默认选中某个option
即:
<textarea> 默认显示的文字textarea>
不常用的属性:cols表示每行的字符数,rows表示能有多少行
※写表单时在form中放table储存
1、CSS由选择器和一条或多条声明组成
选择器:选择修改的元素
声明:具体修改的属性
写在head中
如:
1、color:颜色
2、font-size:25px(字体数值大小)
作用:用来选择标签
作用:把一类标签选择出来进行操作
<style> p{ colro:green; }style>
作用:单独选择某几个标签进行操作,而不是全部此类标签
<style> .red{ //注意类前面加一个点 color:red; }style><p class="red"> //啦啦啦变红 啦啦啦p>
多类名使用方式:把多个类名放在一个属性里,并用空格隔开
如:
作用:为标有特定id的元素操作样式,通常用#定义
区别:和class的区别为,一个id只能调用一次,不能多次调用,但class可以被多次调用
#pink{ 属性1;属性值1}<p id="pink"> //啦变粉色 啦p>
作用:选取所有元素进行操作,通常用*定义
<style> *{ color:red; //*表示将所有元素都修改为红色 }style>
如果属性值有多种字体,会顺序寻找电脑中存在的字体来使用
<style> p{ font-family:'Microsoft Yahei'; }style>
标题标签特殊,需要单独设置大小
<style> p{ font-weight:属性值; }style>
属性值:
normal:默认
bold:加粗
bolder:特粗
lighter:变细
number(给一个数字,如:700):加粗的大小
<style> p{ font-style:normal; //italic变倾斜 }style>
作用:让斜体的字体变正常
如果想减少代码量,有默认的符合属性组合:必须写大小和样式
<style> p{ font: style weight size/line-high family 倾斜 粗细 大小/行距 字体 normal 700 35px/20 'Microsoft Yahei' ; }style>
div{ color:red;}
属性值:red 或 rgb(255,0,0) 或 十六进制数
div{ text-align:center; //居中对齐}
属性值:
left:左对齐(默认)
center:居中
right:右对齐
div{
text-decoration:属性值;
}
none:默认
underline:下划线
overline:上划线
line-through:删除线
作用:使文本的首行缩进对应的像素值
div{
text-indent:2em; //如24px,2em
}
em表示一个字体的大小长度
div{
line-height:26px;
}
间距组成:上间距、文本高度、下间距
直接在当前标签中添加CSS属性:
<p style="color:red;"> 我是红色的p>
在html中的head标签中定义style标签中书写
控制范围是整个页面,代码结构清晰
练习代码多用此方式
创建CSS文件,在HTML文件中引用他
<link rel="stylesheet" href="css文件路径">
1、生成标签:打出标签再按tab即可快速生成
2、生成多个标签:div*5 按tab,即可生成5个div盒子
3、有父子标签时,用>符号连接
如: tr>td 再按tab
4、有兄弟关系时,用+符号连接
如: p+div 再按tab
5、当你想使用类选择器或ID选择器时,用. 和 # 快捷输入
如:p.red 和 div#user
6、当你想生成多个类选择器时,用.demo ∗ 5 来 输 入 , *5来输入, ∗5来输入,为自增运算符
7、当你对标签直接输入内容时,可以用{}
如:div{我是朱昱崐} 再按tab
使用单词首字母:
如:ti2em + tab 等价于 text-indent:2em;
作用:选中父元素中的所有后代元素进行操作
父元素 子元素{
样式代码;
}
如:
ol li{
color:red;
}
和后代选择器的区别:只会对子元素的选择器操作,而不会对同名的孙子元素操作
ol>li{ color:red;}
作用:选择多组标签,同时定义多种标签的声明,用,分隔
div,p{ color:red;}
作用:向某项选择器添加特殊的效果,比如给连接添加效果
①链接伪类:
a:link 选择所有未访问的链接
a:visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接(鼠标经过,color:369)
a:active 选择活动链接(鼠标按下还未弹起的链接)
**顺序:**LVHA 写CSS一定按照这个顺序定义
②focus伪类选择器:
作用:选取获得焦点的input表单元素(有没有没选中)
input:focus{ background-color:yellow; //将被选中的文本框背景颜色变黄色 color:red; //将文本框内输入的文字变红色}<input type="text">
元素显示模式:标签以什么方式显示
HTML元素分为:块元素,行内元素
如:、
、
①自己独占一行
②高度宽度和边距可以修改
③宽度默认是父亲容器的100%
⑤是一个容器/盒子,里面可以放行内或者块级元素
⑥文字标签中不能放块级元素
如:、、、、
①一行可以显示多个
②高宽不可修改
③默认高度是本身内容的高度
④行内元素只能容纳文本或其他行内元素
⑤链接中不能嵌套链接,但可以给转换一下块级模式
如:、、
①在一行上显示,但是之间会有缝隙
②默认宽度是本身的宽度
③可以修改行高、边距、高度
比如想增加链接触发范围,转化为块元素
语法:
a{ display:block; //行内元素转块 display:inline //块内元素转块 display:inline-block //转换为行内块元素}
让行高等于盒子的高度:
height : 40px;line-height:40px;
语法:background-color:transparent / 颜色;
语法:background-image:url(图片地址);
作业:对背景图进行平铺,图片会覆盖在背景上面
语法:background-repeat :属性
repeat:横纵向平铺(默认)
no-repeat:不平铺(盒子中就一个图片)
repeat-x:在横向平铺
repeat-y:在纵向平铺
作用:定义图片在背景中的位置
语法:background-position:水平方向 垂直方向;
例:background-position:right center //水平向右 垂直居中
※如果省略一个参数,默认被省略的是居中属性
语法:background-position:x坐标 y坐标;
※注:如果只有一个属性,默认为X坐标,Y坐标默认center
用法: background-position:坐标/定位 坐标/定位
顺序一定是x、y坐标的顺序定义
语法:background-attachment:属性值;
scroll:随对象内容滚动(默认滚动)
fixed:图像固定
语法:background:rgba(0,0,0,0.5);
a属性值范围在0~1,0代表纯透明,1代表不透明
当同一元素重复定义样式时,按照最后的样式执行覆盖
子标签能够继承父标签的某些样式:
例如:font、line、text、color
▲行高的继承性:
!important > style=“ ”> id> class / 伪类选择器 > 元素(标签)选择器 > 继承 / *
▲a链接有默认样式:蓝色、下划线
当出现复合选择器时,计算选择器的累计权重来判断优先级顺序
border:边框
content:内容
padding:内边距,和元素的内距离
margin:外边距,多个盒子之间的距离
语法:
border-width/style/color
1、width :定义边框粗细(px)
2、style :边框样式
3、color:边框颜色
▲属性值:
①solid:实线
②dashed:虚线
③dotted:点线
④transparent:透明
▲复合写法:
border:1px solid red;
▲边框的四条边:
border-top/bottom/left/right
语法:border-collapse:collapse;
作用:将相邻表哥合并在一块,取消框间距
▲边框大小会增加盒子的大小
定义:边框和内容之间的距离
padding-left / right / top / bottom : **px;
▲复合属性:
一个值:代表上下左右
两个值:一个是上下,一个是左右
三个值:上,左右,下
四个值:顺时针,上,右,下,左
▲如果标签未指定高度宽度,那么padding将会不起作用
定义:盒子和其他盒子之间的距离
margin-left / right / top / bottom : **px;
①设置盒子宽度
②左右外边距设置auto
例:margin:0 auto
▲※如果想让块类盒子水平居中:
给与其父类属性:text-align:center;
五、外边距合并
①如果上方块元素有下边距,下方块元素有上边距,那么距离等于最大的那个值
②嵌套块元素垂直外边距的塌陷,会使子元素在margin的过程中,父元素也会margin塌陷
▲解决方案:
1、可以为父元素定义上边框
2、可以为父元素定义上内边距
3、可以为父元素添加overflow:hidden
*{
padding:0;
margin:0;
}
**▲注意:**块元素用padding时,如果设置了宽度要做减法运算,要么会超出边距
语法:
border-eadius:length;
▲如何让一个盒子变成圆形:设置一个正方形盒子,然后属性值为高度的50%
注意:可以设置四个属性,分别为左上、右上、右下、左下的顺序
box-shadow:属性列表
●h-shadow:水平阴影的位置,允许负值
v-shadow:垂直阴影的位置,允许负值
blur:阴影的模糊程度,越大越模糊
spread:阴影尺寸
color:阴影颜色
inset:将外部阴影改为内部阴影
语法:text-shadow:同上属性值
块元素独占一行,从上向下顺序排列
行内元素会顺序排列,碰到父亲元素边缘会自动换行
语法:
选择器{
float:属性值;
}
none : 元素不浮动
left:向左浮动
right:向右浮动
①脱标性:浮动的盒子会脱离标准流的排版,自己在浮动的流中排版
②收缩:如果不设置宽度,默认为内容的宽度
③改变性质:会变成行内块元素的特性
语法:
选择器{
clear:属性值;
}
left:清左侧浮动
right:清右侧浮动
both:清除两侧浮动
▲实际中常用both
做法:在浮动元素的末尾添加一个空的块级标签
添加的标签写法:
.class{ clear:both}
做法:在父级的style体中,添加overflow:hidden;
③:after伪元素法
做法:在伪类元素中添加很多的条件(此阶段不详解)
实质是在最后添加一个标签
④双伪元素法
同上的升级版,在前后都加了标签
使用li+a的做法,无序列表中包含a链接
②链接块制作时,如何设置宽度,通常用padding撑开宽度,而不是设置一个固定的宽度
③设置li盒子时,不要给固定宽度,后便后继续加入新的链接
定义:将盒子定在某一个位置,即摆放盒子,是按照定位的方式移动盒子
组成:定位=定位模式+边偏移
语法:通过position属性来设置
static:静态定位
relative:相对定位
absolute:绝对定位
fixed:固定定位
语法:有四个属性top、bottom、left、right
属性:距离(**px);
很少用到,了解就行
描述:是相对他本身的位置为基准,来进行各个方向的偏移,
不会脱离标准流,别的盒子继续以本身的位置来对待它
特点:是以父亲元素为基准,来进行偏移,如果父亲没有定位或者是浮动的,那会以浏览器为基准
口诀:子绝父相,孩子绝对,父亲相对
特点:以浏览器的可视窗口为基准,滚动条滚动对它不会产生影响,是固定的位置
不占用原来的原来的标准流,会脱离标准流
小算法:left = 50% ;再让:margin-left:版心的一半px;
⑤粘性定位
特性:可以认为是相对和固定的混合体
语法:
position:sticky;
top:**px;
▲特点:以浏览器可视窗口为基准,
不会脱标,且必须加t、b、l、r之一
意思是当盒子距离可视窗口某个像素时,就变成固定定位
选择器{
z-index:属性值;
}
特性:index值越大优先级越高,则显示在最上方, 默认为最后定义的盒子显示在最上方
特点:浮动元素不会压住标准流的文字和图片,但是会压住盒子
但是绝对定位会压住标准流的文字和图片
特点:隐藏元素后,不保留原先的位置
▲语法:
display:none //隐藏元素
display:block //显示元素
特点:隐藏元素后,保留原先的位置
▲语法:
visibility:visible; //可视
visibility:hidden; //不可视
定义:决定如果内容超出盒子,如何操作的语法
▲语法:
overflow:visibility //溢出部分显示出来(默认)
overflow:scroll //溢出部分会形成拉动条
overflow:hidden //溢出部分会剪切掉
overflow:quto //自动,超出了就形成拉动条,没超出就不会形成
用途:减少服务器接受和发送的请求次数
作用:针对背景图片使用,把多个小背景图片整合到一个大图片上,又称sprites图
用法:移动背景图片的位置,background-position,移动的距离就是图片的x、y轴,
一般情况下是向上、向左移动,所以数值是负数(默认背景左上角为起始位置)
▲代码:
.box{
height: 60px;
width: 60px;
background-color: pink;
background: url(image/wz.jpg);
margin: 100px auto;
background-position: -182px 0;
}
特性:iconfont展示的是图标,但是实际上是字体
优点:轻量级、灵活性、兼容性
使用步骤:①字体图标下载②图标引入③图标追加
①首先设置一个高和宽都是0的盒子
②然后设置边框为**PX,transparent透明色
③再根据想要朝向哪边的三角定义某一边的边框颜色,即可实现
border-color:transparent red transparent transparent
border-style:solid;
border-width:22px 8px 0 0;
①在大盒子中定义一个三角,然后使用负值定位来设置三角位置
从而实现一个方形盒子突出一个小角
语法:
li{
cursor:default; //默认鼠标
cursor:pointer; //小手样式
cursor:move; //移动样式
cursor:text; //文本样式
cursor:not-allowed; //禁止样式
}
语法:
input{
outline:none;
}
语法:
textarea{
resize:none;
outline:none;
}
语法:
vertical-align:属性;
baseline:默认,元素放置在父元素的基线上
top:把元素顶端和行中最高元素的顶端对齐
middle:把此元素放在父元素的中部
bottom:元素顶端与行中最低元素顶端对齐
方法①:vertical-align:top,因为会以基线对齐
方法②:转成块级元素,display:block
▲要满足三个条件
1、强制一行内显示
white-space:normal; //文字在一行显示不开自动换行
white-space:nowrap; //文字在一行显示不开也在一行里显示
2、超出的部分隐藏
overflow:hidden; //隐藏多余的部分
3、文字用省略号代替超出的部分
text-overflow:ellipisis; //溢出部分用省略号显示
语法;
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box; //弹性伸缩盒子模型显示
-webkit-line-clamp:数字值; //限制在一个块元素显示的文本的行数,多少行就是几
-webkit-box-orient:vertical; //设置或检索伸缩和对象的子元素的排列方式
或者把所有的li都设置成relative,然后用index:1;来设置hover的优先级
▲代码:
border-color:transparent red transparent transparent
border-style:solid;
border-width:22px 8px 0 0;
要学会每个文件包含初始化代码
<header> header> :头部标签
<nav> nav> :导航标签
<article> article>:内容标签
<section> section> :定义文档某个区域
<aside> aside>:侧边栏标签
<footer> footer> :尾部标签
主要针对搜索引擎
兼容性不够好,移动端比较常用
标签:
①视频标签
<video src="文件地址" >
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg"> //如果不支持mp4则使用ogg格式
video>.
▲属性值
autoplay:视频自动播放
control:向用户显示播放按钮,来控制播放
wdith:宽度
height:高度
loop:循环播放
src:视频地址
poster:加载等待的画面图片(url)
②音频标签
<audio src="文件地址" control="control">
audio>
▲属性
autoplay:音频自动播放
control:向用户显示播放按钮,来控制播放
loop:循环播放
src:视频地址
poster:加载等待的画面图片(url)
HTML5新增了一些表单的标签,更具有语义,也能限制用户输入的内容
type="email" //必须输入email类型
type="url" //必须输入url类型
type="date" //必须输入date类型
type="time" //必须输入时间类型
type="month" //必须输入月类型
type="week" //必须输入周类型
type="number" //必须输入数字类型
type="tel" //提示输入的应该是电话号码
type="search" //搜索框
type="color" //生成一个颜色选择表单
input>
描述:属性选择器可以根据元素特定属性来选择元素,这样就可以不用借助于类或者id选择器。
语法:
style:
input[value]{ //当标签是input元素,且选择其中的value属性
color:pink;
}
input[type="text"]{
color:red; //选择input="text"的inputa标签
}
div[class^="val"]($=结尾)(*=含有) //选择div中类名以val开头/结尾/含有的标签
▲属性选择器权重为:10
body:
<input type="text" value="请输入用户名">
描述:结构伪类选择器主要根据文档结构来选择元素,常用于根据父级选择器里面的子元素。
冒号之前是要选择的元素,如果只写父类,要在后面加空格!
style:
ul :first-child{ } //选择ul里的第一个孩子
或写成:
li:first-child{ } //选择li里父类中li的第一个(如果li不是第一个则选择失败)
或:
ul li:first-child{ } //选择ul里的第一个li
----------------------------------------------------------------------
ul :last-child{ } //选择ul里的最后一个孩子
ul :nth-chiled(数字/关键字、公式) //选择特定的孩子元素
如:
ul :nth-chiled(even/odd) //选择偶数(奇数)元素
ul :nth-chiled(n) //选择所有的孩子,类似于一个循环结构
ul :nth-chiled(2n) //选取偶数
ul :nth-chiled(2n+1) //选取奇数
ul :nth-chiled(5n) //5的倍数
ul :nth-chiled(5+n) //从第五个开始,选取到最后
ul :nth-chiled(5-n) //前五个
body:
<ul>
<li>li>
<li>li>
<li>li>
ul>
E:first-of-type
E:last-of-type
E:nth-of-type(n)
和child的区别是,child严格遵守孩子判断,如果第一个孩子不是某元素就选择失败,
而type是单纯的挑选父元素中的指定孩子元素的序号(不需要一定是父元素的第一个孩子,是指定某种孩子)
描述:伪元素选择器可以帮助我们利用css创建新标签元素。而不需要html标签,从而简化html结构。
语法:在某个元素的内容的前面(后面)插入伪元素,通常和字体图标使用
element::before {}
element::after {}
注意:
①before和after创建一个元素,都属于行内元素,默认不能设置宽和高
②新创建的元素在文档树中找不到,所以称为伪元素
③before和after必须有content属性,没有内容就content=’ ’
④before在父元素内容的前面创建元素,after在父元素内容的后面插入元素
⑤权重和标签选择器一样,为1
⑥hover的写法为:.element:hover::before { }
.clearfix:before,.clearfix:after{
content='';
display:table;
}
.clearfix:after{
clear:both;
}
box-sizing:content-box; //会算上padding和border的宽度
box-sizing:border-box; //最终宽度就是width的值,其他属性不会撑开盒子
作用:将属性模糊或颜色偏移等图形效果应用于元素
例如:
filter:blur(5px); //模糊处理,数值越大越模糊
语法:width:calc(100%-80px);
▲在calc中可以进行+、-、*、/计算,特别的方便,要用空格隔开
描述:过渡是css三中具有颠覆性的特征,我们可以在不使用flash动画或者javascript的情况下。当元素从一种样式变换为另一种样式时,为元素添加效果,过渡动画是从一个状态渐渐地过渡到另外一个状态,可以让我们页面更好看,更动感十足。虽然低版本的浏览器不支持,但是不会影响页面布局,
▲我们现在经常和:hover一起搭配使用。
语法:
transition:过渡属性 花费时间 运动曲线 何时开始;
属性:宽度、高度、内外边距等
花费时间:单位是秒(0.5s)
运动曲线:默认为ease(可以省略)
何时开始:单位是秒,延缓触发的时间(可以省略)
▲如:transition:width 0.5s;
或者需要改变两个属性时:transition:width 0.5s , height 0.5s;
如果要所有属性变化:transition: all 0.5s;