スマフォの画面操作 (touch events)で、指で奥行きを操作

touchstart, touchmove, perspective


» DEMOページ

たぶんスマフォのみ対応:2011-11-29現在

以前投稿した「ブラウザで3D 奥行きをつける2 応用」を改造して、タッチイベント(画面を触って)で3Dに画像に奥行きを付けてます

メインは、addEventListenerで呼び出されるイベントたちです。
// touch eventsの取得、それぞれのイベントで関数cbFuncを呼ぶ
var el = document.getElementById('touchArea');
el.addEventListener('touchstart', cbFunc, false);
el.addEventListener('touchend', cbFunc, false);
el.addEventListener('touchmove', cbFunc, false);
el.addEventListener('touchcancel', cbFunc, false);
touchstart = タッチしたとき
touchend = タッチを終えたとき
touchmove = タッチしたまま動かした時
touchcancel = システム的にキャンセルがかかった時、らしいです(未確認)

取得された情報が touches.item(0) のように配列になって、指の本数もちゃんと対応してくれます。
いろいろできそうで楽しそう。

PASONA TECHでの羽田野太巳さんのセミナー素材を参考にさせて頂いてます
http://www.pasonatech.co.jp/ca/html5/?sscd=ohf1

11月 29th, 2011


Tags : , , , , ,

Category : HTML5, スマートフォン    |     0 Comments »

iPhone傾きセンサーでボールを転がす。

HTML5 deviceorientation


» DEMOページ

たぶんスマフォのみ対応:2011-11-21現在

核のコード
window.addEventListener("deviceorientation",
function (evt){
var alpha = evt.alpha; // 方角
var beta = evt.beta; // 前後の傾き
var gamma = evt.gamma; // 左右の傾き
var absolute = evt.absolute; // 3つの値が取得できたかのboolean
});

11月 21st, 2011


Tags :

Category : HTML5, スマートフォン    |     0 Comments »

AppleのHP iPhone4s風のアニメーション的なCSS3

CSS3 animation、スマフォ対応


こちらのようなCSS3アニメーションです(あくまでイメージ)
http://www.apple.com/jp/iphone/

» DEMOページ

たぶんIE以外対応:2011-11-11現在

fadeIn-Outのアニメーションが手こずりました。
消え始める&消え終わるのと動きはずらさないといけなくて頭がこんがらがります。

それからホントは画像を完全に読み込んでからJavascriptでCSS3の動きの外部ファイルを読み込みたかったのですが、今回は断念。fadeIn-outで相当消耗しました。

/*順番に:呼び出す関数名 アニメーションの時間 イージング スタートまでの時間 繰り返すか アニメーションの進行方向*/
#imgHide { -webkit-animation:appleRote 10s ease 1s infinite normal;}

/*メイン画像の動きの例*/
@-webkit-keyframes appleRote{
from{top: -770px; left: 60px; -webkit-transform:rotate(0deg) }
40% {opacity:1 }
50% {top: -770px; left: 60px; -webkit-transform:rotate(0deg) }
60% {opacity:0 }
to {top:0px }
}

11月 11th, 2011


Tags :

Category : CSS3, スマートフォン    |     0 Comments »

ページを読み込んだらシンプルなアニメーション表示

transition + transform、スマフォ対応


たぶんIE以外対応:2011-11-09現在

» DEMOページ
ページの込み込み完了後に花をtransform rotateで回転、
イメージとしてはAppleのサイトのようにページ読み込み後のちょっとしたアニメーション用のサンプルコードです。

transition のスタイルに書き込んだアニメーションは、動作させるフックが必要なようで、それはjQueryでページ読み込み後にcss3を書くことで作動させてます。

※核のコード
#contents li{
-webkit-transition:-webkit-transform 2s ease-out 0.0s;
-moz-transition:-moz-transform 2s ease-out 0.0s;
}

11月 9th, 2011


Tags :

Category : CSS3, jQuery, スマートフォン    |     0 Comments »

ブラウザで3D 奥行きをつける2 応用

1. transfrom3D スマフォ対応

Safari、Chromeのみ対応:2011-11-04現在

» DEMOページ

 

2. transfrom3D + perspective-origin(視点の移動)

Safari、Chromeのみ対応:2011-11-04現在

» DEMO2ページ
すいません、機能としてはスマフォ対応なはずですが、シークバーがつかめないため確認できずです。

 

《 1. transfrom3Dの主要コード 》

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!--jQueryを使用-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
 
<style>
/*perspective 奥行きの設定*/
#contents{ 
	-webkit-perspective: 200;
	width:300px;
	height:300px;
	position:relative;
	left:330px;
}
#contents img{ 
	width:300px;
	height:300px;
	border:solid 1px #000;
	opacity:0.5;
	/*画像を同じ位置に重ねる*/
	position: absolute;
	top: 0px;
	left: 0px;
}
 
/*画像それぞれの奥行き設定*/
#img00{ 
	-webkit-transform:
		translate3d(-150px, 0px, 0px)
		rotate3d(0, 1, 0, 90deg)
		translate3d(150px, 0px, 0px);
}
#img01{ 
	-webkit-transform:
		translate3d(150px, 0px, 0px)
		rotate3d(0, 1, 0, -90deg)
		translate3d(-150px, 0px, 0px);
}
#img02{ 
	-webkit-transform:
		translate3d(0px, -150px, 0px)
		rotate3d(1, 0, 0, -90deg)
		translate3d(0px, 150px, 0px);
}
#img03{ 
	-webkit-transform:
		translate3d(0px, 150px, 0px)
		rotate3d(1, 0, 0, 90deg)
		translate3d(0px, -150px, 0px);
}
#img04{ 
	-webkit-transform: 
		translate3d(0px ,0px ,-300px) 
}
</style>
 
<script>
// ページの読み込みが終了したら実行
window.onload = function(){
 
	// buttonのidを読み込んで関数に代入
	var myPush = document.getElementById("myPush");
 
	// buttonがclickされたら実行
	myPush.addEventListener('click',function(){
		for (i = 0; i < 5; i++){
			$(function(){
				// インデックスeq()でimgに順番にidを付加(attr)
				$("#contents img:eq("+i+")").attr('id','img0'+i);
			})
		}
	},false) //trueだとイベント発生の順番を越えて優先で実行
}
</script>
 
        <div id="contents">
            <ul>
                <li><img src="images/chrome.png" width="100" height="100" alt=""></li>
                <li><img src="images/firefox.png" width="100" height="100" alt=""></li>
                <li><img src="images/ie.png" width="100" height="100" alt=""></li>
                <li><img src="images/opera.png" width="100" height="100" alt="" ></li>
                <li><img src="images/safari.png" width="100" height="100" alt="" ></li>
            </ul>
        </div>
            <p>&nbsp;<br><br><br></p>
            <button id="myPush">push 3D</button>

PASONA TECHでの羽田野太巳さんのセミナー素材を参考にさせて頂いてます
http://www.pasonatech.co.jp/ca/html5/?sscd=ohf1

 

 

《 2. transfrom3D + perspective-origin(視点の移動) 》の主要コード
css部分は上記の1と一緒です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script>
// ページの読み込みが終了したら実行
window.onload = function(){
		for (i = 0; i < 5; i++){
			$(function(){
				// インデックスeq()でimgに順番にidを付加(attr)
				$("#contents img:eq("+i+")").attr('id','img0'+i);
			})
		}
}
 
//奥行き input range を動かすたびに呼ばれる関数
function myPers(value){
	document.getElementById('contents').style.webkitPerspective = value;
};
 
//奥行きの視点 input range を動かすたびに呼ばれる関数。#contents に書き出すCSS3はXとYまとめて
function myPersOrigin(){
	var sliderX = document.getElementById("sliderX").value;
	var sliderY = document.getElementById("sliderY").value;
	document.getElementById('contents').style.webkitPerspectiveOrigin = sliderX + "% " + sliderY + "%";
};
</script>
 
        <div id="contents">
            <ul>
                <li><img src="images/chrome.png" width="100" height="100" alt=""></li>
                <li><img src="images/firefox.png" width="100" height="100" alt=""></li>
                <li><img src="images/ie.png" width="100" height="100" alt=""></li>
                <li><img src="images/opera.png" width="100" height="100" alt="" ></li>
                <li><img src="images/safari.png" width="100" height="100" alt="" ></li>
            </ul>
        </div>
            <p>&nbsp;<br><br><br></p>
 
            <!-- onChange() rangeを動かすたびに関数実行。this.value で動かしてるrangeのvalue値-->
            <div style="text-align:left; margin-left:350px">
                <input type="range" id="slider" value="100" min="0" max="200" step="1" onChange="myPers(this.value)"> 奥行き perspective<br>
                <input type="range" id="sliderX" value="50" min="-100" max="200" step="1" onChange="myPersOrigin()"> 横 軸 perspective-origin X<br>
                <input type="range" id="sliderY" value="50" min="-100" max="200" step="1" onChange="myPersOrigin()"> 縦 軸 perspective-origin Y<br>
            </div>
11月 4th, 2011


Tags :

Category : CSS3, HTML5, jQuery    |     0 Comments »

ブラウザで3D 奥行きをつける

transfrom3D スマフォ対応

Safari、Chromeのみ対応:2011-10-27現在

» DEMOページ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<style>
/*perspective 奥行きの設定*/
#contents{
	-webkit-perspective: 50;
}
 
/*rotate3d 3D回転の設定*/
#demoImg.rotated3d{ 
	-webkit-transform: rotate3d(1, 0, 0, 45deg);
 
	/*わかりやすさのため拡大*/
	width:100px; height:100px;
}
 
</style>
 
<script>
/*比較できるようスイッチの設定、clickでスタイルのclassがイメージのタグに追加*/
window.onload = function(){
 
	var demoImg = document.getElementById("demoImg");
	var myPush = document.getElementById("myPush");
 
	myPush.addEventListener('click',function(){
		demoImg.className = "rotated3d";
	},false)
 
}
</script>
 
        <div id="contents">
            <p><img src="images/firefox.png" width="51" height="52" alt="firefox" id="demoImg"></p>
            <p>&nbsp;</p>
            <button id="myPush">push 3D</button>
        </div>
10月 27th, 2011


Tags :

Category : CSS3    |     0 Comments »

位置情報の取得をして、Google Map で表示

geolocation & Google Map API
スマフォ対応


» DEMO ページ

IEは9以上対応

地図取得まで何秒かかかります。
またブラウザからの位置情報の取得の許可が必要です

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!--スマートフォン用に必要-->
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 
<!--Map表示・位置情報取得 Google API、位置情報を取得しない場合は最後はfalseでOK-->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
 
<script type="text/javascript">
// watchPosion 現在位置を取得
window.onload = function(){
	navigator.geolocation.watchPosition(update);
}
 
// 位置が検出されたら経度、緯度、誤差と時間を表示
function update(position){
	var lat = position.coords.latitude;
	var lng = position.coords.longitude;
	var alt = position.coords.altitude;
	var acc = position.coords.accuracy;
	var alc = position.coords.altitudeAccuracy;
	var hed = position.coords.heading;
	var spd = position.coords.speed;
 
	var htmlTxt = "緯度 = "+lat+" , "+"経度 = "+lng+" , "+"高度 = "+alt+" , ";
		htmlTxt += "緯度経度の誤差 = "+acc+" , "+"高さの誤差 = "+alc+" , "+"方角 = "+hed+" , "+"速度 = "+spd;
		htmlTxt += "<br>"+(new Date());
 
	document.getElementById("pos").innerHTML = htmlTxt;
 
    var myLatlng = new google.maps.LatLng( lat , lng ); //google map 呼び出し
    var myCenter = myLatlng; //mapの中央を変えたい場合任意の値を入れる
    var myOptions = {
      zoom: 15,
      center: myCenter, 
      mapTypeId: google.maps.MapTypeId.ROADMAP // , は付けないIEでエラーになる
    };	
 
	// 描画
	var gmap = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	//マーカーの設定
	var marker = new google.maps.Marker({ 
	  position: myLatlng, 
	  map: gmap
	}); 
 
 
  }
 
</script>
 
<body>
<h1>現在の位置情報を表示</h1>
 
<div id="pos">...loading</div>
 
<div id="map_canvas" style="width:95%; height:500px ; border:solid 5px #ddd;"></div>
</body>

こちらの本を参考にさせいただいてます。

10月 24th, 2011


Tags :

Category : HTML5, スマートフォン    |     0 Comments »