<?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>understandard &#187; inline-block</title>
	<atom:link href="http://www.understandard.net/tag/inline-block/feed" rel="self" type="application/rss+xml" />
	<link>http://www.understandard.net</link>
	<description></description>
	<lastBuildDate>Fri, 30 Jul 2010 02:24:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>display:inline-block; を使う</title>
		<link>http://www.understandard.net/css/css008.html</link>
		<comments>http://www.understandard.net/css/css008.html#comments</comments>
		<pubDate>Tue, 23 Mar 2010 08:21:10 +0000</pubDate>
		<dc:creator>じゅん＠understandard</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[inline-block]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.understandard.net/?p=354</guid>
		<description><![CDATA[要素の横並びにfloat:left; ではなくdisplay:inline-block; を使うためのメモ。
元ネタは、CSS display: inline-block: why it rocks, and why i [...]

<dl class="relatives">
	<dt><span>関連投稿</span></dt>
		<dd>			<ul>
								<li>
					<a href="http://www.understandard.net/css/css007.html" rel="bookmark">cssでグラフを描く</a><!-- (10.8388)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/css" title="css の投稿をすべて表示" rel="category tag">css</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/css" rel="tag">css</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/css/css004.html" rel="bookmark">デフォルトスタイルのリセット</a><!-- (9.2585)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/css" title="css の投稿をすべて表示" rel="category tag">css</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/css" rel="tag">css</a>+<a href="http://www.understandard.net/tag/tips" rel="tag">tips</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/css/css009.html" rel="bookmark">table に指定しておきたい CSS メモ</a><!-- (5.24327)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/css" title="css の投稿をすべて表示" rel="category tag">css</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/css" rel="tag">css</a>+<a href="http://www.understandard.net/tag/tips" rel="tag">tips</a>.</span>
					</div>
				</li>
							</ul>
					</dd>
</dl>
]]></description>
			<content:encoded><![CDATA[<p>要素の横並びにfloat:left; ではなくdisplay:inline-block; を使うためのメモ。<br />
元ネタは、<a href="http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks">CSS display: inline-block: why it rocks, and why it sucks</a></p>
<p>float:left; で横並びにしようとしたとき、各要素の高さが違うと<br />
<img title="css008-1.png" src="/images/post/css/008/css008-1.png" alt="css008-1.png" width="310" height="200" /><br />
このようになってしまいます。<br />
カッコ悪いですよね…。というよりデザイン通りになっていません。</p>
<p>display:inline-block; を使うと、<br />
<img src="/images/post/css/008/css008-2.png" alt="css008-2.png" title="css008-2.png" width="310" height="162" /><br />
このようになります。素晴らしい！エクセレント！<br />
display:inline-block; には、text-align および vertical-align が指定できるので、今まで面倒だったレイアウトが簡単に実装できるようになります。</p>
<h2>と、そう簡単にはいきません</h2>
<p>記述もシンプルになるし、変な崩れも起こらないし、完璧だー！なんていうふうに特に何も考えずにコーディングすると、IE6、IE7以外で隙間が生まれてしまいます。</p>
<p>先に出した成功例は、以下に示す解決法を実践したものだったのです…。<br />
何も対応をしなかった場合、IE6、IE7以外ではこのようになってしまいます。<br />
<img src="/images/post/css/008/css008-3.png" alt="css008-3.png" title="css008-3.png" width="310" height="240" /></p>
<p>今回基準となるコードは以下。<br />
CSS</p>
<pre class="brush: css;">ul{
}
li{
	width:100px;
	vertical-align:top;
	display:inline-block;
	/display:inline;
	/zoom: 1;
}</pre>
<p>HTML</p>
<pre class="brush: xml;">&lt;ul&gt;
	&lt;li&gt;inline-blockのサンプル1&lt;/li&gt;
	&lt;li&gt;inline-blockのサンプル2&lt;/li&gt;
	&lt;li&gt;inline-blockのサンプル3&lt;/li&gt;
	&lt;li&gt;inline-blockのサンプル4&lt;/li&gt;
&lt;/ul&gt;</pre>
<p><strong>この隙間の原因は改行</strong>。<br />
試しに改行を消してみるときれいに隙間が埋まります。</p>
<p>解決法は大きく分けて2つ。<br />
HTMLで直すか、CSSで直すかです。</p>
<h2>解決法1: HTML側で直す</h2>
<h3>解決法1-1:改行を削除</h3>
<p>そのままですね。<br />
改行コードが原因なので、改行を削除してしまえば隙間が埋まります。</p>
<pre class="brush: xml;">&lt;ul&gt;
	&lt;li&gt;inline-blockのサンプル1&lt;/li&gt;&lt;li&gt;inline-blockのサンプル2&lt;/li&gt;&lt;li&gt;inline-blockのサンプル3&lt;/li&gt;&lt;li&gt;inline-blockのサンプル4&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>問題は、横並び要素を1行にまとめて書くので、ソースの可読性が低下する可能性が高いこと。</p>
<h3>解決法1-2: コメントアウトを使う</h3>
<p>よくある解決法ですね。</p>
<pre class="brush: xml;">&lt;ul&gt;&lt;!--
	--&gt;&lt;li&gt;inline-blockのサンプル1&lt;/li&gt;&lt;!--
	--&gt;&lt;li&gt;inline-blockのサンプル2&lt;/li&gt;&lt;!--
	--&gt;&lt;li&gt;inline-blockのサンプル3&lt;/li&gt;&lt;!--
	--&gt;&lt;li&gt;inline-blockのサンプル4&lt;/li&gt;&lt;!--
--&gt;&lt;/ul&gt;</pre>
<p>こんなふうに改行部分をコメントアウトすれば、改行コードを隠すことができます。<br />
解決法1-1のように可読性は落ちることはないです。</p>
<h3>解決法1-3: 改行部分を変える</h3>
<p>こちらもよくある解決法。</p>
<pre class="brush: xml;">&lt;ul
	&gt;&lt;li&gt;inline-blockのサンプル1&lt;/li
	&gt;&lt;li&gt;inline-blockのサンプル2&lt;/li
	&gt;&lt;li&gt;inline-blockのサンプル3&lt;/li
	&gt;&lt;li&gt;inline-blockのサンプル4&lt;/li
&gt;&lt;/ul&gt;</pre>
<p>このように改行位置を本来の位置からずらすことで、li間で改行をしてないことにする方法です。<br />
こちらも解決法1-1のように可読性は落ちることはないです。</p>
<h2>解決法2: CSS側で直す</h2>
<h3>解決法2-1: letter-spacing で調整</h3>
<p>inline-blockを指定している要素とその親要素に以下の指定を加えるだけ。</p>
<pre class="brush: css;">ul{
	letter-spacing:-.40em;
}
li{
	letter-spacing:normal;
}</pre>
<h3>解決法2-2: font-size で調整</h3>
<pre class="brush: css;">ul{
	font-size:0;
}
li{
	font-size:16px;
	width:100px;
	vertical-align:top;
	display:inline-block;
	/display:inline;
	/zoom: 1;
}</pre>
<p>font-sizeをピクセルで指定しているので、IEで文字の拡大縮小ができません。<br />
IE7以降はページのズーム機能がついているので問題ないとは思いますが…。</p>
<h2>最終結果</h2>
<p>個人的には解決法2-1のサンプルが一番使いやすいなと思っています。<br />
基準にしたCSSと組み合わせると、以下のようになります。</p>
<pre class="brush: css;">ul{
	letter-spacing:-.40em;
}
li{
	letter-spacing:normal;
	width:100px;
	vertical-align:top;
	display:inline-block;
	/display:inline;
	/zoom: 1;
}</pre>
<p>記述はシンプルだし、横幅を変更するだけで流用できるので汎用性が高いと思います。<br />
解決法2-2でもいいのですが、修正箇所が解決法2-1に比べて1箇所増えるので次点としました。<br />
IEでの文字の拡大縮小がちょっと気になりますしね。</p>
<p>CSSで修正したほうがスマートな方法かと思いますが、CSSをいじれない場合もあるかもしれません。<br />
そういった場合には、HTMLをちゃちゃっといじっちゃってもオッケーだと思います。そこら辺は臨機応変に。</p>
<h3>Firefox 2 について</h3>
<p>inline-block 系の記事では、Firefox 2 用に display:-moz-inline-box; という指定がされているものが多いですが、Firefox 2 は、2008 年末で開発とサポートを終了しており、もう対象ブラウザからはずしちゃってもいいかなーと思っています。<br />
アップグレードできないなら他のブラウザ使ってねーとMozilla も言ってますし（参考ページ： <a href="http://mozilla.jp/firefox/download/older/">次世代ブラウザ Firefox – 旧バージョンのダウンロード</a> の下方）。</p>
<p>というわけで、Firefox 2 用の指定は削除してあります。<br />
そのため、Firefox 2 で見ると崩れているかと思います（display:inline-block; に対応していないため）。</p>
<p>もしFirefox 2 にも対応させたい場合は、ヨモツネットさんが公開してくれているスライドを参考にしてください。<br />
参考ページ： <a href="http://www.yomotsu.net/works/081016cssnite/">書籍などに紹介されていない display : inline-block について</a> （ヨモツネット）</p>


<dl class="relatives">
	<dt><span>関連投稿</span></dt>
		<dd>			<ul>
								<li>
					<a href="http://www.understandard.net/css/css007.html" rel="bookmark">cssでグラフを描く</a><!-- (10.8388)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/css" title="css の投稿をすべて表示" rel="category tag">css</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/css" rel="tag">css</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/css/css004.html" rel="bookmark">デフォルトスタイルのリセット</a><!-- (9.2585)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/css" title="css の投稿をすべて表示" rel="category tag">css</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/css" rel="tag">css</a>+<a href="http://www.understandard.net/tag/tips" rel="tag">tips</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/css/css009.html" rel="bookmark">table に指定しておきたい CSS メモ</a><!-- (5.24327)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/css" title="css の投稿をすべて表示" rel="category tag">css</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/css" rel="tag">css</a>+<a href="http://www.understandard.net/tag/tips" rel="tag">tips</a>.</span>
					</div>
				</li>
							</ul>
					</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://www.understandard.net/css/css008.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>要素の高さをそろえるjQueryプラグイン</title>
		<link>http://www.understandard.net/javascript/javascript001.html</link>
		<comments>http://www.understandard.net/javascript/javascript001.html#comments</comments>
		<pubDate>Fri, 12 Dec 2008 02:08:19 +0000</pubDate>
		<dc:creator>じゅん＠understandard</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[inline-block]]></category>

		<guid isPermaLink="false">http://www.understandard.net/?p=53</guid>
		<description><![CDATA[CSS Newbieというサイトで、簡単に要素の高さを揃えられるjQueryプラグインが公開されていました。
The EqualHeights jQuery Plugin
demo
jQueryとjquery.equal [...]

<dl class="relatives">
	<dt><span>関連投稿</span></dt>
		<dd>			<ul>
								<li>
					<a href="http://www.understandard.net/javascript/javascript004.html" rel="bookmark">タイル状にアニメーションして画像を切り替えるjQueryプラグイン jFancyTile</a><!-- (14.9427)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/javascript/jquery" title="jQuery の投稿をすべて表示" rel="category tag">jQuery</a> &gt; <a href="http://www.understandard.net/category/javascript" title="javascript の投稿をすべて表示" rel="category tag">javascript</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/javascript" rel="tag">javascript</a>+<a href="http://www.understandard.net/tag/jquery" rel="tag">jQuery</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/javascript/javascript002.html" rel="bookmark">IE6 で透過 PNG を使えるようにする javascript</a><!-- (13.4716)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/javascript" title="javascript の投稿をすべて表示" rel="category tag">javascript</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/ie6" rel="tag">IE6</a>+<a href="http://www.understandard.net/tag/javascript" rel="tag">javascript</a>+<a href="http://www.understandard.net/tag/transparent-png" rel="tag">透過PNG</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/javascript/javascript003.html" rel="bookmark">キャラクターと背景が動きまくるjQueryプラグイン（おまけつき） jQuery.spritely</a><!-- (8.37504)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/javascript/jquery" title="jQuery の投稿をすべて表示" rel="category tag">jQuery</a> &gt; <a href="http://www.understandard.net/category/javascript" title="javascript の投稿をすべて表示" rel="category tag">javascript</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/javascript" rel="tag">javascript</a>+<a href="http://www.understandard.net/tag/jquery" rel="tag">jQuery</a>.</span>
					</div>
				</li>
							</ul>
					</dd>
</dl>
]]></description>
			<content:encoded><![CDATA[<p>CSS Newbieというサイトで、簡単に要素の高さを揃えられるjQueryプラグインが公開されていました。</p>
<p><a href="http://www.cssnewbie.com/equalheights-jquery-plugin/">The EqualHeights jQuery Plugin</a><br />
<a href="http://www.cssnewbie.com/example/equal-heights/plugin.html">demo</a></p>
<p>jQueryとjquery.equalheights.jsを読み込み</p>
<pre class="brush: xml;">&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;jquery.equalheights.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p>tr<br />
下記のように要素の高さを揃えたい箇所を指定すれば、内要素が異なる高さを持つ要素の高さを揃えられます。</p>
<pre class="brush: jscript;">$(document).ready(function() {
    $(&quot;.columns&quot;).equalHeights(100,300);
});
</pre>
<p>上記の記述では、columnというクラス名がついた要素に対して高さを揃えます。<br />
.equalHeights(100,300)の部分でmin-heightとmax-heightを指定できます。値としてautoも使えるみたいです（<a href="http://www.cssnewbie.com/example/equal-heights/plugin.html">作者デモ</a>はautoを使っている）。300pxを超えたらスクロールバーが出てきます。</p>
<p>既知のバグとして、要素内に画像を含み、その画像にheightの指定がない場合、IEで正確に高さが計算できないことがあるそうです。その場合、スクリプトが高さをゼロとみなしてしまうようです。</p>
<p>また、いくつかのブラウザでリサイズ時にもう一度スクリプトを読まないといけない場合があるらしく、その場合は下記のようなスクリプトを書いてね、とのこと。</p>
<pre class="brush: jscript;">$(&quot;.columns&quot;).resize(function(){
     $(&quot;.columns&quot;).equalHeights();
});
</pre>
<p>ここまで書いておいて言うのもなんだが、こういうjQueryでやるのも楽だけど、<a href="http://www.yomotsu.net/works/081016cssnite/">ヨモツネットさんの記事（書籍などに紹介されていない display : inline-block について）</a>のほうがjavascriptに依存しないし、好きだな。</p>
<p>jQueryをガシガシ使いたい人は使ってみてください。</p>


<dl class="relatives">
	<dt><span>関連投稿</span></dt>
		<dd>			<ul>
								<li>
					<a href="http://www.understandard.net/javascript/javascript004.html" rel="bookmark">タイル状にアニメーションして画像を切り替えるjQueryプラグイン jFancyTile</a><!-- (14.9427)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/javascript/jquery" title="jQuery の投稿をすべて表示" rel="category tag">jQuery</a> &gt; <a href="http://www.understandard.net/category/javascript" title="javascript の投稿をすべて表示" rel="category tag">javascript</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/javascript" rel="tag">javascript</a>+<a href="http://www.understandard.net/tag/jquery" rel="tag">jQuery</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/javascript/javascript002.html" rel="bookmark">IE6 で透過 PNG を使えるようにする javascript</a><!-- (13.4716)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/javascript" title="javascript の投稿をすべて表示" rel="category tag">javascript</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/ie6" rel="tag">IE6</a>+<a href="http://www.understandard.net/tag/javascript" rel="tag">javascript</a>+<a href="http://www.understandard.net/tag/transparent-png" rel="tag">透過PNG</a>.</span>
					</div>
				</li>
								<li>
					<a href="http://www.understandard.net/javascript/javascript003.html" rel="bookmark">キャラクターと背景が動きまくるjQueryプラグイン（おまけつき） jQuery.spritely</a><!-- (8.37504)-->
					<div class="info">
						<span class="category">category: <a href="http://www.understandard.net/category/javascript/jquery" title="jQuery の投稿をすべて表示" rel="category tag">jQuery</a> &gt; <a href="http://www.understandard.net/category/javascript" title="javascript の投稿をすべて表示" rel="category tag">javascript</a></span>
						<span class="tags">tags: <a href="http://www.understandard.net/tag/javascript" rel="tag">javascript</a>+<a href="http://www.understandard.net/tag/jquery" rel="tag">jQuery</a>.</span>
					</div>
				</li>
							</ul>
					</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://www.understandard.net/javascript/javascript001.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
