悬浮动画
像这样的悬浮动画该怎么做,让我们按照以下步骤完成
步骤:
-
先把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>
运行效果