SlideShare ist ein Scribd-Unternehmen logo
1 von 26
JavaScript + CSS3を活用して
スマートフォンサイト/アプリに
     動きを付けてみよう


    WordPress+HTML5勉強会 in 神戸
           2012/02/18
まずは自己紹介

若松 浩昭
Twitter:   @azuyuu
Facebook: facebook.com/azuyuu



• フロント周りの実装を主に担当
• 仕事のほとんどがスマートフォン対応
• HTML5-WEST.jp コアメンバー
今回の話のポイント




CSS3アニメーションを
活用しよう!!
ちょっと話の整理

• 制作案件の現状
 → スマートフォン案件が急激に増加中


• スマートフォン案件で求められるもの
 → 端末(OS・ブラウザ)の理解
 → 無駄のないコーディング
 → 動きの実装

            本当に必要?
動きは必要なのか?

• UXの向上に貢献するのではないだろうか

• クライアントから要望がある

• 競合他社と差別化できる、かも

なくてもいいけど・・・。
需要があるのは確か。
ちなみに、ここでいう動きとは

• 派手に主張するやつ
 → フルFlashみたいにグリグリ動くレベル


• さりげなく主張するやつ
 → あくまでサイト/アプリの補足レベル


        今日取り上げるのはこっち
動きを実装するにあたって
動きはどうやって付ける?

• JavaScriptでアニメーション

• CSS3でアニメーション
JavaScriptでアニメーション

• 実態はsetIntervalでひたすらループ処理

• 複雑な動きになると、書くのが面倒
 (メンテナンスもしんどい)

• 処理速度は端末のスペックに依存

• スマートフォンでは処理落ちを覚悟
CSS3でアニメーション

• 実装・制御はJavaScriptより簡単

• メンテナンスがJavaScriptより楽

• Mobile Safariではさらに快適
 (全てのCSS要素が快適なわけではない)

• Android端末は・・・
スマートフォンを対象とするなら

• JavaScriptでアニメーション

• CSS3でアニメーション


      iPhoneで「ぬめー」っと動くのは
      感動ものですよ!!
CSS3アニメーションの種類1

• transition
   → 簡単なアニメーション

a:hover {
     -webkit-transition: all 1s linear;
     -webkit-transform: translate3d(500px, 0, 0);
}
CSS3アニメーションの種類2

• animation
   → タイムライン・複雑なアニメーション

a:hover {
     -webkit-animation: animeSample 1s;
}

@-webkit-keyframes animeSample {
     0% { -webkit-transform: translate3d(0, 0, 0); }
     100% { -webkit-transform: translate3d(500px, 0, 0); }
}
動きの実例について
動きを組み込んだ例




 DEMO
簡単に仕組みを解説

• 例えば、ボタンをタップすることによっ
 て、オーバーレイを表示する場合・・
STEP1. タグ構成

<!DOCTYPE html>
<html>
  <div id="wrapper">
    <!--メインコンテンツ-->
    <a id="btn" role="button">開く</a>
  </div>
  <div id="overlay">
    <!--オーバーレイのコンテンツ-->
  </div>
</html>      ボタンをクリックしたら、
             #overlayの要素が、画面の手前に
             表示される
STEP2. JavaScriptでイベント

<script>
  $(function() {
     $("#btn").click(function() {

             $("#overlay").addClass("open");

       });
  });
</script>
         JavaScriptではclassを指定するのみ!!
         アニメーション自体はCSSまかせ
STEP3. CSSでアニメーション

<style>
    #overlay.open {
      -webkit-animation: openOverlay 0.5s;
     -webkit-animation-fill-mode : both;
    }

    @-webkit-keyframes openOverlay {
     0% { -webkit-transform: translate3d(0, -300px, 0); }
     100% { -webkit-transform: translate3d(0, 0, 0); }
    }
</style>



  アニメーションの中身は全てCSSで定義
STEP4. 次のイベント

<script>
  $(function() {
     $("#overlay").bind("webkitAnimationEnd", function() {

             $("#hoge").text("オーバーレイが表示されました");

       });
  });
</script>
        アニメーション終了時に呼び出す処理を
        ここに記述
        transitionを使ってアニメーションした
        場合は、 webkitTransitionEnd を使用
補足. アニメーションを変更

<style>
@-webkit-keyframes openOverlay {
     0% { -webkit-transform: translate3d(0, -300px, 0); }
     100% { -webkit-transform: translate3d(0, 0, 0); }
}


                       内容を切り替えてみる
@-webkit-keyframes openOverlay {
     0% { -webkit-transform: scale(0); }
     50% { -webkit-transform: scale(1.2); }
     80% { -webkit-transform: scale(0.9); }
     100% { -webkit-transform: scale(1); }
}
</style>
注意事項1

• 疑似要素にアニメーション指定はできない
<style>
#overlay:after {
     display: block;
     content: "";
     width: 100px;            アニメーションしない・・・
     height: 100px;
     opacity: 0;
    -webkit-transition: all 0.3s linear;
}

#overlay.open:after {
     opacity: 1;
}
</style>
注意事項2

• 非表示の要素に対してはタイマーを
      使用してアニメーションを指定

$("#btn").click(function() {
     var overlay = $("#overlay");
     overlay.css({ "display": "block" });

     setTimeout(function() {
          overlay.addClass("open");
     }, 100);
                          タイマーでアニメーションの
});
                          開始時間を遅延
最後に・・・
CSS3アニメーション・・・

• スマートフォンなら気兼ねなく使える

• 慣れれば実装が非常に簡単

• 何より、動かすのは楽しい!!

是非、使ってみてください!!
THANKS!!

Weitere ähnliche Inhalte

Was ist angesagt?

HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティNaoki Matsuda
 
Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Kohei Kadowaki
 
インラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるインラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるKohei Kadowaki
 
JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工Masayuki Maekawa
 
ShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみKohei Kadowaki
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かきNishida Kansuke
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境lig-dsktschy
 
UITableViewで無限CoverFlowを作る
UITableViewで無限CoverFlowを作るUITableViewで無限CoverFlowを作る
UITableViewで無限CoverFlowを作るHidetoshi Mori
 
Firefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみたFirefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみたKohei Kadowaki
 
よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているかよこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているかYuichiro Suzuki
 
Css3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみたCss3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみたShinichi Sato
 
使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのこと使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのことKasumi Morita
 
フロント作業の効率化
フロント作業の効率化フロント作業の効率化
フロント作業の効率化Yuto Yoshinari
 
SVG MANIAX Ver.2 - Mars vanilla
SVG MANIAX Ver.2 -  Mars vanillaSVG MANIAX Ver.2 -  Mars vanilla
SVG MANIAX Ver.2 - Mars vanillaNaoki Matsuda
 
UICollectionViewLayoutでカバーフローを作りたい!
UICollectionViewLayoutでカバーフローを作りたい!UICollectionViewLayoutでカバーフローを作りたい!
UICollectionViewLayoutでカバーフローを作りたい!sawat1203
 
マピオン的Webメルカトルなタイルの作り方
マピオン的Webメルカトルなタイルの作り方マピオン的Webメルカトルなタイルの作り方
マピオン的Webメルカトルなタイルの作り方Shimpei Matsuura
 

Was ist angesagt? (19)

HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティ
 
Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策
 
インラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるインラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみる
 
JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工
 
ShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみ
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき
 
JS/Canvas Tutorial2
JS/Canvas Tutorial2JS/Canvas Tutorial2
JS/Canvas Tutorial2
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
Nuxt.jsで手軽に構築するモダン・フロントエンド開発環境
 
UITableViewで無限CoverFlowを作る
UITableViewで無限CoverFlowを作るUITableViewで無限CoverFlowを作る
UITableViewで無限CoverFlowを作る
 
Firefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみたFirefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみた
 
よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているかよこへな3 15発表資料 最近ViewController をどんな感じで書いているか
よこへな3 15発表資料 最近ViewController をどんな感じで書いているか
 
Css3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみたCss3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみた
 
使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのこと使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのこと
 
フロント作業の効率化
フロント作業の効率化フロント作業の効率化
フロント作業の効率化
 
SVG MANIAX Ver.2 - Mars vanilla
SVG MANIAX Ver.2 -  Mars vanillaSVG MANIAX Ver.2 -  Mars vanilla
SVG MANIAX Ver.2 - Mars vanilla
 
UICollectionViewLayoutでカバーフローを作りたい!
UICollectionViewLayoutでカバーフローを作りたい!UICollectionViewLayoutでカバーフローを作りたい!
UICollectionViewLayoutでカバーフローを作りたい!
 
マピオン的Webメルカトルなタイルの作り方
マピオン的Webメルカトルなタイルの作り方マピオン的Webメルカトルなタイルの作り方
マピオン的Webメルカトルなタイルの作り方
 
BuriKaigi2018
BuriKaigi2018BuriKaigi2018
BuriKaigi2018
 

Ähnlich wie JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう

Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Toshiro Shimizu
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたShumpei Shiraishi
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and ProgrammingTaku AMANO
 
Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」Hideki Akiba
 
Brush up your Coding! 2013 winter
Brush up your Coding! 2013 winterBrush up your Coding! 2013 winter
Brush up your Coding! 2013 winterShogo Sensui
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門Yohta Kanke
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるYutaro Miyazaki
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Kazunari Hara
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2Nishida Kansuke
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門Atsushi Tadokoro
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現AdvancedTechNight
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626Taku AMANO
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVCRyunosuke SATO
 
HTML5 & The Web Platform
HTML5 & The Web PlatformHTML5 & The Web Platform
HTML5 & The Web PlatformMasataka Yakura
 
jQueryでiTunes Store風スライドショーを作ってみる
jQueryでiTunes Store風スライドショーを作ってみるjQueryでiTunes Store風スライドショーを作ってみる
jQueryでiTunes Store風スライドショーを作ってみるYasuhito Yabe
 

Ähnlich wie JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう (20)

HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
 
Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」
 
Brush up your Coding! 2013 winter
Brush up your Coding! 2013 winterBrush up your Coding! 2013 winter
Brush up your Coding! 2013 winter
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考える
 
What's Sketch.app
What's Sketch.appWhat's Sketch.app
What's Sketch.app
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
HTML5 & The Web Platform
HTML5 & The Web PlatformHTML5 & The Web Platform
HTML5 & The Web Platform
 
jQueryでiTunes Store風スライドショーを作ってみる
jQueryでiTunes Store風スライドショーを作ってみるjQueryでiTunes Store風スライドショーを作ってみる
jQueryでiTunes Store風スライドショーを作ってみる
 

Mehr von Hiroaki Wakamatsu

スマートフォン対応 2012年の振り返りと2013年の展望
スマートフォン対応 2012年の振り返りと2013年の展望スマートフォン対応 2012年の振り返りと2013年の展望
スマートフォン対応 2012年の振り返りと2013年の展望Hiroaki Wakamatsu
 
スマートフォン対応、気をつけたいトラブル JavaScript編
スマートフォン対応、気をつけたいトラブル JavaScript編スマートフォン対応、気をつけたいトラブル JavaScript編
スマートフォン対応、気をつけたいトラブル JavaScript編Hiroaki Wakamatsu
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルHiroaki Wakamatsu
 
スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集Hiroaki Wakamatsu
 
Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築Hiroaki Wakamatsu
 
スマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイント
スマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイントスマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイント
スマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイントHiroaki Wakamatsu
 

Mehr von Hiroaki Wakamatsu (6)

スマートフォン対応 2012年の振り返りと2013年の展望
スマートフォン対応 2012年の振り返りと2013年の展望スマートフォン対応 2012年の振り返りと2013年の展望
スマートフォン対応 2012年の振り返りと2013年の展望
 
スマートフォン対応、気をつけたいトラブル JavaScript編
スマートフォン対応、気をつけたいトラブル JavaScript編スマートフォン対応、気をつけたいトラブル JavaScript編
スマートフォン対応、気をつけたいトラブル JavaScript編
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 
スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集
 
Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築
 
スマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイント
スマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイントスマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイント
スマートフォン対応 ー クリエイター/ディレクターが知っておくべきポイント
 

JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう