十字形劈开
.btn {
margin: 80px;
width: 400px;
height: 80px;
position: relative;
font-size: 4rem;
background-color: #f2f2f2;
color: black;
z-index: 1;
transition: 1s;
}
.btn::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #262626;
transform: rotateX(90deg);
transition: 1s;
z-index: -1;
}
.btn:hover::before {
transform: rotateX(0deg);
}
.btn::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #262626;
transform: rotateY(90deg);
transition: 1s;
z-index: -1;
}
.btn:hover::after {
transform: rotateY(0deg);
}
.btn:hover {
color: #fff;
}
十字形黑到白,原理是通过旋转x和y轴得到
自上而下倒塌
.roate {
margin: 5px;
width: 400px;
height: 50px;
margin-top: 200px;
position: relative;
overflow: hidden;
background-color: inherit;
}
.roate::before {
content: "";
position: absolute;
left: 0;
top: 0;
background-color: yellowgreen;
z-index: -1;
width: 100%;
height: 100%;
transform-origin: bottom left;
transform: rotate(-90deg);
transition: transform 1s ease-in-out;
}
.roate:hover::before {
transform: rotate(0deg);
}
原理是before里画一团颜色,用transform旋转让他塌下来
填充
.btn2 {
margin: 5px;
width: 400px;
height: 50px;
margin-top: 200px;
position: relative;
background-color: inherit;
overflow: hidden;
color: burlywood;
transition: all 1.5s;
font-size: 1rem;
}
.btn2::before {
content: "";
position: absolute;
left: 0;
top: 0;
background-color: burlywood;
width: 100%;
height: 100%;
z-index: -1;
transform-origin: left;
transform: translateX(-100%);
transition: transform 1s ease-in-out;
}
.btn2:hover::before {
transform: translateX(0);
}
.btn2:hover {
color: white;
}
悬浮放大
.btn {
padding: 10px;
position: relative;
background-color: inherit;
text-transform: uppercase;
color: black;
transition: all 1.5s;
font-size: 1.25rem;
border: 3px solid black;
font-weight: 300;
letter-spacing: 2px;
}
.btn:hover {
font-weight: 900;
letter-spacing: 5px;
border: 5px solid black;
}
想不出来怎么形容
a {
font-size: 2rem;
display: flex;
align-items: center;
justify-content: center;
color: black;
text-decoration: none;
margin: 25px;
width: 160px;
height: 60px;
line-height: 60px;
position: relative;
transition: all 0.2s;
letter-spacing: 3px;
user-select: none;
&::before {
content: "";
position: absolute;
width: 160px;
height: 90px;
top: -15px;
left: 0;
border-left: 4px solid #ff717f;
border-right: 4px solid #353d81;
transition: all 1s;
}
&:hover::before {
transform: rotateY(180deg);
}
&:hover::after {
transform: rotateX(180deg);
}
&::after {
content: "";
position: absolute;
width: 200px;
height: 60px;
top: 0;
left: -15px;
border-top: 4px solid #ff717f;
border-bottom: 4px solid #353d81;
transition: all 1s;
transition-delay: 0.2s;
}