Sorry, This page doesn't support your browser
現在使用中のブラウザでは見れません
@shogo82148
2.0.0-alpha-1
HTML+CSSでお絵かきしてみた
自己紹介
@shogo82148
Pythonista時々Perler
競技プログラミングクラスタ(闇のC++er見習い)
pi=3.14159265358979323846264338327950288419716939937510
58209749445923078164062862089986280348253421170679
82148
shogo(自分の名前)+82148(円周率の第100桁目)
Recent Works
Excelでハレ晴レユカイ
(sm12046921)
Gnuplotでハレ晴レユカイ
(sm12002480)
Recent Works
【トラ技増刊MARY】MARYでBad Apple!! PV
(sm14132423)
HTML+CSSでお絵かきしてみた
本日の発表
CSSってなに?
Cascading Style Sheets
文章の「見た目」を定義するための仕様
・・・でこれ使うと何が嬉しいの?
みんな大好きWikipedia
印刷してみると・・・
Wikipediaを印刷してみた
あれ?メニューがなくなっちゃったよ?
ウィキペディアにようこそ!
ウィキペディアはオープンコンテントの
百科事典です。方針に賛同していただけ
るなら、誰でも記事を編集したり新しく
作成したりできます。ガイドブックを読
んでから、サンドボックスで練習してみ
ましょう。質問は利用案内でどうぞ。
現在、ウィキペディア日本語版には
約 782,008 本の記事があります。
これこそCSSの力!
HTML文章
表示用CSS
印刷用CSS
同じ文章でもCSSによって「見た目」を変えられる
→
→
CSSとは
同じ文章でも用途に応じて見やすい表示形式にする
文章から「見え方」を分離する
↓
CSSも進化を続けています
そんな中登場したのが・・・
CSS3
CSS3って何がすごいの?
絵が描けます
CSS3になって変わったこと
CSS3より前
文字のフォント・大きさ・色を変えられる程度
CSS3の登場
回転や変形ができるようになった
枠の種類が増えた
グラデーションが使えるようになった
etc
今まで画像を使って実現していたことの多くが
CSS3のみを使って実現可能に!
作例
HTML+CSSでドロイドくん
http://aokcub.net/css3/droid/droid.html
http://aokcub.net/css3/droid/p/p.html
HTML+CSSでドロヒカリ
http://aokcub.net/css3/dorohikari/dorohikari.html
HTML+CSSでソウルジェム
http://aokcub.net/css3/gem/gem.html
負けてはいられない!
自分もやってみよう!
基本の四角
まずは基本的な図形から
幅200px、高さ100px、20pxで角を丸めた
赤い長方形をCSSで描いてみる
<div class="rect"></div>
.rect{
position:absolute;
top:0px; left:0px;
width:200px; height:100px;
border-radius:20px;
background-color:red;
}
これを組み合わせれば
ドロイドくんくらいなら
簡単にできるはず!
…ギブアップしました
・ドロイドくんのプロポーションを完全に
把握していなかった
・腕とかどこに配置すればいいの?
・座標計算とか面倒
なんとかならないの?
なんとかしましょう!
プログラマは楽をするためならどんな苦労も厭わない
楽にCSSでお絵かきできるなら何でもしましょう!
簡単でいいからGUIツールを作っちゃえ!
…無理でした
そんなすごいGUIツール僕には作れません!
何は他にいい方法は・・・
他に何かいい方法は・・・
誰かが作ったのを流用しよう
すでにあるお絵かきソフトでお絵かき
→ファイルに保存
→プログラムでHTML+CSSに変換
これだ!
INKSCAPE
を使おう!
Inkscapeとは
ベクター形式のお絵かきソフト
Illustratorみたいなもの
最大の特徴
SVGの編集に特化した
ソフトである
SVGとは
Scalable Vector Graphics
「拡大縮小が自由にできる画像形式」
XML形式
→プログラムの読み書きが簡単!
SVGで基本の四角
先程CSSで描いた
幅200px、高さ100px、20pxで角を丸めた
赤い長方形をSVGで描いてみる
<rect
x="0" y="0"
width="200" height="100"
ry="20"
style="fill:red" />
SVGとCSSを比べてみる
<rect
x="0"
y="0"
width="200"
height="100"
ry="20"
style="fill:red" />
<div class="rect"></div>
.rect{
position:absolute;
top:0px;
left:0px;
width:200px;
height:100px;
border-radius:20px;
background-color:red;
}
HTML+CSS
SVG
一対一対応している!
<rect
x="0"
y="0"
width="200"
height="100"
ry="20"
style="fill:red" />
<div class="rect"></div>
.rect{
position:absolute;
top:0px;
left:0px;
width:200px;
height:100px;
border-radius:20px;
background-color:red;
}
HTML+CSS
SVG
簡単な置換でできそう!
やってみた
https://github.com/shogo82148/svg2css
にて公開中!
(SourceForge.netにあるsvg2cssは偽物なので注意)
使い方
Downloadsをクリックして
Download as zipをクリック
使い方
svg2css.py, svg2py.inx, svg.pyを
%Inkscape%/share/extensionsにコピー
使い方
Inkscapeの保存画面にHTML+CSSってのが追加されます
やってみてわかったこと
例で示した置換だけじゃ
四角形の位置と大きさと色
しか指定できない!
不十分!
例:ドロイドくん
・・・このプログラムは
ドロイドくんも
描けないのか!
これじゃあ寂しいので
機能追加しました
アフィン変換
回転
傾斜
拡大・縮小
グラデーション
透過
クリップ
→
ぼかし
ドぴ
ロん
イぼ
ドけ
く
ん
CSSドロイドくん完成!
Inkscapeを使えば
もっと複雑なものも
描けます!
CSS QB
僕と契約して
CSS3使いになってよ!
Androidでも表示可能
拡大してもキレイ
ICS未満のAndroidでベクター形式の画像を
追加アプリなしで表示できる唯一の手段
さらに!
このスライドもHTML+CSSで
描かれています!
JavaScriptは一切使わないPure CSS!
画像はたくさん使ったけど
描いてみてわかったこと
誤差デカイ!
面倒くさい!
誤差でかい
線の太さが大きく
変わってる
元は
滑らかなのに・・・
CSS QB
SVG QB
面倒くさい
svg2cssでは全部角丸四角形でお絵かき
約200個の角丸四角形で構成されています
すごく面倒・・・
まとめ
SVGからHTML+CSSに変換するプログラムを作った
結構再現率は高い
でも、多少誤差がでる
CSS3はお絵かきには適さない
お絵かきするならSVG使ったほうがいいよ
One More Thing
絵が描けた
スライドの
切り替えができた
もし、
スライドの切り替えを
自動的に
高速で
行ったらどうなる?
デモ
デモ
・・・したかったんだけど
ノートPCではスペック不足
キャプチャ動画をお楽しみください
メイキング
ペンギンを描く
(これだけで67個の角丸四角)
メイキング
100枚の絵を10fpsで切り替え
メイキング
全部で2977個の角丸四角
変換後はdiv要素×12697
まとめ
アニメーションできたよ!
1人月程度だとこの程度が限界
自分頑張った
手打ちじゃここまで出来なかった
あれ?自分のPCのスペック・・・
http://sora-blue.net/~shogo82148/soft/internet/svg2css/ping.html
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