投稿日:
夜、虫が鳴き出しました。夏ですね。
というわけで、タイトルにある通りd3.jsを使って何個か書いてみました。
今更感 && 大したものじゃないけど一応載せておきます。
d3.jsって何?って人はググってみてください。
へのへのもへじ
- へのへのもへじ – jsdo.it – Share JavaScript, HTML5 and CSS
- しの文字を
d3.svg.line()
を使って表現 - だけど、しが微妙
クリックしたら円がふる
- クリックしたら円がふる – jsdo.it – Share JavaScript, HTML5 and CSS
- こちらを参考(パクリ)しますた http://bl.ocks.org/mbostock/1062544
- 画面をクリックすると円がふります(スマホもOK)
マウスダウンで円を集める
- マウスダウンで円を集める – jsdo.it – Share JavaScript, HTML5 and CSS
- マウスダウン(スマホだったらタッチ)で円が集います
like a seven nation army
- like a seven nation army – jsdo.it – Share JavaScript, HTML5 and CSS
- The White Stripesが好きなので、The White Stripes – ‘Seven Nation Army’を真似てみた
- 簡単に真似ただけなので、ざっくりだよ
一応、tips (自分で便利だなーと思った所)
クリックとタッチイベントを分ける時
svg.append("rect") .attr("width", width) .attr("height", height) // こんな感じで ontouchstart が存在するか判定 .on("ontouchstart" in document ? "touchstart" : "click", draw);
色を混ぜたい (これ、個人的にかなり感動した)
// hsl版の d3.interpolateHsl() 等、他にもあるよ var interpolateRgb = d3.interpolateRgb("#ff0000", "#0000ff"); // 0.5は半分に混ぜるイメージ // 0.5以下は、interpolateRgb()の第1引数の色に寄っていくし、逆は第2引数の色に寄っていく(気がする) var rgb = d3.rgb(interpolateRgb(0.5)); console.log(rgb.r, rgb.g, rgb.b); // => 128 0 128 すなわち、紫(#800080)
イベント dispatch (これも、めっちゃ便利)
// hogeイベント登録 var dispatch = d3.dispatch("hoge"); // イベント監視を行ってから、イベントを発行する。これ大事。 // イベント監視 dispatch.on("hoge", function(args) { console.log(args); // => Hello }); // イベント発行(もちのろん引数も渡せる) dispatch.hoge("Hello");
polygonを描画したい (pointsの生成)
// なんか、ひし形っぽい形になる座標 var poly = [ {'x':231.5,'y':230}, {'x':232.5,'y':228}, {'x':233.5,'y':230}, {'x':232.5,'y':232} ]; // 描画 (抜き出しただけなので動かないかも) svg.selectAll('svg') .data(poly) .enter() .append('polygon') // mapを使う! .attr('points', function(d) { return d.map(function(_d) { return [_d.x, _d.y].join(','); }).join(' '); });
まとめ
何か作りたいなぁと思ったら、Galleryを見てインスピレーションをもらい、分からんなぁと思ったらD3.js – 日本語ドキュメントを見るといいと思います。
他にもd3.jsでググれば色々出てくると思います。
参考にさせて頂きました
- javascript – Proper format for drawing polygon data in D3 – Stack Overflow
- D3.js の d3.svg.line() を試してみた
- D3.js で自作クラスにイベント発行機能を追加する