<?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>No.1026 &#187; Advent Calendar</title>
	<atom:link href="http://no1026.com/archives/tag/advent-calendar/feed" rel="self" type="application/rss+xml" />
	<link>http://no1026.com</link>
	<description>CSSのこととかwebのこととか何となく書きたいことを書くところ</description>
	<lastBuildDate>Sun, 23 Mar 2014 15:02:00 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8.11</generator>
	<item>
		<title>displayについて本気出してW3Cの仕様書読んでみた</title>
		<link>http://no1026.com/archives/455</link>
		<comments>http://no1026.com/archives/455#comments</comments>
		<pubDate>Sat, 07 Dec 2013 15:00:21 +0000</pubDate>
		<dc:creator><![CDATA[1026]]></dc:creator>
				<category><![CDATA[技術的な話]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[display]]></category>

		<guid isPermaLink="false">http://no1026.com/?p=455</guid>
		<description><![CDATA[こんばんは。 CSS Property Advent Calendar 2013 8日目のエントリーです。 非常に地味な display のお話です。 なお、flexboxの話をし出すと、それだけで1エントリーくらいの分 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>こんばんは。<br />
<a href="http://www.adventar.org/calendars/57" target="_blank">CSS Property Advent Calendar 2013</a> 8日目のエントリーです。 </p>

<p>非常に地味な display のお話です。 <br />
なお、flexboxの話をし出すと、それだけで1エントリーくらいの分量になってしまうので、css2.1までの話をします。 <br />
flexbox関係は昨日担当の富田さんがまとめてくれてるので、そちらを参考にしましょう。<br />
<a href="http://tech.naver.jp/blog/?p=2479" target="_blank">flexboxの旧仕様、改定仕様、現行仕様の一覧 «  LINE Engineers&#8217; Blog</a></p>

<p>では、まずブロックとインラインを理解するためにボックスモデルから復習していきます。</p>

<h2>ボックスの種類</h2>

<p>w3cの仕様書では先に「ブロックレベル要素とブロックボックス」次に「インラインレベル要素とインラインボックス」といった感じで説明されていますが、ちょっと趣向を変えて、ブロックとインラインを対比しながら見てみます。</p>

<h3>ブロックレベル要素とインラインレベル要素</h3>

<p>ボックスのレベルの話。</p>

<h4>ブロックレベル要素</h4>

<p>ブロックレベル要素は、ソース文書でブロック（段落など）として視覚的にフォーマットされた要素のことです。 <br />
‘display’プロパティの’block’、’list-item’、’table’値は、要素をブロックレベルにします。 <br />
御存知の通り、ブロックレベル要素は縦方向にスタックされていきます。</p>

<h4>インラインレベル要素</h4>

<p>インラインレベル要素はソース文書のうち新しい内容ブロック整形しない要素であり、内容は複数行にまたがります。（たとえば、段落内の文字強調や、インライン画像など）。 <br />
‘display’プロパティの’inline’、 ‘inline-table’、’inline-block’値は、要素をインラインレベルにします。</p>

<h3>ブロックボックスとインラインボックス</h3>

<p>実際に生成されるブロック整形コンテキストに関わるボックスの話。</p>

<h4>ブロック</h4>

<h5>ブロックレベルボックス</h5>

<p>ブロックレベルボックスは、ブロックレベル要素によって生成されたボックスです。 <br />
各ブロックレベル要素は、子孫ボックスや生成されたコンテンツが含まれており、また、任意の位置決め方式に関与するボックスである主ブロックレベルボックスを生成します。</p>

<p>一部のブロックレベル要素（’list-item’要素）は、主ブロックレベルボックスに加えて追加のボックス（マーカーボックス。簡単に言うと’list-style-type’とか’list-style-image’で決めるもの）を生成することがあります。この追加ボックスは主ボックスを基準にして配置されます。</p>

<h5>ブロックコンテナボックス</h5>

<p>置換要素とテーブルボックスを除くブロックレベルボックスは、ブロックコンテナボックスでもあります。 <br />
ブロックコンテナボックスはブロックレベルボックスのみを含むか、**インラインレベルボックスのみを含みます（匿名ブロックボックスと匿名インラインボックスの話）。 <br />
ブロックレベルボックスとブロックコンテナボックスは別で、すべてのブロックコンテナボックスがブロックレベルボックスとは限りません。 <br />
非置換テーブルセルや非置換インラインブロックは、ブロックレベルボックスではありませんが、ブロックコンテナでです。</p>

<p>ブロックコンテナでもあるブロックレベルボックスをブロックボックスと呼びます。</p>

<p>非常に雑な言い方をすれば、ブロックレベルボックスがボックスの外側の話でブロックコンテナボックスがボックスの内側の話と言う感じでしょうか。</p>

<p>（置換要素：img, button, input, object等、当該要素の属性に入力される値などによって内容が置き換えられ、その寸法で認識される要素）</p>

<h4>インライン</h4>

<h5>インラインレベルボックス</h5>

<p>インラインレベルボックスはインラインレベル要素によって生成されるボックスです。
これは、インライン整形コンテキストに加わるために、ボックスとして定義されたものです。</p>

<h5>インラインボックス</h5>

<p>インラインボックスは、インラインレベルボックスであり、それらのコンテナのインライン整形コンテキストに加わるボックスでもあります。
‘inline’の’display’値を伴なう非置換要素は、インラインボックスを生成します。</p>

<h6>atomic インラインレベルボックス</h6>

<p>インラインレベルボックスであるが、インラインボックスでないもの（置換要素、インラインブロック要素、インラインテーブル要素等。幅・高さの指定できるインラインレベルボックス）は、単一の不透明なボックスとしてインライン整形コンテキストに関与するため、atomic（分割不能・不可分な）インラインレベルボックスと呼ばれます。 <br />
atomicインラインボックスは、インライン整形文脈内で複数の行にわけることが出来ません。</p>

<h3>匿名ブロックボックスと匿名インラインボックス。</h3>

<h4>匿名ブロックボックス</h4>

<p>次のようなHTMLマークアップされた文書で:</p>

<p><code>&lt;div&gt;Some text&lt;p&gt;More text&lt;/p&gt;&lt;/div&gt;</code></p>

<p>&lt;div&gt;はインラインコンテンツとブロックコンテンツの両方を持つように見えます。しかし、整形の定義のわかりやすさのために、”Some text”の周囲に匿名ブロックボックスがあるとみなします。</p>

<p>言い換えれば、ブロックコンテナボックス（上記の例では&lt;div&gt;に対して生成される）が、内部にブロックレベルボックス（上記の例で P）を持つ場合、ブロックボックスの内部はブロックレベルボックスのみになるよう強制することになります。</p>

<p><img src="http://no1026.com/wordpress/wp-content/uploads/2013/12/block.gif" alt="block" width="575" height="142" class="alignnone size-full wp-image-463" /></p>

<h4>匿名インラインボックス</h4>

<p>次のようなHTMLマークアップされた文書で:</p>

<p><code>&lt;p&gt;Some &lt;em&gt;emphasized&lt;/em&gt; text&lt;/p&gt;</code></p>

<p>&lt;p&gt;は内部にインラインボックスを持つブロックボックスを生成します。”emphasized”のボックスは、インライン要素（&lt;em&gt;）によって生成されたインラインボックスですが、他のボックス（”Some”と”text”）はブロックレベル要素（&lt;p&gt;）によって生成されたインラインボックスです。後者は、関連するインラインレベル要素を持たないため匿名インラインボックスと呼ばれます。</p>

<p><img src="http://no1026.com/wordpress/wp-content/uploads/2013/12/inline.gif" alt="inline" width="575" height="124" class="alignnone size-full wp-image-468" /></p>

<h2>display</h2>

<p>ここから、cssプロパティのはなしです。 </p>

<p>displayは要素に使用されるレンダリングボックスの種類を指定します。 HTMLでは、デフォルトの表示プロパティの値は、HTMLの仕様か、ブラウザ/ユーザのデフォルトのスタイルシートに記述から取られています。</p>

<p>初期値：上記の通り <br />
適用対象：全要素 <br />
継承：しない <br />
アニメーション：不可</p>

<h3>: none</h3>

<p>要素を整形構造に出現させません。すなわち、視覚メディアにおいて要素はボックスを生成せず、レイアウトに影響しなくなります。 <br />
不可視のボックスを作成するわけではなく、ボックスを作成しないのです。 <br />
子孫要素もいかなるボックスも生成しません。要素とその内容は整形構造から完全に削除されます。この動作は、子孫での’display’プロパティの設定によって上書きされません。 <br />
なお、当然ですがDOM上は存在します。</p>

<h3>: inline</h3>

<p>1つ以上のインラインボックス要素を生成します。</p>

<h3>: block</h3>

<p>ブロックボックス要素を生成します。</p>

<h3>: list-item</h3>

<p>コンテンツのための主ブロックレベルボックスに加えて追加のマーカーボックスを生成します。</p>

<h3>: inline-block</h3>

<p>インラインレベルボックスコンテナを生成します。
先で説明したatomicインラインレベルボックスです。 <br />
MDNに「単一のインラインボックスであるかのように周囲のコンテンツの流し込みが行われる、ブロックボックス要素を生成」と解説されていましたが、inline-blockはブロックコンテナではありますがブロックレベルボックスではなくインラインレベルボックスなのでブロックボックス要素とは呼べず、誤りです。。</p>

<h3>: table</h3>

<p>&lt;table&gt; 要素と同じように動作、つまりブロックレベルのテーブルを生成します。</p>

<h3>: inline-table</h3>

<p>インラインレベルのテーブルを生成します。 <br />
またMDNに「インラインボックスとしてではなく、ブロックレベルボックスとして動作します。」とありますが、ブロックコンテナのインラインレベルボックスです。</p>

<h3>: table-row</h3>

<p>&lt;tr&gt;要素と同じように動作します。 <br />
指定要素はセルの行となります。</p>

<h3>: table-row-group</h3>

<p>&lt;tbody&gt;要素と同じように動作します。
指定要素グループが1つ以上の行となります。</p>

<h3>: table-header-group</h3>

<p>&lt;thead&gt;要素と同じように動作します。
行グループは、常にすべての行と行のグループの前に、かつ任意の上部のキャプションの後に表示されます。  テーブルが ‘display: table-header-group’ をもつ複数の要素を含む場合は、1行目のみヘッダとして描画され、他の行はあたかも ‘display: table-row-group’ を持つかのように扱われます。</p>

<h3>: table-footer-group</h3>

<p>&lt;tfoot&gt;要素と同じように動作します。
行グループは、常にすべての行と行のグループの後に、かつ任意の下部のキャプションの前に表示されます。 <br />
テーブルが ‘display: table-footer-group’ をもつ複数の要素を含む場合、1行目のみフッタとして描画され、他の行はあたかも ‘display: table-row-group’ を持つかのように扱われます。</p>

<h3>: table-column</h3>

<p>&lt;col&gt;要素と同じように動作します。 <br />
指定要素は、セルの列を記述します。</p>

<h3>: table-column-group</h3>

<p>&lt;colgroup&gt;要素と同じように動作します。 <br />
要素グループは、1つまたは複数の列があることを指定します。</p>

<h3>: table-cell</h3>

<p>&lt;td&gt;要素と同じように動作します。 <br />
要素がテーブルのセルを表すことを指定します。</p>

<h3>: table-caption</h3>

<p>&lt;caption&gt;要素と同じように動作します。 <br />
テーブルの説明文を指定します。’display: table-caption’をもつすべての要素はテーブルにおけるcaptionのように描画されなければならなりません。</p>

<h4>display: table、inline-table、table-xxxについて</h4>

<p>これらの’display’値をもつ置換要素は、レイアウト中にその指定されたdisplay型として扱われます。 <br />
たとえば、’display: table-cell’に設定される画像は使用可能なセル空間を埋め、その寸法は通常のセルと同様に、テーブルのサイズアルゴリズムに貢献するかもしれません。</p>

<p>‘table-column’または’table-column-group’に設定される’display’をもつ要素は、レンダリングされません（’display: none’をもつ場合とまったく同じ）が、それらが表す特定の列のスタイルを風洞する属性を持つかもしれないので、有用らしいです。</p>

<p>なお、最近ではいつまでも地雷臭が抜けないflexboxの代わりに、レスポンシブなサイトを作る際に順番を入れ替えたりするのにも使われたりもしているようです。 <br />
初日げこたんの2位参照：<a href="http://geckotang.tumblr.com/post/68567307745/css-2013" target="_blank">僕の好きなCSSのプロパティ2013 &#8211; &lt; /gecko &gt;</a></p>

<h3>: run-in</h3>

<p>・run-inボックスにブロックボックスを含むなら，run-inボックスはブロックボックスを生成します。 <br />
・run-inボックスの後に，フロート配置でも絶対位置決めでもない弟ブロックボックスがつづく場合，run-inボックスはそのブロック内の最初のインラインボックスになります。ただし弟のブロックがすでにrun-inボックスで始っているか，run-in自身なら例外です。 <br />
・それ以外では、run-inボックスはブロックボックスになります。</p>

<p>run-in要素は視覚的に後続ブロックボックスの一部のように見えるにも拘らず，それでもDOMツリー上にある親からプロパティの値を継承します。 すなわち，一見して親であるかのように見えるブロック要素から値を継承される訣ではない，という事です。</p>

<h3>: compact</h3>

<p>面白いんですが、Operaがレンダリングエンジンをprestoからwebkitに変えたことで、対応ブラウザがなくなったので割愛します。</p>

<p>以上、W3Cの仕様書を日本語訳しただけのようなエントリーでした。 </p>

<p>明日、8日目は<a href="http://www.adventar.org/users/280" target="_blank">くぼしょー</a>さんです。 <br />
お楽しみに！</p>]]></content:encoded>
			<wfw:commentRss>http://no1026.com/archives/455/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>蓮爾 さんこま店</title>
		<link>http://no1026.com/archives/441</link>
		<comments>http://no1026.com/archives/441#comments</comments>
		<pubDate>Fri, 06 Dec 2013 15:00:11 +0000</pubDate>
		<dc:creator><![CDATA[1026]]></dc:creator>
				<category><![CDATA[どうでもいい話]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[ラーメン]]></category>

		<guid isPermaLink="false">http://no1026.com/?p=441</guid>
		<description><![CDATA[さんこまに行った。 2席開いていて直ぐに座れた。 店員は、店主と助手の2名だった。 食券に100円添えて、うずら卵をお願いした。 着席して6分ほどでラーメンできあがり、助手の方からトッピング訊かれて、 ニンニク少な目ヤサ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>さんこまに行った。</p>

<p>2席開いていて直ぐに座れた。</p>

<p>店員は、店主と助手の2名だった。</p>

<p>食券に100円添えて、うずら卵をお願いした。</p>

<p>着席して6分ほどでラーメンできあがり、助手の方からトッピング訊かれて、
ニンニク少な目ヤサイアブラをお願いした。</p>

<p><img class="alignnone size-full wp-image-443" alt="IMG_0386" src="http://no1026.com/wordpress/wp-content/uploads/2013/12/IMG_0386.jpg" width="575" height="429" /><br />
<strong>小ラーメン+うずら卵 ニンニク少な目 ヤサイ アブラ 800YEN</strong></p>

<p>さっそく、いただきます。</p>

<p><img class="alignnone size-full wp-image-444" alt="IMG_0387" src="http://no1026.com/wordpress/wp-content/uploads/2013/12/IMG_0387.jpg" width="575" height="429" /><br />
ブタ、<br />
良く煮込まれた感じで、トロットロにトロけるほど柔らかいもの。<br />
二切れ。ひとつは特大</p>

<p><img class="alignnone size-full wp-image-445" alt="IMG_0388" src="http://no1026.com/wordpress/wp-content/uploads/2013/12/IMG_0388.jpg" width="575" height="429" /><br />
麺、<br />
モソモソとした蓮爾らしい麺。小麦を強く感じウマい。</p>

<p><img class="alignnone size-full wp-image-446" alt="IMG_0389" src="http://no1026.com/wordpress/wp-content/uploads/2013/12/IMG_0389.jpg" width="575" height="429" /><br />
汁、<br />
醤油と豚の甘み旨味が絶妙なバランスで利いている。<br />
うんめ～。</p>

<p><del>完飲。</del>ごっそさんです。</p>

<p></p>

<p>明日のラーメン Advent Calendar 2013の記事<p>

<p>●2013/12/08 : <a href="http://blog.sou-lab.com/" target="_blank">SOUさん</a></p>]]></content:encoded>
			<wfw:commentRss>http://no1026.com/archives/441/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS SLOT – A GAME, noJS, ONLY CSS &amp; HTML</title>
		<link>http://no1026.com/archives/332</link>
		<comments>http://no1026.com/archives/332#comments</comments>
		<pubDate>Mon, 24 Dec 2012 03:26:07 +0000</pubDate>
		<dc:creator><![CDATA[1026]]></dc:creator>
				<category><![CDATA[イベント系の話]]></category>
		<category><![CDATA[何か作った話]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[CSSプログラミング]]></category>

		<guid isPermaLink="false">http://no1026.com/?p=332</guid>
		<description><![CDATA[2度あることは３度あります。CSS Programming Advent Calendar 2012の24日目、1026です。Merry Christmas! 予告どおりギャンブルの定番スロットゲームです。 前回のフリー [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>2度あることは３度あります。<a href="http://www.adventar.org/calendars/2" target="_blank">CSS Programming Advent Calendar 2012</a>の24日目、1026です。Merry Christmas!</p>

<p>予告どおりギャンブルの定番スロットゲームです。</p>

<p>前回のフリースローで学んで、回転速度を相当遅くしてみたのですがどうでしょうか？<br />
MAXBETボタンとコイン枚数の表示は飾りです。1枚しかbetできませんし、コインは返って来ません。そんな飾りはあるのにコイン投入口はありません。</p>

<p>大当たり（大したことないですが一応）は777だけです。謎の小当り的なもの（パネルの表示がちょっと変わる程度）が結構あります。</p>

<p>いつも通りChromeのみの動作確認です。</p>

<script type="text/javascript" src="http://jsdo.it/blogparts/rCaO/js?width=575&#038;height=496&#038;view=readme"></script>

<h2>適当な解説</h2>

<h3>基本的にはフリースローと同じ</h3>

<p>小見出し通りです。元々、こっちを先に思いついて作っていて、後でフリースローにも使えると思って作った感じなので、コチラのほうがフリースローより地味と言えば地味です。トリ前なのにスミマセン。</p>

<p>ただ、フリースローが上・中・下 or 左・中・右の3種のボタンの順序切り替えなのに対し、こちらはリールの数字１つずつで10種のボタン切り替えなので面倒です。とはいえ、CSS上は似たようなことの繰り返しなのでsassで処理させてもらいました。</p>

<p>ボタンの切り替え速度が速いので、結構ズレます。数字が揃っていないくてもアタリになったり、揃っていてもアタリにならなかったりすることが稀によくあります。仕様です。</p>

<h3>リールの回転はstepsで</h3>

<p>リールの作り自体は既に<a href="http://colopl.co.jp/" target="_blank">コロプラ</a>さんというか<a href="https://twitter.com/mattari_panda" target="_blank">@mattari_panda</a>さんが、『<a href="http://colopl.co.jp/tech/blog/2012/10/2103/" target="_blank">CSSアニメーションでスロット風くじを実装：後編</a>』として良い感じに説明してくださっているので、見た目の感じなどはほぼ丸っと参考にさせていただきました。</p>

<p>ただし、今回はnoJSですのでリールがいい感じに滑ったりはしてくれないため、普通にアニーメーションしてしまうと中途半端な位置で数字が止まり、どの数字で止めたのかわからなくなっています。そこでanimation-timing-functionをstepsで指定することで、カクカクにはなりますが、ちゃんと数字が中央で止まるようにしています。</p>

<p>実際、stepsを指定したときとしていないときの差は、2日目まとりさんの『<a href="http://unformedbuilding.com/articles/css-stopwatch/" target="_blank">CSS Stopwatch</a>』にて、カウントスタイルを切り替えてもらうとわかりやすいと思います。</p>

<h3>&lt;input type=&#8221;reset&#8221;&gt;</h3>
<p>ちょっとした新機軸はresetでしょうか。今まではリセットするときはリロードで誤魔化すことが多かったですが、「スロットで毎回リロードはなぁ」と考えていて思いつきました。というか、こんな単純なこと何故今まで思い浮かばなかったんでしょうか。</p>

<p>ただし、毎回resetで全てのinputからcheckedを外してしまっているので、コイン枚数の計算などが出来ないという少々残念なことにもなっています。</p>

<p>前回作る予定だったパズルは、このresetを利用して、上海を作るつもりだったのですが（選択中の牌のペアになる牌以外はresetになっていて、他の上海同様に選択中の牌の解除が容易にできるモノ）、上海は2枚一組で牌を消していくゲームであるものの同一牌自体は2枚以上あることに気づき「これでreset使ったら消した牌まで復活しちゃうじゃん…」ということでポシャりました。</p>

<h3>電光パネル</h3>
<p>パネルは5509さんの『<a href="http://5509.me/log/electronic-billboard-with-marquee-and-css3" target="_blank">電光掲示板をあのmarqueeとCSS3のグラデーションで</a>』の色を調整したくらいです。</p>

<p>今回見た目に関しては、本当に色々な方を参考にさせていただきました。</p>

<h3>SCSS</h3>

<p>最初の方に適当なmixinが書いてあるのは、jsdo.itがcompassに対応する前に作り始めて珍しくchrome以外でも見れるようにしようと思ったのですが、面倒くさくなって途中で辞めた名残です。</p>

<p>最初にも書いたボタンの重なりの切り替えに関して、scssファイルで言う500行目過ぎからなんですが、keyframesも@forで処理しています。keyframesの%前に変数を使った場合、%をそのまま%と書くとエラーが出ます。今回は $per: unquote(&#8220;%&#8221;); なんかを先に作って #{$per} で出しましたが、 多分 #{&#8216;%&#8217;} あたりでも大丈夫なんじゃないでしょうか。似たようなことをする場合、適時処理してやってください。</p>

<ins datetime="2012-12-24"><p><b>追記</b>：<a href="https://twitter.com/xl1blue/status/283061796204589056" target="_blank">*1% で出せる</a>そうです。今回で言えば #{$i * 10%} みたいな形で。やだ、賢い。それとも、僕が頭悪い？</p></ins>

<h3>見た目</h3>
<p>大当たり時に出る画像以外は全てCSSで表現しています。前述のとおり、色々な方を参考にさせていただきましたし、見た目が一番頑張った気がします。</p>

<h2>次回予告</h2>
<p>明日はいよいよ最終日、我らが（？）<a href="https://twitter.com/jsdo_it" target="_blank">jsdo.itチーム</a>さんです（ まさか<a href="http://jsdo.it/blog/" target="_blank">ここ</a>？いや、多分<a href="http://design.kayac.com/" target="_blank">この辺</a>かな？）。<br />
まとめと言いながら、何か凄いものを作っているらしいので期待しましょう。</p>]]></content:encoded>
			<wfw:commentRss>http://no1026.com/archives/332/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Loupe（おまけ）とCSSプログラミングの制作について</title>
		<link>http://no1026.com/archives/313</link>
		<comments>http://no1026.com/archives/313#comments</comments>
		<pubDate>Wed, 19 Dec 2012 01:45:57 +0000</pubDate>
		<dc:creator><![CDATA[1026]]></dc:creator>
				<category><![CDATA[イベント系の話]]></category>
		<category><![CDATA[何か作った話]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[CSSプログラミング]]></category>

		<guid isPermaLink="false">http://no1026.com/?p=313</guid>
		<description><![CDATA[CSS Programming Advent Calendar 2012の19日目、一週間ぶりです。元バスケ部の友人に「そんなに綺麗なフォームでそんなに入らない意味がわからない」といわれたことがあるくらい美しいフォームに [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.adventar.org/calendars/2" target="_blank">CSS Programming Advent Calendar 2012</a>の19日目、一週間ぶりです。元バスケ部の友人に「そんなに綺麗なフォームでそんなに入らない意味がわからない」といわれたことがあるくらい美しいフォームに定評のある1026です。CSSフリースローお楽しみ頂けたでしょうか？</p>

<p>さて、今日は元々宣言していたパズルがポシャったのでかるいやつを、ということでCSS Loupeを作りました。JSでたまにある<a href="http://mlens.musings.it/" target="_blank">こういうもの</a>のPure CSS版です。</p>

<p>クリスマスっぽい画像を探したら、全体的に赤でちょっと拡大がわかりにくくなってしまったでしょうか…</p>

<p>フィルターかけるボタンとかつけようかとも思ったのですが、付けたところでルーペとしてどうにかなるわけではない（という言い訳で若干面倒くさい）ので辞めました。</p>

<script type="text/javascript" src="http://jsdo.it/blogparts/3OLe/js?width=575&#038;height=496&#038;view=play"></script>

<h2>適当な解説</h2>

<p>画像の上にdivを敷き詰めて、hoverするdivに合わせてルーペが移動。拡大画像はルーペの背景画像になっていて、同じくhoverに合わせて背景の位置が動く仕組みです。元画像と拡大画像の端を合わせるのがちょっと面倒くさかったです。いつも通り、細かいことは、ソース見て下さい。</p>

<p><a href="http://jsdo.it/tsmallfield/css3_mouse_following_arrow" target="_blank">CSS3でマウス追尾/Mouse Following Arrow</a>あたりと似たような感じのはずです、多分。</p>

<h2>コードは短くしよう</h2>

<p>できる限り精密に動くように、1&#215;1のdivを敷き詰めようとしたのですが、divの数が云万になり空divとは言え尋常じゃないくらい重くなってしまいました。更に、cssの方はsassさんというかrubyさんというか兎に角その辺に「でかすぎてコンパイル出来ねーよ」と怒られてしまいました。そんなことが起こることを初めて知りました。expandedでコンパイルしてどれくらいだったのでしょうか。単純に考えると10&#215;10の公開作品で6000行なので、1&#215;1なら100倍して60万行？</p>

<p>自動生成できるからといって、サイズが大きくなりすぎるのはやはりよくありませんね。気をつけましょう。（htmlも元はJSで作ったのは秘密）</p>

<p>結局はdivを徐々に大きくしていき、10&#215;10で作りましたがwebkit以外だと未だにかなり重いと思います。</p>

<h2>CSSプログラミングについて</h2>

<p>作ったものがかるいので、CSSプログラミングの制作について話します。</p>

<h3>制作にはどれくらいかかるの?</h3>

<p>リアルで人に会うとちょくちょく聞かれます。</p>

<h4>実際の作業に関して</h4>

<p>「大してかからないんですよ」と答えていますが、実際仕組みを作るということに関しては大してかかりません。特に最近はCSSプリプロセッサーがあるので、CSSプログラミングでよくある面倒くさい繰り返し作業もサラッとやってくれます。</p>

<p>今回の作品群は割りと仕事の空いた時間等でちょこちょこ作っているので何ともいえないのですが、CSS Minesweeperあたりは土日の2日で大体作った気がします。まぁ、二桁時間もかかっていないでしょう。更に、あれは実際にゲームをクリアして作りやすそうな座標をさがすとか、その座標をチマチマhtmlに打つとかそういった作業に時間を食っています。座標打つのは苦痛以外の何モノでもありませんでしたｗ</p>

<p>CSS Minesweeperは動きがないのでそういった感じでしたが、前回のCSS FreeThrowやCSS Baseballはボールの動きや時間配分を調整するのに時間がかかりました。特に、CSS FreeThrowはボールもCSSで作ったので、その辺や、メーターとボタンの連動に関するデバッグというか調整というか、そういうことに割りと時間をかけています。</p>

<p>まぁ、そういった感じで、CSSプログラミングとはいえ実際の作業は、仕組みを作るより装飾などのほうがよっぽど時間が掛かっています。実際、そこをある程度凝らないと結構な仕組みでもパッと見、大したものに見えなくなりますし、個人的にはゲームとして作ることが多いので見た目をある程度凝ったほうがウケもいいです。そういう意味では、装飾に命をかけたCSSのみで作ったアイコン等のほうが、実際の作業時間としては長いかもしれません。</p>

<h4>1%のひらめき</h4>

<p>プログラミングにかかる時間は9割が考えたり調べたりする時間で、実際にコードを書くのは1割くらい、などと言う話を聞いたことがありますが、CSSプログラミングに関しても似たようなものです。</p>

<p>ただ、CSSプログラミングにおいてはどう作るかと言うよりは、何が作れるかということを考える時間が長いです。まぁ、「作れるものを考える≒仕組みを考える」みたいなものなんですが。</p>

<p>普段は思いついた時に作るのでいいのですが、今回のAdvent Calenderでは期限が決まっているため、一体何が作れるだろうかと、Flashゲームやスマホゲームを見まくりました。見ても何も思い浮かびませんでしたが…</p>

<p>逆に言えば「あっ、これはCSSで作れそう」というひらめきがなければ、一生作れないかもしれません。</p>

<h3>なんでJS使わないの？</h3>

<p>ロマンです。</p>

<h3>CSSプログラミングをする利点は？</h3>

<p>本来の使い方か否かは別にして、CSSには詳しくなれます。また、思わぬバグを発見できたりします。バグを見つけることが利点か否かは置いておくとして、知っておくのはよいことだと思います。先日もテスト用に::before、::afterを使おうとしたら予想以上に面倒くさい現象に出会いました（<a href="http://jsdo.it/No_1026/o2aO">inputに対する::before、::after</a>）。知らずに実務で遭遇すると詰むようなことも、事前に知っておけるというのは良いことです。（実務で使わないような事のほうが多い気もしますが）</p>

<h2>次回</h2>

<p>明日は、<a href="http://tenderfeel.xsrv.jp/" target="_blank">Tenderfeel</a>さん（16日ぶり2回目）です。急遽名乗り出てくれました。よろしくお願いします。</p>]]></content:encoded>
			<wfw:commentRss>http://no1026.com/archives/313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS FreeThrow – a game, noJS, only CSS and HTML</title>
		<link>http://no1026.com/archives/311</link>
		<comments>http://no1026.com/archives/311#comments</comments>
		<pubDate>Tue, 11 Dec 2012 15:14:00 +0000</pubDate>
		<dc:creator><![CDATA[1026]]></dc:creator>
				<category><![CDATA[イベント系の話]]></category>
		<category><![CDATA[何か作った話]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[CSSプログラミング]]></category>

		<guid isPermaLink="false">http://no1026.com/?p=311</guid>
		<description><![CDATA[CSS Programming Advent Calendar 2012 の12日目です。 自称CSSプログラマーのげこたんじゃない方、力技に定評のある1026です（今自分で考えました）。 最近はinputでほげほげ以外 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.adventar.org/calendars/2" target="_blank">CSS Programming Advent Calendar 2012</a> の12日目です。</p>

<p>自称CSSプログラマーのげこたんじゃない方、力技に定評のある1026です（今自分で考えました）。</p>

<p>最近はinputでほげほげ以外の方法も増えていますが、定評のあるあくまでinput:checkedに頼った力技でCSSフリースローゲームを作りました。環境によって読み込みが遅い・重い可能性があります。いつも通り、chromeでしか確認していません。</p>

<script type="text/javascript" src="http://jsdo.it/blogparts/g7ro/js"></script>

<h2>適当な解説</h2>

<h3>メーターとボタンの連動</h3>

<p>CSSでこのメーターの位置はとれません。そこで、横は左・中・右の3種類、縦は上・中・下の3種類のinput（ここでは其れに対応するlabel）を重ねておき、メーターの動きに合わせて重ねたinputのz-indexが入れ替わり、メーターの位置に相当するinputが一番上にきて押すことが出来るという仕組みです。この「ボタンは重ねておいて必要なのを一番上にすればばいいじゃん」という発想は<a href="http://jsdo.it/No_1026/uQ21" target="_blank">no JS Loop Slider</a>あたりでも使いました。<br />inputが順番にz-indexで入れ替わる仕組みは、<a href="http://jsdo.it/No_1026/urFs" target="_blank">CSS Minesweeper</a>のときのランダム風な動きと同じ要領です。サムの動きのanimation-durationとボタンになっているinputのanimation-durationを同じにしてやればいいわけです。</p>

<h3>inputは高速で動くとcheckedが入らない</h3>

<p><a href="http://jsdo.it/No_1026/bgpJ" target="_blank">CSS BASEBALL</a>の時に学びましたが、動いているinputは非常に押しにくいです。ましてやこれはコンマ何秒という速度で入れ替わっているので、そのままでは、とてもクリックを認識してくれません（checkedはJSでいうMouseUp時につきます）。そこで、CSS BASEBALLの時に<a href="http://jsdo.it/xl1/bzf5" target="_blank">教えてもらった</a>ようにactiveになると動きを止めるようにしています。止めるのがボタンだけではメーターとずれるので、勿論メーターも止めています。checkedだけでなくactive等に関してもlabelとinputが連動していて助かりました。それでもcheckedがつかないことがまれによくあります。</p>

<h3>動作の不具合を作りの緩さを誤魔化す見た目</h3>

<p>そんな不具合や画像を使わない作りこみのなさを誤魔化すための、安いゲーム風の見た目です。寂れたサービスエリアのキーホルダー売り場に売っているようなゲームですから、ちょっとやそっとのバグはお気になさらずに。両方のメーターが止まってもボールが飛んでいかない場合は、後から押した方のボタンをもう一度押すといいはずです。</p>

<h3>結論：ソース見ろ</h3>

<p>いつも思うんですが、僕のCSSプログラミングの解説はまったく解説になってませんよね。でも、inputで云々というCSSプログラミングお決まりのパターンを繰り返しているだけなので、ソース見てもらえばいいと思います。</p>

<h3>おまけ</h3>

<p>ちなみにsass先生に大活躍していただきましたが、画像をdateURIにしたわけでもないのexpandedでコンパイルしたら3000行を超えていて気持ちが悪くなりました。</p>

<h2>次回予告</h2>

<h3>個人的</h3>
<p>最低あと2回は記事書きますが、1回は今回同様の仕組みで作るアレです。twitterでネタバレしたアレです。</p>

<h3>全体的</h3>
<p>13日目の明日は…（あれ？また？）…<a href="http://geckotang.tumblr.com/" target="_blank">げこたん</a>（5日ぶり3度目）です。大丈夫なのでしょうか。</p>]]></content:encoded>
			<wfw:commentRss>http://no1026.com/archives/311/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 4.749 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2015-11-13 09:54:08 -->
