CSS 応用
CSSのみでクルッと回転するボタンをつくる
<a class="button" href="#"><span>Hover</span><span>Button</span></a>

.button {
    display: inline-block;
    width: 200px;
    height: 54px;
    text-align: center;
    text-decoration: none;
    line-height: 54px;
    outline: none;
    position: relative;
    -webkit-perspective: 300px;
    perspective: 300px;
}
.button::before,
.button::after {
    position: absolute;
    z-index: -1;
    display: block;
    content: '';
}
.button,
.button::before,
.button::after {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-transition: all .3s;
    transition: all .3s;
}
.button span {
    display: block;
    position: absolute;
    width: 200px;
    height: 60px;
    border: 2px solid #333;
    text-align: center;
    line-height: 56px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-transition: all .3s;
    transition: all .3s;
    pointer-events: none;
}
.button span:nth-child(1) {
    background-color: #333;
    color: #fff;
    -webkit-transform: rotateX(90deg);
    -moz-transform: rotateX(90deg);
    transform: rotateX(90deg);
    -webkit-transform-origin: 50% 50% -30px;
    -moz-transform-origin: 50% 50% -30px;
    transform-origin: 50% 50% -30px;
}
.button span:nth-child(2) {
    background-color: #fff;
    color: #333;
    -webkit-transform: rotateX(0deg);
    -moz-transform: rotateX(0deg);
    transform: rotateX(0deg);
    -webkit-transform-origin: 50% 50% -30px;
    -moz-transform-origin: 50% 50% -30px;
    transform-origin: 50% 50% -30px;
}
.button:hover span:nth-child(1) {
    -webkit-transform: rotateX(0deg);
    -moz-transform: rotateX(0deg);
    transform: rotateX(0deg);
}
.button:hover span:nth-child(2) {
    background-color: #333;
    -webkit-transform: rotateX(-90deg);
    -moz-transform: rotateX(-90deg);
    transform: rotateX(-90deg);
}
結果
HoverButton