<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>CSS Radar</title>
	
	<link>http://css.studiomohawk.com</link>
	<description>CSS Tips and Tricks Sometimes with jQuery</description>
	<pubDate>Sat, 30 Aug 2008 15:02:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CssRader" type="application/rss+xml" /><item>
		<title>CSSスプライトとは？</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/366547047/</link>
		<comments>http://css.studiomohawk.com/30/css-sprites/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 14:31:49 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[performance]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=30</guid>
		<description><![CDATA[CSSスプライトってご存知ですか？
Yahoo！のパフォーマンス改善チームにも推奨されている手法で、CSSのコードもスマートに読みやすくなる、一石二鳥のテクニック。

さらに、ちょっと面倒な値を設定や画像の生成を手伝ってくれるオンラインツールも紹介しよう。]]></description>
			<content:encoded><![CDATA[<p>CSSスプライトという言葉を聞いたことがあるだろうか？<br />
ナビゲーションなどで画像を利用した際にマウスオーバーで画像を切り替えるという効果を加えるのによく利用される手法だ。</p>
<p>その昔はJavaScriptを利用していたが、CSSのbackground-position属性の位置情報を変更することで、CSSで置き換えることが一般的になった。<br />
CSSスプライトが紹介される以前は、通常時とマウスオーバー時の画像を対にしてスライスする手法が主だったが、<br />
CSSスプライトではさらに一歩進め、ナビゲーション全体で利用する通常時、マウスオーバー時の画像を1枚の画像にしてしまい、やはりCSSにより必要な画像を表示させる。</p>
<h3>なぜCSSスプライト？</h3>
<p>CSSスプライトはなぜこれまでの手法よりも優れているのだろうか？<br />
大きな1枚画像はページのロード時間を、複数に分けるより遅くしないだろうのか？</p>
<p>実はほとんどのウェブサイトではおよそ20％をHTMLのロードに、残り80%を画像やCSS、JavaScriptなどのコンポーネントをロードするのに時間がかかっている。</p>
<p>Yahoo!のパフォーマンス改善チームのTenni Theurerによると、<br />
HTTPのリクエスト回数を減らすことが、パフォーマンスの改善にもっとも効果的である、そうだ。</p>
<p>つまり、複数枚にスライスされた大きな画像は、それぞれの画像のロードに時間がかからないというだけで、<br />
ページ全体で考えると複数のHTTPリクエストを生むことになり、結果的にページのロードに時間がかかることになる。</p>
<h3>では、コードを。</h3>
<pre class="syntax-highlight:html">
&lt;div class=&quot;navi&quot;&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;#1&quot; class=&quot;home&quot;&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;#2&quot; class=&quot;yourCategory1&quot;&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;#3&quot; class=&quot;yourCategory2&quot;&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;#4&quot; class=&quot;yourCategory3&quot;&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
</pre>
<p>例として、HTMLは上記を利用する。</p>
<pre class="syntax-highlight:css">
div.navi li a {
    background-image:url(../img/image_nav.gif);
    /* スプライト画像の呼び出し */
}
    div.navi li .home {
        background-position: 0px 0px;
    }
    div.navi li.home a:hover.home  {
        background-position: 0px -32px;
    }
    ......
</pre>
<p>最後の方は省略したが、アイデアは理解できるだろう。<br />
Aタグにスプライト画像を背景として呼び出し、<br />
各li a.homeなどの部分でその背景の必要な部分を読み込む。<br />
という考え方だ。</p>
<p>対になるように画像をスライスするよりはCSSのコード自体もすっきりする。<br />
ナビゲーション以外にも、ブロックごとのアイコンの表示などにも利用でき、意外と利用範囲は広い。</p>
<p>List Apartの<a href="http://www.alistapart.com/articles/sprites">CSS Sprites: Image Slicing’s Kiss of Death</a>や、CSS-Tricksの<a href="http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/">CSS Sprites: What They Are, Why They’re Cool, and How To Use Them<br />
</a>にて、いくつかの例を見ることが出来る。</p>
<h3>でも、background-positionの値が面倒そう……</h3>
<p>その部分は確かに面倒だ。<br />
そんな面倒を解決してくれるのが、<br />
<a href="http://website-performance.org/">Website Performance</a>にて公開されている、<a href="http://spritegen.website-performance.org/">CSS Sprite Generator</a>。</p>
<p>このオンラインツールは、スライスした画像をZipファイルにしてアップロードすると、<br />
スプライト画像を作成してくれる上に、面倒なbackground-positionの値を指定も出力してくれる。<br />
さらに、Operaでのバグの修正までしてくれるし、CSSのクラス名の指定もかなり自由度の高い形でできる。</p>
<p>その上、ソースコード(PHP)まで公開され、BSDライセンスにて自由に利用できるので、オフライン時でも利用できる。<br />
サイト自体は英語が主だが、翻訳を募集していたので、先日翻訳してファイルを送信した。<br />
近い内に日本語でも利用可能にしてくれることだろう。</p>
<p><ins datetime="2008-08-22T16:29:08+00:00"><br />
2008-8-23、日本語訳の実装が終了したようです。<br />
もし、妙な日本語になっている場合はご指摘ください。</p>
<p>ヘルプページとCSSスプライトとは？ページの翻訳のお願いも作者からいただきましたので、<br />
合わせて翻訳します。<br />
</ins></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=4PLehK"><img src="http://feeds.feedburner.com/~f/CssRader?i=4PLehK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=0QfqUk"><img src="http://feeds.feedburner.com/~f/CssRader?i=0QfqUk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/366547047" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/30/css-sprites/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/30/css-sprites/</feedburner:origLink></item>
		<item>
		<title>CSSでカラムのheightを合わせる</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/359608672/</link>
		<comments>http://css.studiomohawk.com/26/columns-height-equal-with-css/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 17:39:17 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[layout]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=26</guid>
		<description><![CDATA[複数カラムを採用する場合のそれぞれのカラムの高さが同じにならない。
CSSレイアウトでよく出会うこんな不満。
Tableレイアウトにしてしまう前に、シンプルな解決を紹介。]]></description>
			<content:encoded><![CDATA[<p>Tableレイアウトをしていた時代に簡単にできたことがCSSでできない。<br />
いまだにフルCSSへ移行できないという場合によくあるのが、複数カラムを採用する場合のそれぞれのカラムの高さが同じにならないこと。<br />
Tableレイアウトでは、基本的にはTDの高さはもっとも高いTDに合わせるという状態なので、とくに意識せずとも実現できたが、CSSではそうはいかない。</p>
<h3>CSSでカラムheightを合わせる方法</h3>
<p><a href="http://css.studiomohawk.com/wp-content/uploads/2008/08/noteq.gif"><img src="http://css.studiomohawk.com/wp-content/uploads/2008/08/noteq.gif" alt="" title="noteq" width="300" height="318" class="image alignleft size-full wp-image-37" /></a>通常CSSでは左図のように、mainカラムとsidebarカラムの高さは合わない。それぞれのカラムがもつ内容がそれぞれのカラムの高さを決めるからだ。</p>
<p>通常であれば、それぞれの高さが異なっていても気にならないが、背景画像がある場合や、カラムごとに異なる背景色を敷いている場合などレイアウトの基本構造的に「ケツをあわせ」ないと気になる。</p>
<p><strong>まずはHTMLから</strong></p>
<pre class="syntax-highlight:html">&lt;div id=”container”&gt;
    &lt;div class=”main”&gt;メインカラム&lt;/div&gt;
    &lt;div class=”sidebar”&gt;サイドバー&lt;/div&gt;
&lt;/div&gt;</pre>
<p>このように、高さを合わせたいカラムをタグで囲むことになるが、<a href="http://css.studiomohawk.com/10/clearing-float-without-extra-markup/">clearfixする</a>必要があるので、追加のタグにはならないだろう。</p>
<p><strong>それではCSS</strong></p>
<pre class="syntax-highlight:css">#container {
width:340px;
height:auto;
overflow:hidden;
}
#container .main {
float:left;
width:160px;
padding-bottom: 30000px;
margin-bottom: -30000px;
}
#container .sidebar {
float:right;
width:160px;
padding-bottom: 30000px;
margin-bottom: -30000px;
}</pre>
<p>としてやればOK。</p>
<p>それぞれのカラムに対して、padding−bottomを絶対安全と思えるくらい追加し、その分をmargin-bottomで割り引く。<br />
これら2つのカラムを#containerで囲み、overflow:hiddenしてやる。</p>
<p>いわずもがなだが、.mainや.sidebarにmarginやpaddingの他の値を入れたい場合には注意が必要だ。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=xgsXDK"><img src="http://feeds.feedburner.com/~f/CssRader?i=xgsXDK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=HF6RKk"><img src="http://feeds.feedburner.com/~f/CssRader?i=HF6RKk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/359608672" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/26/columns-height-equal-with-css/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/26/columns-height-equal-with-css/</feedburner:origLink></item>
		<item>
		<title>IE ダブルマージンフロートバグをFix</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/347132018/</link>
		<comments>http://css.studiomohawk.com/23/ie-double-margin-bug-fix/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 03:50:04 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[bugfix]]></category>

		<category><![CDATA[ie]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=23</guid>
		<description><![CDATA[floatした要素に対して、同じ方向にmarginを与えると、marginが2倍になってしまう。
という、IEにおける不可解なバグ。

レイアウトに欠かすことのできないfloatで、迷い込みやすいこのバグの修正方法を紹介。]]></description>
			<content:encoded><![CDATA[<p>Internet Explorer 5、5.5、6にもっとも不可解とも言えるバグがある。<br />
それが、ダブルマージンフロートバグ。</p>
<h3>ダブルマージンフロートバグとは？</h3>
<p>floatした要素に対して、同じ方向にmarginを与えると、marginが2倍になってしまう。<br />
というバグ。<br />
<img src="http://css.studiomohawk.com/wp-content/uploads/2008/07/doublemargin.gif" alt="" title="doublemargin" width="500" height="166" class="alignnone size-full wp-image-24" /><br />
図解すると上記の様になる。</p>
<pre class="syntax-highlight:css">.content {
    float: left;
    margin-left: 30px;
}</pre>
<p>というようにすると、IE5〜6では</p>
<pre class="syntax-highlight:css">.content {
    float: left;
    margin-left: 60px;
}</pre>
<p>というように解釈される、ということだ。</p>
<p>見落としがちなのは、margin: 10px 0 0 30px；というように省略式で書いた場合。<br />
もちろん、この場合もmargin-left部分の値は倍になってしまう。</p>
<h3>修正方法</h3>
<p>修正は意外と簡単。</p>
<pre class="syntax-highlight:css">.content {
    float: left;
    margin-left: 30px;
}</pre>
<p>この例の場合なら、</p>
<pre class="syntax-highlight:css">.content {
    float: left;
    margin-left: 30px;
    display: inline;
}</pre>
<p>というように、display: inline;を追加すれば解決する。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=N6ojbJ"><img src="http://feeds.feedburner.com/~f/CssRader?i=N6ojbJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=9dAOQj"><img src="http://feeds.feedburner.com/~f/CssRader?i=9dAOQj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/347132018" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/23/ie-double-margin-bug-fix/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/23/ie-double-margin-bug-fix/</feedburner:origLink></item>
		<item>
		<title>コンディショナルコメント</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/341605453/</link>
		<comments>http://css.studiomohawk.com/20/conditional-comments/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 14:56:32 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[hack]]></category>

		<category><![CDATA[ie]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=20</guid>
		<description><![CDATA[アンダースコア(_)ハック、ハイフン(-)ハック、voice-familyハック、バックスラッシュ(/)ハック、スターHTMLハック(* html)など、様々なハックが利用できなくなったIE7。

そんな新時代に覚えておきたいコンディショナルコメントについて解説。]]></description>
			<content:encoded><![CDATA[<p>すでに承知の通り、IE7ではそれまで利用できたIEのCSSの読み込み(パース)バグによるCSSハックを台無しにしてくれた。</p>
<p>例えば、アンダースコア(_)ハック、ハイフン(-)ハック、voice-familyハック、バックスラッシュ(/)ハック、スターHTMLハック(* html)など、様々なハックが利用できなくなった。</p>
<p>マイクロソフトはこれらハックの使用を抑制し、その代わりにコンディショナルコメントの使用を推奨している。<br />
コンディショナルコメントはIEでのみパースされるコメントで、IE5以上であれば動作する。</p>
<h3>コンディショナルコメントとは</h3>
<pre class="syntax-highlight:html">
&lt;!--[if IE ]&gt;
  &lt;link href=&quot;iecss.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;
</pre>
<p>というようなコメントを指す。<br />
上記のコードだと、もしIEであれば、iecss.cssをロードするという命令になる。</p>
<p>もちろんHTMLのコメントであるため、CSS文書内では利用できない。<br />
つまり、IE7に対して何らかのCSSハックを行う場合は、別のCSSを用意しなければならない。</p>
<p>先ほどの例だとIEに対して全て、という命令になるがIE7だけに限定したい場合は、</p>
<pre class="syntax-highlight:html">
&lt;!--[if IE7 ]&gt;
  &lt;link href=&quot;iecss7.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;
</pre>
<p>とすればいい。</p>
<p>IE5〜IE６まではiecss5-6.cssを、IE7はiecss6.cssを読み込みたいという場合は</p>
<pre class="syntax-highlight:html">
&lt;!--[if lte IE 6]&gt;
  &lt;link href=&quot;iecss5-6.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;
&lt;!--[if lte IE 7]&gt;
  &lt;link href=&quot;iecss7.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;
</pre>
<p>とすればいい。<br />
[if lte IE 6]は、IE6未満に対して〜という意味だ。<strong>lte</strong>はLess Than or Equalの略。</p>
<p>ちなみに</p>
<pre class="syntax-highlight:html">
&lt;!--[if (IE 5)|(IE 5.5)|(IE 6)]&gt;
  &lt;link href=&quot;iecss5-6.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;
&lt;!--[if lte IE 7]&gt;
  &lt;link href=&quot;iecss7.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;
</pre>
<p>というようにしても同じ意味だ。若干面倒なので、普段はこんなことはする必要はないだろう。<br />
<strong>｜</strong>はORという意味だ。</p>
<p>ほかにも、</p>
<ul>
<li><strong>gte</strong>(greater-than or equalの略、以上か同じ場合という意)</li>
<li><strong>!</strong>(Notオペレーター、でない場合という意)</li>
</ul>
<p>というオペレーターも存在する。</p>
<p>実はIE7だけをターゲットにするCSSハックも存在するが、どのハックもCSSバリデートしない。<br />
例えば、</p>
<pre class="syntax-highlight:css">&gt;body {}</pre>
<p>はIE7のみをターゲットにできるし、</p>
<pre class="syntax-highlight:css">html* {}</pre>
<p>ならIE7未満すべてをターゲットできる。</p>
<p>はたまた</p>
<pre class="syntax-highlight:css">*:first-child+html {}</pre>
<p>というのもIE7のみで、</p>
<pre class="syntax-highlight:css">*:first-child+html {} * html {}</pre>
<p>ならIE7未満すべて。</p>
<p>もちろん、IE8になったときにこれらハックが通用するかどうかは定かではない。<br />
IE7のデビュー時にそれまで様々利用してきたハック達を修正するのに苦労した私はマイクロソフトの推奨に準拠して、コンディショナルコメントを利用することをオススメする。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=O1OipJ"><img src="http://feeds.feedburner.com/~f/CssRader?i=O1OipJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=bIdD7j"><img src="http://feeds.feedburner.com/~f/CssRader?i=bIdD7j" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/341605453" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/20/conditional-comments/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/20/conditional-comments/</feedburner:origLink></item>
		<item>
		<title>CSS セレクター - もし宣言が重複したら？</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/371966952/</link>
		<comments>http://css.studiomohawk.com/13/css-selecter-specificity/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 22:53:28 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[selector]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=13</guid>
		<description><![CDATA[CSSの宣言が重複したら？

CSSの仕様のうちでもっとも強力な概念だろうセレクター。
今回はそのセレクターの仕様中の、もし宣言が重複したら、どの宣言が優先されるのかを判断する方法を紹介しよう。]]></description>
			<content:encoded><![CDATA[<h3>セレクターとは？</h3>
<p>CSSセレクターとはHTML文書中、どのタグにスタイルを宣言するかを確定させるための仕様。<br />
この仕様をしっかりと理解しないと、IDやクラスだらけで、セマンティックとはほど遠いマークアップを書かなければならなくなり、同時にCSSも無駄にセレクターが並んでしまって、可搬性や可読性に欠けるCSSとなってしまう。</p>
<p>今回はそのセレクターの仕様の内、もし宣言が重複したら、どの宣言が優先されるのかを判断する方法を紹介しよう。</p>
<h3>CSS宣言の優先順位づけ</h3>
<p>CSSの宣言はまず、</p>
<ol>
<li>タグ内にstyle=&#8221;"</li>
<li>head内にstyle</li>
<li>linkで外部呼び出し</li>
</ol>
<p>上から順に優先順位が高い。</p>
<p>つまり、style.cssというファイルで仮に<br />
h2 { color: red; }<br />
として、<br />
style<br />
h2 { color: blue; }<br />
/style<br />
と宣言し、さらに<br />
h2 style=&#8221;color: black;&#8221;<br />
とすると、このh2のフォントカラーは黒になる。</p>
<h3>では、本題のCSSセレクターの計算式</h3>
<p>#ID = 100<br />
.class = 10<br />
tag = 1</p>
<p>というように数字を割り当て、足し上げで<strong>数が多いほうが優先</strong>される。<br />
例外は!important。!importantは、先ほどの記述場所による優先順位も、計算による優先順位も無視して、最優先される。</p>
<p><strong>例1:</strong> </p>
<ul>
<li>#ID div.class ul li = 100 + 1 + 10 + 1 + 1 = 113</li>
<li>#Id div.class li = 100 + 1 + 10 + 1 = 112</li>
</ul>
<p>記述ミスのようにみえるくらい、同じタグに対して宣言しているが、この様に書いた場合、上の例の方が優先されるわけだ。<br />
ではもう1例紹介しよう。</p>
<p><strong>例2:</strong> </p>
<ul>
<li>#ID #Second = 100 + 100 = 200</li>
<li>#ID .class div.class a.class = 100 + 1 + 10 + 1 + 10 = 122</li>
</ul>
<p>とてもシンプルな考え方なので、何度か自分でもセレクターを<br />
数字に置き換えてみると覚えてしまうだろう。</p>
<p>テキストばかりでピンとこない場合は、<br />
<a href="http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html">CSS: Specificity Wars</a><br />
Star Warsになぞらえて、ビジュアルで解説しているのはこちら。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=vgFLiK"><img src="http://feeds.feedburner.com/~f/CssRader?i=vgFLiK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=omD2Gk"><img src="http://feeds.feedburner.com/~f/CssRader?i=omD2Gk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/371966952" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/13/css-selecter-specificity/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/13/css-selecter-specificity/</feedburner:origLink></item>
		<item>
		<title>Min-height &amp; Min-width IEバグFix</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/328057406/</link>
		<comments>http://css.studiomohawk.com/12/min-height-min-width-ie-bug-fix/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 13:15:50 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[hack]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=12</guid>
		<description><![CDATA[IE(IE7も含む)にはmin-height、min-widthという非常に便利な属性が存在しない。
ボックスモデルバグをはじめとするIEの数々のバグの中でもかなりやっかいなバグであることは間違いない。

非常に便利なmin-height、そしてついでにmin-widthの属性をIEでもきちんと設定できるようになるバグFixを紹介。]]></description>
			<content:encoded><![CDATA[<p>IE(IE7も含む)にはmin-height、min-widthという非常に便利な属性が存在しない。<br />
ボックスモデルバグをはじめとするIEの数々のバグの中でもかなりやっかいなバグであることは間違いない。</p>
<p>とくに動的なサイトを構築する際に、ある特定のブロック要素を最低でも×px以上確保しておきたいという場合など、<br />
min-heightが活躍する場面は枚挙に暇がない。</p>
<p>そんな便利なmin-height、そしてついでにmin-widthの属性をIEでもきちんと設定できるようになるバグFixを紹介。</p>
<p>とても簡単なバグFixなのでちょっと拍子抜けするかもしれない。</p>
<pre class="syntax-highlight:css">selector {
  min-height:500px;
  height:auto !important;
  height:500px;
}</pre>
<p>コードの説明を加える必要もないくらいシンプルな方法だ。<br />
min-heightを設定したい要素に上記のように設定してやればOK。<br />
もちろん、高さの指定は自由だ。</p>
<p>min-widthのほうもまったく同じ</p>
<pre class="syntax-highlight:css">selector {
  min-width:500px;
  width:auto !important;
  width:500px;
}</pre>
<p>参考サイト<br />
<a href="http://www.dustindiaz.com/min-height-fast-hack/">Min-Height Fast Hack</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=CFVs6J"><img src="http://feeds.feedburner.com/~f/CssRader?i=CFVs6J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=Iyiuyj"><img src="http://feeds.feedburner.com/~f/CssRader?i=Iyiuyj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/328057406" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/12/min-height-min-width-ie-bug-fix/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/12/min-height-min-width-ie-bug-fix/</feedburner:origLink></item>
		<item>
		<title>CSSのみでFloatをクリアする - Clearfix</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/326787305/</link>
		<comments>http://css.studiomohawk.com/10/clearing-float-without-extra-markup/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 17:12:46 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[float]]></category>

		<category><![CDATA[hack]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=10</guid>
		<description><![CDATA[CSSレイアウト手法の中でもっとも利用されるfloatは、非常に脆弱で多くのバグを全てのブラウザが抱えている。

そんな中でももっとも頭を抱えるのは、要素のheightが子要素に含まれるfloatのheightと連動しないバグ。
このバグ修正としてもっとも優れたclearfixクラスの紹介とその解説。]]></description>
			<content:encoded><![CDATA[<p>クリアする必要のあるdivなどにclass=&#8221;clearfix&#8221;を追加すれば、<br />
HTMLに{ clear: both }を設定したClassやbr clear=&#8221;all&#8221;などを追加することなくFloatをクリアできる。</p>
<pre class="syntax-highlight:css">
.clearfix { display: inline-block; }
.clearfix:after {
     clear: both;
     content: &quot; &quot;;
     display: block;
     font-size: 0;
     height: 0;
     visibility: hidden;
     }
/* start commented backslash hack \*/
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* close commented backslash hack */
</pre>
<h3>なぜFloatはクリアしなければならないのか？</h3>
<p>Floatした要素をクリアする要因はいくつかあるが、ここではコラムレイアウトを実現するためのFloatをクリアする理由を説明しよう。</p>
<p>例えば2コラムレイアウトをCSSで作成するために</p>
<pre class="syntax-highlight:html">&lt;div id=&quot;header&quot;&gt;&lt;/div&gt;

&lt;div id=&quot;container&quot;&gt;
  &lt;div id=&quot;left&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;main&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;right&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;footer&quot;&gt;&lt;/div&gt;</pre>
<p>というようなHTMLとなったとする。<br />
仮にdiv#leftにfloat:left;、div#rightにfloat:right;を指定したとする。</p>
<ul>
<li>親要素(Parent Element)が例のように子要素(Child Element)にfloat要素のみを含む</li>
<li>div#containerには高さをあらかじめ設定できない(ブログなどは通常設定できない)</li>
</ul>
<p>そんな場面はよくあるが、<br />
この場面でdiv#containerはクリアしなければ、div#containerのheightは子要素のheightと連動しない。<br />
div#containerが単なるボックスである場合、このバグには気がつかないが、背景を敷いていたり、ボーダーを引いていたりすると、表示がおかしくなってしまう(Mozilla系ブラウザバグ)。<br />
<img src="http://css.studiomohawk.com/wp-content/uploads/2008/07/heightzero.gif" alt="" title="heightzero" width="500" height="114" /><br />
具体的には上図のような状態になる。</p>
<h3>.clearfixの説明</h3>
<p>それでは、10数行のCSSがこの仕様にどのように対応しているのか見ていこう。</p>
<ol>
<li>display: inline-block;はIE/Macにおいて、widthを指定しないでfloatするとwidth:100%と同等に指定されるbugを修正。</li>
<li>.clearfix:after〜では擬似クラス:afterを利用し、content: &#8221; &#8220;;でスペースを挿入、そのスペースを、display:blockでブロック要素化(clearはブロックでなければ適応できない)、そしてclear:bothでクリア。念のため、font-size: 0;、height: 0、visibility:hidden;で追加したスペースが余分なスペース表示とならないように設定。(擬似クラスはIEではサポートしていない)</li>
<li>コメントバックスラッシュハックを利用しIE/Macから次行以降をコメントアウト</li>
<li>IEのみを対象に(スターHTMLハック)、height: 1%;でIEで子要素がfloat要素をのみを含む場合でも親要素のheightを調整する仕様を動作させる(ホーリーハック)、このハックはIEの<a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&#038;postId=3645&amp;productId=1&amp;loc=ja">ギロチンバグ</a>も修正する。</li>
<li>1行目で指定したdisplay: inline-block;を IE/Winにて{display: block;}で上書きする</li>
</ol>
<p><strong>参考サイト</strong></p>
<ul>
<li><a href="http://www.positioniseverything.net/easyclearing.html">How To Clear Floats Without Structural Markup</a></li>
<li><a href="http://perishablepress.com/press/2008/02/05/lessons-learned-concerning-the-clearfix-css-hack/">Lessons Learned Concerning the Clearfix CSS Hack</a></li>
<li><a href="http://www.smashingmagazine.com/2007/05/01/css-float-theory-things-you-should-know/">CSS Float Theory: Things You Should Know</a></li>
<li><a href="http://css.maxdesign.com.au/floatutorial/">Floatutorial</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=NbildJ"><img src="http://feeds.feedburner.com/~f/CssRader?i=NbildJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=zQaEMj"><img src="http://feeds.feedburner.com/~f/CssRader?i=zQaEMj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/326787305" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/10/clearing-float-without-extra-markup/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/10/clearing-float-without-extra-markup/</feedburner:origLink></item>
		<item>
		<title>CSSを習得するために必要なリソース群</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/330872532/</link>
		<comments>http://css.studiomohawk.com/9/css-books-and-resources/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 15:00:17 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=9</guid>
		<description><![CDATA[CSSを学ぶために必要なリソース群。

残念ながら日本語圏におけるCSSに関する情報は多くはない。
そんな中でもオススメのサイトと書籍を紹介。

もし他にもおすすめの書籍があれば、コメントにて。]]></description>
			<content:encoded><![CDATA[<h3>CSS辞典</h3>
<p>実は私はCSSの辞典を一冊も買ったことがない。<br />
CSSとHTMLに関しては、ウェブの辞書を利用することが多い。<br />
何しろどちらの開発期間中もブラウザは開きっぱなしだからだ。</p>
<p>そんな際よく利用するのが、<br />
<a href="http://reference.sitepoint.com/css">SitePoint CSS Reference</a><br />
英語のサイトだが、実際に自分で操作できるLiveデモやHackの紹介もあり、かなり詳細な仕様に関してもわかりやすく紹介されている。<br />
プロパティ名での検索も可能で、ふと忘れしてしまった文法などを調べたりする。</p>
<p>日本語圏では、<a href="http://www.openspc2.org/CSS/">スタイルシート リファレンス</a>や<a href="http://www.tohoho-web.com/css/index.htm">とほほのスタイルシート入門</a>などで代替できるはず。</p>
<h3>CSS仕様詳細</h3>
<ul>
<li><a name="evtst|a|4873112192" href="http://www.amazon.co.jp/CSS%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF%E2%80%95Web%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%B4%BB%E7%94%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF%E9%9B%86-%E3%82%AF%E3%83%AA%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%83%BC-%E3%82%B7%E3%83%A5%E3%83%9F%E3%83%83%E3%83%88/dp/4873112192%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dstudiomohaw0f-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4873112192">CSSクックブック―Webデザインのための活用テクニック集</a></li>
<li><a name="evtst|a|487311232X" href="http://www.amazon.co.jp/CSS%E5%AE%8C%E5%85%A8%E3%82%AC%E3%82%A4%E3%83%89-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB-%E3%83%A1%E3%82%A4%E3%83%A4/dp/487311232X%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dstudiomohaw0f-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D487311232X">CSS完全ガイド</a></li>
</ul>
<p>2冊とも若干古いバージョンながら、オライリーらしくかなりマニアックな部分にも言及している。<br />
初心者がいきなり購入すると挫折しかねないくらいのマニアックぶりなので、中上級者向け。</p>
<p>私自身はウェブでCSSの基本を学び、この2冊を何度も繰り返し読み返した。とくにEric Meyer著のCSS完全ガイドに関しては、最新版である3rdエディションも洋書で購入した。<br />
残念ながら3rdエディションはまだ日本語版が発売されていないが、2ndエディションでも十分な知識を得ることができるだろう。</p>
<p>初心者はまず、<a name="evtst|a|4798111414" href="http://www.amazon.co.jp/%E6%A8%99%E6%BA%96Web%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E8%AC%9B%E5%BA%A7-%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%B7%E3%83%BC%E3%83%88-%E5%A4%A7%E8%97%A4-%E5%B9%B9/dp/4798111414%3FSubscriptionId%3D02E5W5871AJF7PMMMS82%26tag%3Dstudiomohaw0f-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798111414">標準Webデザイン講座 スタイルシート (標準Webデザイン講座)</a>などの実践的な本を購入し、実際にコーディングをしながら基礎を学ぶことが最短だろう。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=ic49KJ"><img src="http://feeds.feedburner.com/~f/CssRader?i=ic49KJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=i0Fd4j"><img src="http://feeds.feedburner.com/~f/CssRader?i=i0Fd4j" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/330872532" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/9/css-books-and-resources/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/9/css-books-and-resources/</feedburner:origLink></item>
		<item>
		<title>CSS デバッグワークフロー</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/322597318/</link>
		<comments>http://css.studiomohawk.com/7/css-debug-work-flow/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 14:01:40 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[debug]]></category>

		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=7</guid>
		<description><![CDATA[CSSコーディングにもデバッグは必須。
対象ブラウザに制限されずデバッグするためのワークフローを紹介。

FireFox、IEで利用できるデバッグツールも合わせて紹介しよう。]]></description>
			<content:encoded><![CDATA[<h3>CSSのバグ取りに必要な3つのステップ</h3>
<p>CSSに限らずだが(CSSはプログラミング言語ではないが)、デバッグするためには問題を発見しなければならない。<br />
そういう意味ではCSSでのデバッグは比較的簡単かもしれない。</p>
<p>対象ブラウザでのアウトプットがコーディングした通りであるかどうか？<br />
それだけのことでバグを発見することができる。</p>
<p>では、デバッグの後半パート、修正するための必須ワークフローを紹介しよう。</p>
<p><strong>ステップ1 - HTML、CSSのソースコードの検証(バリデート)</strong></p>
<ol>
<li>HTMLのバリデート(<a href="http://validator.w3.org/">http://validator.w3.org/</a>)</li>
<li>CSSのバリデート(<a href="http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a>)</li>
</ol>
<p>HTMLソースの検証では、&quot;<a href="http://css.studiomohawk.com/4/box-model-ie6-ie7/" title="Box Model - IE6 と IE7">Box Model - IE6 と IE7</a>&quot;で紹介したDOCTYPE宣言などに注意しつつ、初歩的なタグの閉じ忘れ、属性(attribute)のクォート(&#8221;"か&#8221;)閉じ忘れなど、そもそものHTMLでのミスを確認する必要がある。<br />
CSSソースの検証も同様だ。</p>
<p>きっとIEバグが原因だ、と思い込むことが非常に多いので欠かすことのできないステップ</p>
<p><strong>ステップ2 - デバッグ</strong><br />
忘れてはいけないのは、デバッグするためにはバグを見つけ出す必要がある。<br />
CSS、HTMLともに、バグだけが残るようにソースコードを改変するという手法が基本。<br />
具体的には、</p>
<ol>
<li>まず、大きなセクションをカットし、確認</li>
<li>バグがなくなる様であれば、元に戻す。バグがまだ残っていれば次のセクションへ</li>
<li>バグがなくなった場合は、セクションを分割し、カットし、確認</li>
</ol>
<p>というようなフローでバグのあぶり出しをする。</p>
<p>CSSの場合、IE、Firefox、Safariなど対応するべく環境が複数個存在するため、<br />
<strong>まずはFirefoxからスタートすること</strong>をオススメする。<br />
比較的バグの少ないブラウザからデバッグしていくほうが、ブラウザ固有のバグを見つけ出しやすくなる上、<br />
対処も楽にできるからだ。</p>
<p><strong>ステップ3 - デバッグツール</strong><br />
このステップまでにはバグは限りなく少なくなっていることだろう。<br />
実際には、ステップ2とステップ3には明確な境界はなく、デバッグツールを使いながら、ステップ2を行うことが多いだろう。<br />
では、ブラウザごとにデバッグツールを紹介しよう。</p>
<ul>
<li><a href="http://getfirebug.com/">Firebug</a>　CSSデバッグにおいてFirebugほど革命的なアプリケーションは存在しない。ボックスモデルのビジュアルフィードバックや適応されているCSSの指定の確認などができる。とくにCSSの指定のうち、よくバグとなる継承している指定も確認できるのが便利</li>
<li><a href="http://chrispederick.com/work/web-developer/">Web Developer</a>　こちらもFireFoxのアドオン。FireFoxから直接バリデートなど行えたり、ブロック要素のアウトラインを確認できたりできる</li>
<li><a href="http://www.debugbar.com/download.php">DebugBar</a>　IE環境に置いてのFirebugとほぼ同期能を提供しているDebugBar。日本語にも対応しており、IEでのデバッグに欠かせない</li>
<li><a href="http://www.codepoetry.net/archives/2004/02/07/css_debugger_redux.php">CSS Debug Toggle</a>　IEで利用できるブックマークレット。FirefoxのWebDeveloperの機能のうち、ブロック要素のアウトラインをID名、Class名とともに確認できる</li>
<li><a href="http://www.westciv.com/xray/">XRAY</a>　IE6以上、FireFoxでも動作するブックマークレット、こちらはクリックした箇所のブロック要素に含まれる指定を確認できる</li>
</ul>
<p>Safariでのデバッグツールについてはマックユーザではないので、紹介できないが、Safariにはデフォルトでデバッグツールが備わっているということなので、調べてみてほしい。</p>
<p>かなり駆け足でCSSデバッグのフローについて紹介した。<br />
近いうちに、各デバックツールの利用方法なども紹介するつもりだ。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=MhcWgJ"><img src="http://feeds.feedburner.com/~f/CssRader?i=MhcWgJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=lhLetj"><img src="http://feeds.feedburner.com/~f/CssRader?i=lhLetj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/322597318" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/7/css-debug-work-flow/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/7/css-debug-work-flow/</feedburner:origLink></item>
		<item>
		<title>Box ModelバグFix - Tips</title>
		<link>http://feeds.feedburner.com/~r/CssRader/~3/322347147/</link>
		<comments>http://css.studiomohawk.com/5/box-model-bug-fix-tips/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 02:34:11 +0000</pubDate>
		<dc:creator>Yuya</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[boxmodel]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://css.studiomohawk.com/?p=5</guid>
		<description><![CDATA[様々な方法でBox Modelバグに対処し、レイアウトを組んでいることだろう。

今回はブラウザフリーのBox Modelバグを解消するちょっとした、かつ究極のTipsを紹介。]]></description>
			<content:encoded><![CDATA[<h3>ピクセル単位で正確なレイアウトをCSSで実現するために</h3>
<p>Box Modelについてすでに3回目のエントリになったが、CSSでのレイアウト構築ではもっとも重要な概念なので、何度繰り返しても多すぎることはないだろう。</p>
<p>今回は究極のBox ModelバグFixを紹介しよう。</p>
<p><strong>CSSの説明</strong><br />
Divを繰り返すことになるが、<br />
親となるブロック要素にはWidthのみを指定し(1行目)、<br />
子要素で、border、padding、marginのみを指定(５,6行目)</p>
<p>この様に指定してしまえば、すべてのブラウザでBox Modelが<br />
正しく動作することになる。</p>
<p>HTMLにて#header、#main、#sidebar、#footerというような、<br />
構造を持っている場合、それらのブロック要素では、今回紹介したように<br />
paddingなどの指定をしないことをオススメする。</p>
<pre class="syntax-highlight:css">
#main-div{
width: 150px;
}
#main-div div{
border: 5px;
padding: 20px;
}
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/CssRader?a=0U4IfJ"><img src="http://feeds.feedburner.com/~f/CssRader?i=0U4IfJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/CssRader?a=C80Fkj"><img src="http://feeds.feedburner.com/~f/CssRader?i=C80Fkj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CssRader/~4/322347147" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://css.studiomohawk.com/5/box-model-bug-fix-tips/feed/</wfw:commentRss>
		<feedburner:origLink>http://css.studiomohawk.com/5/box-model-bug-fix-tips/</feedburner:origLink></item>
	</channel>
</rss>
