このページの本文へ

あのサイトとはひと味違う!こだわりマウスオーバー20連発 (2/2)

2014年10月24日 11時00分更新

文●本間宣光 / Stronghold

  • この記事をはてなブックマークに追加
本文印刷

STEP 4:バリエーションを作る

 マウスオーバーのアニメーションが完成した。応用すれば、個性豊かなマウスオーバーを作れる。

 以下に20種類のバリエーションを用意した。その中から3つをピックアップして紹介する。

HTMLの構造

 ボタン部分のHTMLは最初に作ったボタンとすべて共通だ。ただし、複数のアニメーションを適用させるため、「.slide」を「.anim-1」〜「.anim-20」に変更し、ボタンによって overflow: hidden; の適用/非適用を分けている。

 また、ソースコードを簡略化するため、「 .slide」に書いていた記述を「 .btn span」に変更し、 positionはアニメーションごとに設定、色はセクションごとに設定している。

■ソースコード(HTML)

<div class="btn">
    <p>Slide Down</p>
    <span class="anim-1 reset">Slide Down</span>
</div><div class="btn">
    <p>Old TV</p>
    <span class="anim-20 reset">Old TV</span>
</div>

■ソースコード(CSS)

.btn {
    display: inline-block;
    position: relative;
    width: 200px;
    height: 50px;
    margin: 10px;
    font-size: 12px;
    font-weight: 400;
    line-height: 50px;
    text-align: center;
    text-transform: uppercase;
    cursor: pointer;
}
.btn p {
    width: 100%;
    height: 100%;
    line-height: 50px;
    color: #00B6C1;
    font-size: 12px;
}
.btn span {
    position: absolute;
    width: 100%;
    height: 100%;
    color: #FFF;
}
.reset {
    visibility: hidden;
    -webkit-transition: none 0s ease 0s;
            transition: none 0s ease 0s;
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
}

Animation No.5

 参考にした「Omnisense」のように transfrom プロパティの skew を使用し、斜めを取り入れたアニメーション。マウスオーバーした際に形を元に戻す。

■ソースコード(CSS)

.anim-5 {
    top: -160%left: 0;
    -webkit-transform: skew(0deg, -15deg);
            transform: skew(0deg, -15deg);
}
.anim-5.enter {
    -webkit-transition: -webkit-transform .15s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0s;
            transition:         transform .15s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0s;
    -webkit-transform: translate3d(0, 160%, 0) skew(0deg, 0deg);
            transform: translate3d(0, 160%, 0) skew(0deg, 0deg);
}
.anim-5.leave {
    -webkit-transition: -webkit-transform .15s ease-in-out 0s;
            transition:         transform .15s ease-in-out 0s;
    -webkit-transform: translate3d(0, 320%, 0) skew(0deg, -15deg);
            transform: translate3d(0, 320%, 0) skew(0deg, -15deg);
}

Animation No.10

 奥行きを利用したアニメーション。「.btn」に奥行き(perspective) を与え、マウスオーバー時とマウスアウト時で変形の基準点(transform-origin)を変更している。

■ソースコード(CSS)

.section-3 .btn {
    border: 1px solid #F06060;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
    -webkit-perspective: 500px;
            perspective: 500px;
}
.section-3 p {
    color: #F06060;
}
.section-3 span {
    background: #F06060;
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
}
.anim-10 {
    top: 0left: 0;
    -webkit-transform-origin: 50% 100% 0;
            transform-origin: 50% 100% 0;
    -webkit-transform: rotateX(-90deg);
            transform: rotateX(-90deg);
}
.anim-10.enter {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    -webkit-transition: -webkit-transform .15s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0s;
            transition:         transform .15s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0s;
}
.anim-10.leave {
    opacity: 0;
    -webkit-transform-origin: 50% 0 0;
            transform-origin: 50% 0 0;
    -webkit-transform: rotateX(-90deg);
            transform: rotateX(-90deg);
    -webkit-transition: -webkit-transform .15s ease-in-out 0s, opacity .1s ease-in-out .1s;
            transition:         transform .15s ease-in-out 0s, opacity .1s ease-in-out .1s;
}

Animation No.15

 2つのボーダーをscaleプロパティを使ってフォーカスさせるアニメーション。本デモでは :beore, :after 擬似要素にborderのアニメーションを適用している。

■ソースコード(CSS)

.anim-15 {
    top: 0left: 0;
}
.section-4 .btn span.anim-15 {
    text-indent: -9999px;
    background: transparent;
}
.anim-15:before,
.anim-15:after {
    content: "";
    display: block;
    position: absolute;
    top: 0left: 0;
    width: 100%;
    height: 100%;
    background: transparent;
    border: 1px solid #FAAA20;
    opacity: 0;
    -webkit-transform: scale(2.0);
            transform: scale(2.0);
}
.anim-15:after {
    -webkit-transform: scale(2.5);
            transform: scale(2.5);
}
.anim-15.enter:before,
.anim-15.enter:after {
    opacity: 1;
    -webkit-transition: -webkit-transform .15s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0s, opacity .2s ease-in-out 0s;
            transition:         transform .15s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0s, opacity .2s ease-in-out 0s;
    -webkit-transform: scale(1);
            transform: scale(1);
}
.anim-15.leave:before,
.anim-15.leave:after {
    -webkit-transition: -webkit-transform .15s ease-in-out 0s, opacity .2s ease-in-out 0s;
            transition:         transform .15s ease-in-out 0s, opacity .2s ease-in-out 0s;
    -webkit-transform: scale(.65);
            transform: scale(.65);
}
.anim-15.leave:after {
    -webkit-transform: scale(.85);
            transform: scale(.85);
}

 今回作成したデモはすべて1つの要素をアニメーションさせているが、複数の要素を使って違った動きを適用させてもおもしろい。いろいろな動きを試してみてほしい。

著者:本間宣光(ほんま・のぶあき)

著者写真

1990年生まれ。株式会社レターズのデザイナー。2014年からWebデザイナーとして働き始める。Webに関する活動拠点「Stronghold」というサイトでブログを書いたり、デザインの実験をしている。

前へ 1 2 次へ

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています