<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jQuery Mobile &#187; JavaScript</title>
	<atom:link href="http://jqm.12px.com/87-95/wordpress/?cat=3&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://jqm.12px.com/87-95/wordpress</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Tue, 24 Jun 2014 06:21:59 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>均等な大きさのサムネイルの中にいろんな画角の画像をピッタリ表示させる</title>
		<link>http://jqm.12px.com/87-95/wordpress/?p=160</link>
		<comments>http://jqm.12px.com/87-95/wordpress/?p=160#comments</comments>
		<pubDate>Tue, 11 Mar 2014 15:19:29 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://12px.com/blog/?p=160</guid>
		<description><![CDATA[商品写真やプロフィール写真などの一覧ページで、DBから引っ張ってきた縦長横長どちらかわからない画像を全て同じ矩 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="https://dl.dropboxusercontent.com/u/3924504/server/12px.com/blog/140311/0.png" alt="" /></p>
<p>商品写真やプロフィール写真などの一覧ページで、DBから引っ張ってきた縦長横長どちらかわからない画像を全て同じ矩形内にピッタリ表示を揃えたい場合、案外面倒ですよね・・・</p>
<p>最近これが必要な案件が立て続けにあったので後々楽できるようにjQueryプラグインにしておきました。</p>
<hr />
<h2>異なる画角の画像を均等なサイズで表示させる方法</h2>
<p>バラバラのサイズの画像をとある矩形の横幅いっぱいに揃えて表示する場合、<code>max-width</code>で横幅と、あと<code>height: auto</code>を指定しておくのが一番手っ取り早いのですが、想定外の横長の画像とかが入って来ると下に余白ができてしまいます。</p>
<p><img src="https://dl.dropboxusercontent.com/u/3924504/server/12px.com/blog/140311/1.png" alt="" /></p>
<p>静的なページではある程度画像サイズを均一にしておくなどしていくらでも対応可能なのですが、動的なページ制作の場合では、バラバラの画角の画像が入ってくる事も想定されるので、思った通りの表示にならない事が多いです。</p>
<p>なのでCSSで綺麗に表示を整えようと思ったらimg要素の大きさを変える方法では無くて、親の要素に背景画像として指定してやる必要があります。</p>
<p><script src="https://gist.github.com/is8r/9485466.js"></script></p>
<p>これならどんな大きさの画像が入っても中心から縦横どちらかの最大幅で矩形内に一杯一杯に表示させてくれます。</p>
<p><img src="https://dl.dropboxusercontent.com/u/3924504/server/12px.com/blog/140311/2.png" alt="" /></p>
<hr />
<h2>CSS内に画像のパスを書きたくないのでJSでHTMLを書き換える</h2>
<p>前述の方法を使用するとcssの中に画像のパスを指定するか、もしくは<code>background-image</code>だけHTMLに直書きするかしなければならないので、通常リストで画像を並べる時と比べてマークアップが大きく異なってしまい、後から入るデザインの修正に対してあまり柔軟では無くなってしまいます。</p>
<p>cssに複数の画像のパスを入れるのは面倒そうなのでやるとしたらhtmlを書き換えてこんな感じになるかと思われます。</p>
<p><script src="https://gist.github.com/is8r/9485451.js"></script></p>
<p>でも、できればHTMLの文章構造はデザインに依存しない方が良い気がするのでいつも通りこうやって書いておきたいですよね・・・</p>
<p><script src="https://gist.github.com/is8r/9485457.js"></script></p>
<p>理想としてはマークアップは従来通り<code>li</code>タグなどに入った<code>img</code>タグのままの記載しておきたいのですが、このマークアップの状態で画像をフィットさせようと思ったら現状では<code>object-fit</code>くらしか方法が無いと思うのですが、それだとchromeくらいでしかまともに表示されないサイトになってしまいます。</p>
<p>ので、やはりここは一部jsで工夫して表示させる必要があります。</p>
<p>jsで<code>img</code>の画像のパスを<code>background-image</code>に書き直そうと思ったら<br />
入れ子になっているimg要素から画像のパスを取得して、liタグに直接cssを指定すれば良いだけです。</p>
<p><script src="https://gist.github.com/is8r/9485461.js"></script></p>
<p>これでcssファイルの中に画像のパスを書く事を回避できました。</p>
<hr />
<h2>jQueryプラグインにしておいた</h2>
<p>毎回おんなじjs書くのも面倒なのでjQueryプラグインに纏めておきました。<br />
jsでcssを書くのはあんまり好きでは無いのですが、この場合には<code>background-image</code>の部分は結局js上で書く事になるし1行も4行もそんなに変わらないかなと思ったので必要最低限のCSSだけはjsで指定しています。</p>
<p><a href="https://github.com/is8r/jquery-thumbfit">リポジトリ</a><br />
<a href="http://is8r.github.io/jquery-thumbfit/build/">デモ</a></p>
<p><script src="https://gist.github.com/is8r/9485488.js"></script></p>
<p>こんな感じで呼び出します。</p>
<p><script src="https://gist.github.com/is8r/9485496.js"></script></p>
<p>横幅と縦幅は親要素のサイズに合うようになっているので指定はいらないのですが、jsからも指定できるようになっています。</p>
<p>画像を背景で表示するように変更するので元のimg要素がいらなくなり、非表示にする必要があるのですが、このプラグインでは<code>display: none</code>にせずに<code>opasity: 0</code>にしています。<sup id="fnref-160:1"><a href="#fn-160:1" rel="footnote">1</a></sup></p>
<hr />
<p>あとサムネイルに使っている猫画像は<a href="http://placekitten.com/">placekitten.com</a>というURLで指定したサイズの画像を返してくれるWEBサービスを使用しています。</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn-160:1">
<p>ブラウザ上では他のimg要素とできる限り同様の扱いができた方が良いと思ったのでこうしています。ドラッグできない方が良かったらdisplay:noneに変更すれば良いかと思われます。&#160;<a href="#fnref-160:1" rev="footnote">&#8617;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jqm.12px.com/87-95/wordpress/?feed=rss2&#038;p=160</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScriptで画像から色を取り出す</title>
		<link>http://jqm.12px.com/87-95/wordpress/?p=118</link>
		<comments>http://jqm.12px.com/87-95/wordpress/?p=118#comments</comments>
		<pubDate>Tue, 04 Feb 2014 15:35:16 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://12px.com/blog/?p=118</guid>
		<description><![CDATA[前回の記事のドロネー三角形分割のスクリプトが気に入ったのでブログのヘッダに使ってみました。 単に画面上に置くだ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>前回の記事の<a href="/blog/2014/02/delaunay/">ドロネー三角形分割</a>のスクリプトが気に入ったのでブログのヘッダに使ってみました。</p>
<p>単に画面上に置くだけでも良かったのですが、記事に合う色合いになったら良いなーと思ったので、ページ毎に使っている画像から色を取得して描画するようにしてみました。</p>
<p>WordPressは簡単な設定でアイキャッチ画像を設定できるので、それを使用して画像を投稿しています。テンプレートには<code>wp_get_attachment_image_src</code>と<code>get_post_thumbnail_id</code>を使用してパスだけを読み込むように設定しておいて、それをjsに渡し、js内で画像をロードし、非表示のまま画像から色だけを取り出して、それをcanvasに描画する時に使っています。</p>
<hr />
<p>で、画像から色をとるのがASみたいに簡単にできなくて、ちょっと回りくどい方法になってしまったのでメモ。</p>
<p>まずは見えないcanvasを作成して、</p>
<p><script src="https://gist.github.com/is8r/8803635.js"></script></p>
<p>画像のロード後に見えないcanvasに一旦貼付けてそこからgetImageDataを使用して色を取り出し、配列に格納します。</p>
<p><script src="https://gist.github.com/is8r/8803754.js"></script></p>
<p>で、毎フレームの処理で、先ほどの配列から色を取り出します。</p>
<p><script src="https://gist.github.com/is8r/8803763.js"></script></p>
<p>毎フレームの処理で画像から色を取得してしまうと激重になってしまうので注意が必要です。</p>
<hr />
<p>色が華やかになってきた事だしそろそろ当初の予定通り撮ってきた写真とかをアップする気楽なブログとしても活用していこう・・・</p>
]]></content:encoded>
			<wfw:commentRss>http://jqm.12px.com/87-95/wordpress/?feed=rss2&#038;p=118</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ドロネー三角形分割</title>
		<link>http://jqm.12px.com/87-95/wordpress/?p=84</link>
		<comments>http://jqm.12px.com/87-95/wordpress/?p=84#comments</comments>
		<pubDate>Sun, 02 Feb 2014 11:36:15 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://12px.com/blog/?p=84</guid>
		<description><![CDATA[ドロネー図。2年前くらいにStrataの一連のシリーズを見てからずっとアルゴリズムが気になってたので、ちょっと [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="md-large"></div>
<div id="canvasArea"></div>
<p><script src="/blog/data/140201/assets/javascripts/sketch.js"></script></p>
<p><a href="http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%AD%E3%83%8D%E3%83%BC%E5%9B%B3">ドロネー図</a>。2年前くらいに<a href="http://www.quayola.com/strata4/">Strataの一連のシリーズ</a>を見てからずっとアルゴリズムが気になってたので、ちょっと時間ができた隙に調べてjavascriptで動かしてみた。これであってるかどうかわからないし、Strataはさらにここから3Dになるので全然違うんだけど、なんとなくこういう仕組みだったのかなぁと思えるくらいにはなれたので非常に勉強になった。</p>
<p>非表示にしているけど後ろに敷いている画像はこんな感じです。<sup id="fnref-84:1"><a href="#fn-84:1" rel="footnote">1</a></sup></p>
<div class="md-large"></div>
<p><img src="https://dl.dropboxusercontent.com/u/3924504/server/12px.com/blog/140201/2.png" alt="" /></p>
<p>jsで画像から色を取得する方法とかも知らなかったけどやってみたら案外なんとかなったので良かった。</p>
<hr />
<p>動かしてから、もしや・・・と思ってググったら、既にD3というライブラリで簡単に実現できる事を見つけてしまった。</p>
<p><a href="http://bl.ocks.org/mbostock/4341156">Delaunay Triangulation</a></p>
<p>これを使えばたったこれだけでできたみたい。<br />
<script src="https://gist.github.com/is8r/8755829.js"></script></p>
<hr />
<p>どうでも良いけどドロネー図もボロノイ図も何度覚えてもボロネーゼで上書きされて名称を忘れてしまう。ボロネーゼ。なんとかしたい。</p>
<p>一体どこに需要があるかわからないけど次のiPhoneアプリはカメラアプリにしよう。名前はボロネーゼカメラにしよう。</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn-84:1">
<p>全然本題と関係無いけどチェコにいった時に撮った写真です。<a href="http://czechpic.hommebrew.com/">iPhoneアプリ</a>にもしたお気に入り。&#160;<a href="#fnref-84:1" rev="footnote">&#8617;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jqm.12px.com/87-95/wordpress/?feed=rss2&#038;p=84</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
