web制作 | 夜間飛行 備忘録

web制作講座で教わったあれこれを書き留めていきます

36日目

本日は…

jQueryの基礎とセレクタの種類

JavaScriptで動く車

 

 

jQuery=$はインスタンス

 ・jQueryは1.8.3までと1.9.1以降で使えるメソッドに差異がある

  →ライブラリを使う上では注意が必要

 ・スマホは外部からの読み込みで動かすのがいい(いちいちjsファイルをダウンロードしていられない)

 ※●CDN=Content Delivery Network

 ※<script src=""></script>で読み込む

 

 ・書き方は $(function(){ 中に色々 }); 

  →更に中に$('セレクタ').オブジェクト('引数1','引数2');といった具合

 

 ・CSSを書き換える目的:見ている人のタイミングで書き換えることにある(UX的な)

 

 ■セレクタ

 <CSS2.1のセレクタ

  ・子セレクタ > ※特定要素の直下にある指定要素だけを選ぶ

   ex)li > span とるすと、liの中にspanとしてあっても、それが更にdivなどに入れ子になっていると選択されない

 

  ・隣接セレクタ + ※特定の要素の隣(次)にある要素を選ぶ

   ex)li.secod li.thridと並んでいた時、secondを指定すると、次のthirdから選択される

  ・first-child ※並んでいる要素の一番最初だけ選択

   ex)ulが複数ある場合は、そのすべてのliの一番目を選択できる

 

 <CSS3のセレクタ

  擬似クラスが増えている

 →続きは予習

 

JavaScriptで車を走らせる

f:id:knkasay:20150410211436p:plain

 コレを走らせる。

 基本的には

 1.HTMLを書く

 2.cssをあてる

 3.JavaScriptをあてる

 の順番に作っていく

 

  <以下わかりにくい文字による解説>

 HTMLは、棒人間をスタートさせるためのボタン領域、棒人間の表示領域で構成

 cssでは動き回るために棒人間画像のサイズを指定し、position:absolute;で座標を指定。更にボタンに対して動きを呼び出すための関数をイベント指定

 最後にJavaScriptで、棒人間の領域(x座標など)を取得し、ボタンがクリックされたら座標に+5pxずつし、右へ5pxずつ移動する指定をする。これを500になるまで、10ミリ秒間隔で繰り返す、という指示を出す。500になったら座標は0に戻る。

 同時に、ボタンに書くvalueをスタートとストップを入れ替えつつ、スタートを押されると、animatingがtrueかfalseか判断する関数のうち、初期値がfalseなのでstopを出す、という方を通る。かつ、動き自体はスタートしたいので、先の関数(動かす関数)を実行する。そして最後にanimatingが!で逆の値になるので、次はtrueとなり、表示がstartになり、関数の動き自体は止まる(clearTimeout)。

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>アニメーション</title>
<style>
/*棒人間の座標と箱の大きさ
を決めてやる*/
#car {
position: absolute;
top: 150px;
left:20px;
width: 150px;//オブジェクトの幅高さ
height:100px;
z-index:999;
}
#oval{
position: absolute;
top: 540px;
left: 10px;
background: #eee;
border: 1px solid black;
width: 148px;
height: 20px;
border-radius:50%;
z-index:998;
}
#box {
position: absolute;
top: 550px;
left: 10px;
background: #000;
width: 150px;
height: 200px;
}
/*車の座標を決めてやる*/
</style>
<script>
var INTERVAL =10;//アニメーションの間隔
var y=0;//y座標
var animating=false;//アニメーション実行中かどうか
var timer;//タイマーのID

function move(){
aCar = document.getElementById('car');//aCarにdiv=carを入れている
y =y +5;//xの一回目は0+5で5になる
aCar.style.top =y + 'px';//aCarの縦方向の座標(styleのleft値)をいじらせてもらっている
if (y > 550){
y=0;//500までいったら0に戻してあげている
}
timer=setTimeout('move()',INTERVAL);//10ミリ秒間隔で関数を動かす、という(move)が終わったら、move=自分自身が動くということ→再帰
}//

function startStop(){
if(animating){//animating=falseなのであるif(animating ==true)の意味なので今回はelseにいく
clearTimeout(timer);//setTimeoutがここでとまる
document.getElementById('sBtn').value='スタート';
}else{
document.getElementById('sBtn').value='ストップ';
move();
}
animating=!animating;//falseだったanimatingが!で、trueになって終わる
}

</script>
</head>
<body>
<h1>DOMによるアニメーション</h1>
<form>
<p>
<input type="button" id="sBtn" value="スタート" onclick="startStop();"><!--id と スタートストップ関数が埋まってる -->
</p>
</form>
<!--大事なところ!!-->
<div id="car">
<img src="bou.png">
</div>
<!--大事なところここまで!-->
<div id="oval">
</div>
<div id="box">
</div>
</body>
</html>