CSS3 アニメーションで要素を表示・非表示
iOS用のWEBアプリ制作のためのメモ。
iOS専用でCSS3アニメーションが使用できるので、アニメーション部分をCSS3で作ってJavaScriptでトリガーを制御します。
HTML
.on
が使いたいのでjQueryを読み込んでおく。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>Document</title> <meta name="description" content="" /> <meta name="keywords" content="" /> <link rel="stylesheet" href="inc/css/common_sc.css" /> <script type="text/javascript" src="inc/js/library/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="inc/js/common.js"></script> </head> <body class="body"> <div id="container"> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> </div> <div> <button>表示/非表示</button> </div> </body> </html>
CSS
表示、非表示のアニメーションをそれぞれ設定します。
非表示の場合はデフォルトの値をtransform: scale(0, 0);
にしないとアニメーション後に再度元のサイズで表示されてしまいます。
.box{ display: none; margin: 20px; width: 100px; height: 100px; background-color: #ff0000; } .anime_in .box, .anime_out .box{ display: inline-block; } /** * webkit */ .anime_in .box{ -webkit-animation: anime_in 0.5s; } .anime_out .box{ -webkit-animation: anime_out 0.5s; -webkit-transform: scale(0, 0); } @-webkit-keyframes anime_in { 0% { -webkit-transform: scale(0, 0); } 50% { -webkit-transform: scale(1.3, 1.3); } 100%{ -webkit-transform: scale(1, 1); } } @-webkit-keyframes anime_out { 0% { -webkit-transform: scale(1, 1); } 50% { -webkit-transform: scale(1.3, 1.3); } 100%{ -webkit-transform: scale(0, 0); } }
JavaScript
とりあえず簡単にclassを付け替えるトリガーを設定。
classを付け替えるタイミングで、それぞれのclassに設定したCSS3アニメーションが発火します。
$(function(){ $(window).on('load',function(){ $('#container').addClass('anime_in'); }); $('button').on('click',function(){ $('#container').toggleClass('anime_out').toggleClass('anime_in'); }); });
実際に動かすとこんな感じ
PHPでRSSを取得しJavaScriptで表示する
RSSを取得してサイト内に表示する時、普通のリスト表示くらいなら全部PHPでやってしまえば良いのですが、インタラクティブな表現とかをする時はJavaScriptで書き出したほうが利用しやすいです。
PHP
<?php $RSS = "http://front-end.hatenablog.jp/feed"; $XML = simplexml_load_file ($RSS); $JSON = json_encode($XML); ?>
RSSを取得して、json_encode
を使ってPHPの配列をJSON形式に変換します。
Javascript
var json = <?php echo($JSON); ?>; var data = json.entry; $.each(data,function(i){ document.write(data[i].title + '<br />'); document.write(data[i].link['@attributes'].href + '<br />'); document.write(data[i].updated + '<br /><br />'); });
PHPで生成したJSON形式のデータを変数に格納します。
JSONの構造に合わせて取り出したい要素を指定すればOKです。
全体
<?php $RSS = "http://front-end.hatenablog.jp/feed"; $XML = simplexml_load_file ($RSS); $JSON = json_encode($XML); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>Document</title> <script type="text/javascript" src="inc/js/library/jquery-1.10.2.min.js"></script> </head> <script type="text/javascript"> var json = <?php echo($JSON); ?>; var data = json.entry; $.each(data,function(i){ document.write(data[i].title + '<br />'); document.write(data[i].link['@attributes'].href + '<br />'); document.write(data[i].updated + '<br /><br />'); }); </script> <body> </body> </html>
jQueryなしで要素を取得してイベントを加える
普通に仕事してると、jQueryなしの環境ってほとんど無いし、そもそも効率がわるい。
しかも、自分のスタートがJavaScript == jQuery
みたいな環境だったので、実際にjQueryなしでJavaScriptを書く機会が殆どなかった。
その後一から勉強しなおしたので、一応知識としては習得したが、やはり実際の現場で、document.getElement~~~
とか書く機会はほとんどない。
練習にDOMエレメントの取得とイベントの設定を書いてみた。
関数
function AddEventAll(el,event,func){ //要素を取得 var $el = document.querySelectorAll(el); //要素の数を取得 var len = $el.length; //各要素にイベントを設定 for (var i = 0; i < len; i++){ $el[i].addEventListener(event, func); }; }
実行
//DOMの構築が終わってから実行 window.onload = function(){ AddEventAll('.hoge', 'click', hoge); } //イベントが発火すると実行される関数 function hoge(e){ e.preventDefault(); console.log('click!'); }
'セレクター名','イベント名',関数
を入れて実行します。
ここでは関数は別に切り出しています。
jQueryの感覚で書くと???になる箇所
- 要素を取得してもそのままイベントを加えるとエラー
- DOM構築が完了してから関数を実行しないと要素が取得できない
jQueryって本当に便利ですね…
Sassのビルドにバッチファイルを利用する
Sassをビルドする時に、コマンドラインのSass --watch
で監視してますが、最初にいちいちコマンドを打つのが面倒なので、バッチファイルで実行します。
Windowsの場合は簡単だったのですが、MACではまった事があったので詳細をメモ。
Windowsの場合
build.bat
cd /d %~dp0 sass --watch scss:css --sourcemap --style compressed --no-cache
Windowsの場合は簡単で、ファイル名.bat
のファイルを作ってそこにコマンドを書いてやるだけ。
このファイルを該当の場所に置いて実行すればOKです。
MACの場合
build.command
#!/bin/bash MY_DIRNAME=$(dirname $0) cd $MY_DIRNAME sass --watch scss:css --style compressed --no-cache --sourcemap
MACの場合は多少面倒な設定が必要となります。
ファイル名.command
のファイルを作って、コマンドを書いてやるところまでは同じです。
ただ、このまま実行するとファイルのアクセス権限がない為エラーが出てしまいます。
ターミナルからファイルの実行権限を変更してやる必要があります。
ファイルのアクセス権限の変更
例 ls -l build.command -rw-r--r--@ 1 user user 66 3 22 :00 build.command
-rw-r--r--@
の部分が
-rwxr--r--@
になるようにコマンドを実行してやります。
$ chmod u+x build.command
簡単に言うとこのファイルに実行可能な権限を与えてやるということです。
詳細が知りたい方は下記参照。
・Linuxのアクセス権限について
Linuxコマンド逆引き大全 - 【 アクセス権限とは 】:ITpro
これでファイルが実行できるようになります。 後はWindows同様該当の場所に置いて実行するだけ。
この方法は下記のサイトを参考にさせて頂きました。
そろそろ始めてみる macでバッチファイル実行
XAMPP for Mac の VirtualHost設定で403エラー
Apache2.4以降でバーチャルホストを設定するときにハマりまくったのでメモ。
解決方法は下記を参考に
<VirtualHost *:80> DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/" ServerName localhost ErrorLog "logs/error_log" CustomLog "logs/access_log" common <Directory "/Applications/XAMPP/xamppfiles/htdocs/" > AddDefaultCharset utf-8 AllowOverride All Options +Includes +FollowSymLinks Require all granted </Directory> </VirtualHost>
http://www.loftways.co.jp/?author=1
詳細な仕組みはよくわかりません…
サーバーの勉強もしないとなあ。