サンプル
See the Pen Codepen by Tora (@webtoranomaki) on CodePen.
コード
奥行きを表現するpsespectiveプロパティ、変化に時間経過の概念を持たせるtransitionプロパティ、動きを表現するanimationプロパティ、keyframeのtranstorm:skewは傾斜を設定。
<a class="btn btn01" href=""><div></div><div>Button</div></a>
.btn {
position: relative;
display: block;
width: 200px;
height: 50px;
line-height: 50px;
text-align: center;
}
.btn01 {
overflow: hidden;
-webkit-perspective: 200px;
perspective: 200px;
}
.btn01 div {
position: absolute;
box-sizing: border-box;
width: 200px;
height: 50px;
text-align: center;
}
.btn01 div:nth-child(1) {
border: 1px solid #333;
background-color: #fff;
}
.btn01 div:nth-child(2) {
color: #333;
left: -100px;
top: 2px;
width: 400px;
height: 50px;
}
.btn01:hover div:nth-child(1) {
-webkit-animation: btn03_bg 0.3s linear;
-moz-animation: btn03_bg 0.3s linear;
animation: btn03_bg 0.3s linear;
-webkit-animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
.btn01:hover div:nth-child(2) {
color: #000;
-webkit-animation: btn03 0.3s linear;
-moz-animation: btn03 0.3s linear;
animation: btn03 0.3s linear;
-webkit-animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
animation-fill-mode: forwards;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAF0lEQVQIW2NkwAIYgWKS6OIgQQxAoUoAE4AAUnD/0ugAAAAASUVORK5CYII=) repeat;
}
@-webkit-keyframes btn03_bg {
49.00% {
background-color: #fff;
}
50.00% {
background-color: #000;
}
to {
background-color: #000;
}
}
@-webkit-keyframes btn03 {
from {
color: #000;
-webkit-transform: skewX(0deg);
-moz-transform: skewX(0deg);
transform: skewX(0deg);
}
25.00% {
color: #000;
-webkit-transform: skewX(80deg);
-moz-transform: skewX(80deg);
transform: skewX(80deg);
}
75.00% {
color: #fff;
-webkit-transform: skewX(-20deg);
-moz-transform: skewX(-20deg);
transform: skewX(-20deg);
}
90.00% {
color: #fff;
-webkit-transform: skewX(0deg);
-moz-transform: skewX(0deg);
transform: skewX(0deg);
}
to {
color: #fff;
-webkit-transform: skewX(0deg);
-moz-transform: skewX(0deg);
transform: skewX(0deg);
}
}
@-moz-keyframes btn03_bg {
49.00% {
background-color: #fff;
}
50.00% {
background-color: #000;
}
to {
background-color: #0000
}
}
@-moz-keyframes btn03 {
from {
-webkit-transform: skewX(0deg);
-moz-transform: skewX(0deg);
transform: skewX(0deg);
}
25.00% {
color: #000;
-webkit-transform: skewX(80deg);
transform: skewX(80deg);
}
75.00% {
color: #fff;
-webkit-transform: skewX(-20deg);
-moz-transform: skewX(-20deg);
transform: skewX(-20deg);
}
90.00% {
color: #fff;
-webkit-transform: skewX(0deg);
-moz-transform: skewX(0deg);
transform: skewX(0deg);
}
to {
color: #fff;
-webkit-transform: skewX(0deg);
-moz-transform: skewX(0deg);
transform: skewX(0deg);
}
}