像这样的悬浮动画该怎么做,让我们按照以下步骤完成
步骤:
先把HTML内容做起来,用button属性创建一个按钮,按钮内写上悬浮效果
<button class='btn'>悬浮动画</button>
在style标签内设置样式,先设置盒子大小,这里用body当作容纳button的盒子 ,再用display:flex;属性把盒子变为弹性盒子,再用justify-content和align-item设置盒子body居中
/* 第一步:设置盒子大小,这里用body当作容纳button的盒子 */
body{
/* height:100vh;能起到什么作用 */
height:100vh;
display:flex;
justify-content: "center";
align-items:center;
}
创建和设置好盒子样式后,开始设置button样式
button是块级元素,所以第一步就是设置高宽,高为50px,宽度为100px
background-color: transparent;
:设置按钮的背景颜色为透明。
border-color: #800080;
:设置按钮边框的颜色为#800080(一种紫色)。
border-radius: 5px;
:设置按钮边框的圆角半径为5像素,使按钮的四个角更圆润。
color: #800080;
:设置按钮文字的颜色为#800080(一种紫色)。
font-weight: bolder;
:设置按钮文字的字体粗细为比父元素的字体更粗。
margin: 0 auto;
:设置按钮的水平外边距为自动,上下外边距为0,使按钮在水平方向上居中。
cursor: pointer;
:当鼠标悬停在按钮上时,改变鼠标的形状为手形,表示这是一个可点击的元素。
position: relative;
:设置按钮的位置为相对定位,相对于其正常位置进行定位。为后面absolute定位属性做铺垫
.btn{
width:100px;
height:50px;
background-color:transparent;
border-color: #55aa7f;
border-radius:5px;
color:#55aa7f;
font-weight: bolder;;
margin:0 auto;
cursor:pointer;
position:relative;
}
button样式设置之后,就开始设置动画效果,为动画效果设置了三个选择器
.btn::before选择器使用::before伪元素创建了一个额外的元素
/*::before创建的元素是行内元素*/
.btn::before{
content:"";
height:100%;
width:0px;
background-color:#55aa7f;
/* 设置::before盒子所在位置 */
position:absolute;
top:0%;
left:-24%;
transform:skew(45deg);
z-index:-1; /*这使得伪元素在页面上的堆叠顺序低于其正常位置。*/
transition:all 0.5s; /*颜色变化*/
}
.btn:hover::before选择器是当鼠标悬停在按钮上,就会触发.btn中的before创建的伪元素
.btn:hover::before{
/*触发之后,由原本的0px直接变为160%的宽度,这是很多动画效果都要设置的步骤,像是缩放,悬浮,出现等动画*/
width:160%;
}
.btn:hover选择器是当鼠标悬停在按钮上,不光按钮背景要变,按钮内的字体颜色也要变
.btn:hover{
color:white;
}
动画效果设置好之后,还要在.btn选择器中添加overflow和transition属性
.btn{
/* 因为伪元素创建的盒子超出按钮大小,再说也为了美观,直接用overflow属性的hidden值隐藏 */
overflow:hidden;
/*如果仅仅设置了动画效果,点击过去,直接变过来,这样观感不好,所以用transition过渡元素,选取所有元素,再输入0.5s的过渡时间*/
transition:all 0.5s;
}
这样这个小项目就算完成了
完整代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>悬浮动画</title>
<style>
/* 第一步:设置盒子大小,这里用body当作容纳button的盒子 */
body{
/* height:100vh;能起到什么作用 */
height:100vh;
display:flex;
justify-content: "center";
align-items:center;
}
/* 第二步:创建好盒子后,就开始设置button的样式 */
.btn{
width:100px;
height:50px;
background-color:transparent;
border-color: #55aa7f;
border-radius:5px;
color:#55aa7f;
font-weight: bolder;;
margin:0 auto;
cursor:pointer;
position:relative;
overflow:hidden;
transition:all 0.5s; /*字体变化*/
}
/* 第三步:button样式设置好之后,就开始设置动画效果 */
.btn::before{
content:"";
height:100%;
width:0px;
background-color:#55aa7f;
/* 设置::before盒子所在位置 */
position:absolute;
top:0%;
left:-24%;
transform:skew(45deg);
z-index:-1;
transition:all 0.5s; /*颜色变化*/
}
.btn:hover::before{
width:160%;
}
.btn:hover{
color:white;
}
</style>
</head>
<body>
<button class='btn'>悬浮动画</button>
</body>
</html>
运行效果