2014年4月29日火曜日

[AngularJS]ng-initを使用して初期値の設定

ng-initディレクティブを使用して、初期値の設定が出来る。

コード

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>ng-init</title>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
</head>
<body ng-app>
<div ng-init="hello = 'Hello'" >
  {{hello}} World!!<br/>

  <label>入力欄
    <input type="text" ng-model="hello">
  </label>
</div>
</body>
</html>

実行結果

2014年4月2日水曜日

[html5]canvas上に画像を配置

context#drawImageを使用してcanvas上に画像を配置することができる。

以下のように3種類のdrawImageを用途によって使い分ける。
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>canvasに画像を配置</title>
  <style>
    #mycanvas {
      outline: blue 1px solid;
    }
  </style>
</head>
<body>
<!-- canvas上に配置する予定の画像を非表示で用意する -->
<div style="display: none">
  <img src="hoge.png" alt="example" id="myimage" width="592" height="59"/>
</div>
<canvas id="mycanvas" width="800" height="350">
</canvas>
<script>
  !function () {
    var canvas = document.getElementById('mycanvas'),
        ctx;

    if (!canvas.getContext) {
      return;
    }

    ctx = canvas.getContext('2d');
    window.addEventListener('load', function() {
      var image = document.getElementById('myimage');
      // 左上のポジション指定
      ctx.drawImage(image, 10, 10);
      // ポジションと幅、高さ指定
      ctx.drawImage(image,
          10, 90,   // 左上のポジション
          102, 49); // 幅と高さ
      
      // 元画像の描画範囲(切り取り範囲)と幅と高さを指定
      ctx.drawImage(image,
          60, 30,   // 切り取り開始位置(左上の開始位置)
          25, 40,   // 切り取る幅と高さ
          10, 180,  // 画像を配置する左上のポジション
          25, 40);  // 画像の幅と高さ
    });
  }();
</script>
</body>
</html>

2014年3月21日金曜日

[html5]datalistタグ

datalistタグを使用すると、関連付けられたinputタグに入力候補をリスト表示することが出来る。
関連付けは、inputタグのlist属性とdatalistタグのid属性で行う。

テキストフィールドで使用した例

<input type="text" name="n" list="J1"/>
<datalist id="J1">
  <option value="ベガルタ仙台">
  <option value="鹿島アントラーズ">
  <option value="柏レイソル">
  <option value="浦和レッズ">
  <option value="大宮アルディージャ">
  <option value="FC東京">
  <option value="横浜Fマリノス">
  <option value="川崎フロンターレ">
  <option value="アルビレックス新潟">
  <option value="ヴァンフォーレ甲府">
  <option value="清水エスパルス">
  <option value="名古屋グランパス">
  <option value="セレッソ大阪">
  <option value="ガンバ大阪">
  <option value="ヴィッセル神戸">
  <option value="徳島ヴォルティス">
  <option value="サンフレッチェ広島">
  <option value="サガン鳥栖">
</datalist>

Chromeでの表示例


色選択で使用した例

<input type="color" name="color" list="c">
<datalist id="c">
  <option value="#000000">
  <option value="#ff0000">
  <option value="#00ff00">
  <option value="#0000ff">
  <option value="#ffffff">
</datalist>

Chromeでの表示例


2014年2月15日土曜日

html5の必須入力欄のスタイル定義

cssを使用してhtml5で追加された必須入力欄(required属性が設定されいる項目)のスタイルを定義する方法

required擬似クラスに対してスタイル定義をすることで、required属性が設定された入力欄のスタイルを変更出来る。
    input:required {
      background-color: lightcoral;
    }

[html5]日付・時間系の入力欄

日付

input type="date"で日付入力欄になる

<input type="date" >

出力例


時間

input type="time"で時間入力欄になる

<input type="time" >

出力例


年月

input type="month"で時間入力欄になる

<input type="month" >

出力例

2014年2月9日日曜日

[CoffeeScript]オブジェクトのプロパティを一覧表示

オブジェクトのプロパティの値をCoffeeScriptで一覧表示する方法。

CoffeeScriptでは、「for of」を使ってプロパティ数分ループを行って処理をする。
JavaScriptの場合は、「for in」なので微妙に違いがあって間違えやすい気がする。

コード例

for key, value of 変数名で、オブジェクトの全プロパティに対して処理が出来る。
hoge =
  k1: 'v1'
  k2: 'v2'

for key, value of hoge
  console.log key, ' = ', value

class Hoge
  prop1: 'prop1'
  prop2: 'prop2'

for key, value of new Hoge()
  console.log key, ' = ', value

実行結果

オブジェクト、インスタンスともにプロパティ名とプロパティの値が出力される。
k1  =  v1
k2  =  v2
prop1  =  prop1
prop2  =  prop2

2014年1月26日日曜日

AngularJSでHello World

http://docs.angularjs.org/cookbook/helloworldを見つつAngularJSでHello Worldをやってみた。
Controllerのロジックは、CoffeScriptにしてみたぐらいで、後は上記のサイトの内容通り。

html

ポイントは、htmlタグでng-appディレクティブを記述しているところ。
これで、htmlタグはいかがAngularJSアプリとなる。
<!DOCTYPE html>
<html ng-app="">
<head>
  <meta charset="utf-8" />
  <title>AngularJSでHello World!!</title>
</head>
<body>
<div ng-controller="HelloController">
Your name: <input type="text" ng-model="name"/>
<hr />
Hello {{name || "World"}}!
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script>
<script src="hello.js"></script>
</body>
</html>

JavaScript

htmlのng-controllerディレクティブで指定したControllerに対応するfunctionを定義する。

CoffeeScriptだと関数がグローバルスコープとならないので、関数名の頭に@をつけたりwindowオブジェクトに作成してあげる必要がある。
ちょっとイケてない感じなのが残念。

このJavaScriptでは、コントローラのスコープ($scope)内にname属性を定義して'World'を代入しています。
@HelloController = ($scope) ->
  $scope.name = 'World'

実行結果

JavaScriptでname属性に設定した値が、「Hello {{name || 'World' }}!」部に出力される。
Your name:

Hello {{name || "World"}}!