かわたま.net

Enjoy Creative! かわたまのwebメモ

【css3】ボタンがキューブ状にクルッと回転するホバーエフェクト実装方法

2014 October 05

Tag:

css3では様々なホバーエフェクトを実装できますが、今回はホバー時に「キューブ状にクルッと回転する」ボタンを実装してみます。

実装sample
Button

【対応ブラウザ】
Chrome 11+
Firefox 4+
Opera 11.10+
safari 5.1+
IE 10+
【html】
<a class="button" href="#"><span data-hover="ボタン">Button</span></a>

data-hoverで回転後のテキストを指定します。今回は「Button」から「ボタン」に変わるようにしてみました。

【css】
a.button {
  line-height: 32px;
  -webkit-perspective: 300px;
  -moz-perspective: 300px;
  perspective: 300px;
  text-align: center;
}
a.button span {
  position: relative;
  display: inline-block;
  padding: 0 20px;
  background: #0FA7A9;
  -webkit-transition: -webkit-transform 0.3s;
  -moz-transition: -moz-transform 0.3s;
  transition: transform 0.3s;
  -webkit-transform-origin: 50% 0;
  -moz-transform-origin: 50% 0;
  transform-origin: 50% 0;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  transform-style: preserve-3d;
}
a.button span::before {
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  height: 100%;
  background: #0A8184;
  content: attr(data-hover);
  -webkit-transition: background 0.3s;
  -moz-transition: background 0.3s;
  transition: background 0.3s;
  -webkit-transform: rotateX(-90deg);
  -moz-transform: rotateX(-90deg);
  transform: rotateX(-90deg);
  -webkit-transform-origin: 50% 0;
  -moz-transform-origin: 50% 0;
  transform-origin: 50% 0;
}
a.button:hover span,
a.button:focus span {
  -webkit-transform: rotateX(90deg) translateY(-22px);
  -moz-transform: rotateX(90deg) translateY(-22px);
  transform: rotateX(90deg) translateY(-22px);
}
a.button:hover span::before,
a.button:focus span::before {
  background: #0FA7A9;
}

・13〜15行目で回転速度の指定
・29行目で回転した時に影になる面の背景色を指定(通常の背景色よりも少し暗くすると自然です)