CSS3のtransitionでカッコイイ動きの作り方!

Windows Vista SP2延長サポートの2017年4月11日の終了に伴い、IE9とIE10のサポートが終了する事になりました。これでCSS3やHTML5などの新しい技術が堂々と使えるようになります。そのうちのひとつとしてCSS3によりアニメーションの指定ができる「transition」がある。
これまでアニメーションはjQueryに頼ってきたという人にとっては、そろそろ見直さなければならないのが「transition」。今回は「CSS3のtransitionで、簡単にできるかっこいい演出」について解説したいと思います。
transitionでつくるcssアニメーションの完成品
「ON/OFF」ボタンを押すとメニューがアニメーションしながら開き、もう一度押すとメニューが消えます。
分かる人はコードを見て部分的にコピペして頂ければ使えると思いますが、今回はこれをわかりやすく順を追って解説していきます。
transitionの使い方
transitionは変化させたいCSSプロパティを指定して、アニメーションの長さ、イージング、待ち時間を設定するという簡単な方法で使う事ができるプロパティです。実行の「タイミング」として、要素のhoverや、jQueryによるaddClassをきっかけにアニメーションするのが一般的です。
transitionの記述の仕方
.hoge {
transition-property: background-color; /*変化させるCSSプロパティ名*/
transition-duration:1s; /*アニメーションする時間の長さ*/
transition-timing-function:ease-out; /*イージング*/
transition-delay:0.5s; /*実行されるまでの待ち時間*/
}
transitionのショートハンドの書き方
.hoge {
transition: background-color 1s ease-out 0.5s;
}
左から順に、プロパティ、デュレーション、イージング、ディレイの順番です。
HTMLの記述
<div id="bg"></div>
<div id="btn">ON/OFF</div>
<ul id="anime">
<li>ナビ1</li>
<li>ナビ2</li>
<li>ナビ3</li>
<li>ナビ4</li>
<li>ナビ5</li>
</ul>
HTMLはごく簡単なボタン(id="btn")とモーダル用の黒い背景(id="bg")とリスト形式のナビゲーション(id="anime")だけです。このHTMLに対してcssでアニメーションをつけて、jQueryでイベントの設定をサポートします。
jQueryの記述
$(function(){
var flg=0;
$("#btn").on('click', function(){
$("#anime").toggleClass("henka");
if(flg==0){
$("#bg").fadeIn(300);
flg=1;
}else{
$("#bg").fadeOut(1500);
flg=0;
}
});
});
jQueryではcssではできないクリックによるイベントの設定をしていきます。具体的には(id="btn")にたいしてクリックイベントの設定です。まず最初にtoggleClassでクラス"henka"をつけます。
次にモーダルっぽい背景の黒色をfadeIn、fadeOutでつけます。
ここで使っている「flg(フラグ)」に馴染みの無い方の為に少し解説します。flg(任意の名前)はスイッチ的な目印の役割をしており、一度クリックすると、flg=0を設定、もう一度押すとflg=1に変更し、if文で「flgが0かそれ以外か」を判断し、flgが0の場合はfadeIn、flgが0以外の時はfadeOutをするという方法で、プログラムでは良く使われる「フラグを立てる」と言われる手法です。
CSSの記述
色やサイズなどの見ための装飾の説明は割愛して、アニメーション部分の説明をしますと「#anime li」に対して先程解説したtransitionの設定をします。
transition: all 0.2s ease-in;
opacity: 0;
今回はプロパティ名にallを設定しています。個別に指定するのが面倒な時はallを設定することで全てのプロパティに対してアニメーションをつける事ができます。また、ディレイの部分は省略する事が可能です。「opacity:0」で初期表示として、透明にしておきます。
次に先程省略していたディレイの設定です。順番にタイミングをズラして表示する為に「li」に対して「nth-child」でひとつずつディレイ時間を変えて設定していきます。
#anime li:nth-child(1){
transition-delay:0.1s;
}
#anime li:nth-child(2){
transition-delay:0.2s;
}
#anime li:nth-child(3){
transition-delay:0.3s;
}
#anime li:nth-child(4){
transition-delay:0.4s;
}
#anime li:nth-child(5){
transition-delay:0.5s;
}
変形や移動を設定できるtransform
続いて、動きの設定をします。「transition」でのアニメーションに欠かせないのが「transform」による変形や移動の記述です。transformでは要素の移動「transrate()、translateX()、translateY()」、要素の拡大・縮小「scale()、scaleX()、scaleY()」、要素の回転「rotate()、rotateX()、rotateY()、rotateZ()」などが指定できます。
今回はボタンをクリックする事で「#anime」に対して「クラス"henka"」をつけるようにjQueryで設定したので、「#anime.henka li」に対してアニメーションの後の指定をつけます。つまり初期指定のCSSとこのアニメーション後の指定の差がアニメーションとして表現されるという仕組みです。
今回は横方向にスライドさせて表示させたいので、translageX(30px)と設定しましす。また、透明の状態から表示されるため「opacity:1;」に変化させます。
#anime.henka li{
transform: translateX(30px);
opacity: 1;
}
これで無事アニメーションをさせる事ができます。もういちどページ上部のCodePenで確認してみて下さい。
まとめ
CSSのtransitionでのアニメーションはとても簡単なので、工夫しだいでもっとかっこいい演出ができると思います。ようやくIE9 ・IE10を無視できる時代が到来したのでこれを機にゴリゴリCSS3を使っていきましょう!
※当記事の掲載内容は執筆現在の個人の見解・調査によるもので、動作・サービス等を保証するものではありません。最新情報は各公式サイトでご確認頂き、購入・契約・データ作成等はご自身の判断・責任でお願いします。 免責事項
関連記事
サイト内検索
新着記事
- YouTubeより詳しく!まとめて学べる『WEBデザイン動画講座』
- Figmaの背景切り抜きプラグイン『Remove BG』のAPI Key取得方法と使い方
- WEBデザイン動画講座のご紹介【お得な割引アリ】
- WixでWEBデザイナーが「ポートフォリオサイト」を作ってみた!
- WEBデザインツールの比較!初心者におすすめは?Figma Photoshop Xd Illustrator
- CodeCampGATE(コードキャンプゲート)とは?転職・就職先と評判
- コードキャンプの「Webデザイン・Webデザイン副業コース」を卒業生が解説!
- テックアカデミー「はじめての副業コース」卒業生が内容を解説!
- PHPの独学!挫折しないおすすめ勉強方法!
- 16インチMacbook Proで使える100Wモバイルバッテリー Zendure SuperTankレビュー
- [体験談] CodeCamp(コードキャンプ)で挫折する理由!
- テックアカデミー「受講した感想・評判」学習内容の総まとめ!
- Photoshop 超リアルな商品写真の鏡面反射の作り方
- デイトラの評判は?詳細内容とメリット・デメリットを解説
- CSSだけ超簡単!画像トリミングできる 「object-fit」 の使い方
- コードキャンプ 「無料体験・カウンセリング」を受講してみた!予約方法や内容の体験談
- デジタルハリウッドSTUDIO by LIGの評判
- PhotoshopでWEBデザインする基本の設定とテクニック
- テックアイエス評判は?現役プロがTECH I.S.を徹底調査!
- WEBデザインの練習・勉強をしながら「お金までもらえる」超おすすめの学習方法!
カテゴリー
タグリスト