<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>CSS HappyLife ZERO</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/" />
    <link rel="self" type="application/atom+xml" href="http://css-happylifezero.com/feed/all.xml" />
    <id>tag:css-happylifezero.com,2009-07-04://1</id>
    <updated>2010-01-17T06:39:47Z</updated>
    <subtitle>CSS HappyLife ZEROは、CSS初心者・中級者の方を対象にしたリファレンスやレイアウト講座など、CSSに関するアレコレがつまったサイトです。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Commercial 4.261</generator>

<entry>
    <title>border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-top-left-radius</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/property/border-top-right-radius.shtml" />
    <id>tag:css-happylifezero.com,2010:/property//3.337</id>

    <published>2010-01-17T04:05:33Z</published>
    <updated>2010-01-17T06:39:47Z</updated>

    <summary>各角の半径（角丸）を個別に指定</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="B" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css3" label="css3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="css3background" label="css3-background" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/property/">
        <![CDATA[<p>
角の半径（角丸）を個別に指定できるプロパティです。<br />
一括指定する場合は、<a href="/property/border-radius.shtml">border-radiusプロパティ</a>で指定します。
</p>
<p>
なお、border-radiusプロパティを含む、「<a href="http://www.w3.org/TR/css3-background/">CSS Backgrounds and Borders Module Level 3</a>」は現在（2010/01/17） Candidate Recommendation（勧告候補）なので、まだ仕様が変更される可能性が有りますが、勧告候補まで進むとブラウザへの実装を呼びかけることになるため、大きな仕様変更は無いかと思います。<br />
これにタイミングが有ってたのかわかりませんが、Chrome4ではプレフィックス（接頭辞）を付けなくても適用されるみたいです。
</p>]]>
        <![CDATA[<h3>プロパティの解説</h3>

<dl class="explain">
<dt>値</dt>
<dd>
[ &lt;長さ&gt;｜&lt;パーセント&gt; ] [ &lt;長さ&gt;｜&lt;パーセント&gt; ]?｜inherit
</dd>
<dt>初期値</dt>
<dd>
0
</dd>
<dt>適用される要素</dt>
<dd>
全ての要素。ただし、<a href="/property/border-collapse.shtml">border-collapseプロパティ</a>の値が<code>collapse</code>のテーブル要素は除く。
</dd>
<dt>継承</dt>
<dd>
しません
</dd>
<dt>パーセント値</dt>
<dd>
ボーダーボックスに対する割合
</dd>
<dt>メディア</dt>
<dd>
visual
</dd>
</dl>

<p>
Forefoxで実装するにはプロパティにプレフィックス「-moz-」を付ける必要が有り、プロパティ名も独自実装のため仕様とは異なっているので注意が必要です。<br />
WebKit系（SafariやChrome）で実装するには「-webkit-」を付けます。
</p>

<h3>border-radius個別指定のサンプル 01</h3>

<pre class="xhtml">
<code>&lt;div class=&quot;sample01&quot;&gt;
&lt;p class=&quot;radius01&quot;&gt;border-top-right-radius: 15px;&lt;/p&gt;
&lt;p class=&quot;radius02&quot;&gt;border-bottom-right-radius: 15px;&lt;/p&gt;
&lt;p class=&quot;radius03&quot;&gt;border-bottom-left-radius: 15px;&lt;/p&gt;
&lt;p class=&quot;radius04&quot;&gt;border-top-left-radius: 15px;&lt;/p&gt;
&lt;/div&gt;</code>
</pre>

<pre class="css">
<code>.sample01 {
  margin: 20px;
}

.sample01 p {
  padding: 10px;
  background: #333;
  color: #fff;
}

.sample01 p.radius01 {
  -webkit-border-top-right-radius: 15px;
  -moz-border-radius-topright: 15px;
  border-top-right-radius: 15px;
}

.sample01 p.radius02 {
  -webkit-border-bottom-right-radius: 15px;
  -moz-border-radius-bottomright: 15px;
  border-bottom-right-radius: 15px;
}

.sample01 p.radius03 {
  -webkit-border-bottom-left-radius: 15px;
  -moz-border-radius-bottomleft: 15px;
  border-bottom-left-radius: 15px;
}

.sample01 p.radius04 {
  -webkit-border-top-left-radius: 15px;
  -moz-border-radius-topleft: 15px;
  border-top-left-radius: 15px;
}</code>
</pre>

<p>
Firefoxの独自実装はプロパティ名が他と異なっている点に注意して下さい。<br />
このサンプルを今見ているブラウザで表示すると以下のようになります。
</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>

<div class="sample01">
<p class="radius01">border-top-right-radius: 15px;</p>
<p class="radius02">border-bottom-right-radius: 15px;</p>
<p class="radius03">border-bottom-left-radius: 15px;</p>
<p class="radius04">border-top-left-radius: 15px;</p>
</div>

</dd>
<!-- / .browserView --></dl>


<h3>border-radius個別指定のサンプル 02</h3>

<pre class="xhtml">
<code>&lt;div class=&quot;sample02&quot;&gt;
&lt;p class=&quot;radius01&quot;&gt;border-top-right-radius: 50px 5px;&lt;/p&gt;
&lt;p class=&quot;radius02&quot;&gt;border-bottom-right-radius: 100px 15px;&lt;/p&gt;
&lt;p class=&quot;radius03&quot;&gt;border-bottom-left-radius: 8px 45px;&lt;/p&gt;
&lt;p class=&quot;radius04&quot;&gt;border-top-left-radius: 150px 50px;&lt;/p&gt;
&lt;/div&gt;</code>
</pre>

<pre class="css">
<code>.sample02 {
  margin: 20px;
}

.sample02 p {
  padding: 20px;
  background: #00156b url(../img/share/bg_header.gif);
  color: #fff;
}

.sample02 p.radius01 {
  -webkit-border-top-right-radius: 50px 5px;
  -moz-border-radius-topright: 50px 5px;
  border-top-right-radius: 50px 5px;
}

.sample02 p.radius02 {
  -webkit-border-bottom-right-radius: 100px 15px;
  -moz-border-radius-bottomright: 100px 15px;
  border-bottom-right-radius: 100px 15px;
}

.sample02 p.radius03 {
  -webkit-border-bottom-left-radius: 8px 45px;
  -moz-border-radius-bottomleft: 8px 45px;
  border-bottom-left-radius: 8px 45px;
}

.sample02 p.radius04 {
  -webkit-border-top-left-radius: 150px 50px;
  -moz-border-radius-topleft: 150px 50px;
  border-top-left-radius: 150px 50px;
}</code>
</pre>

<p>
値を二つ指定すると、前が水平方向の半径を指定し、後ろが垂直方向の半径を指定できます。<br />
このサンプルを今見ているブラウザで表示すると以下のようになります。
</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>

<div class="sample02">
<p class="radius01">border-top-right-radius: 50px 5px;</p>
<p class="radius02">border-bottom-right-radius: 100px 15px;</p>
<p class="radius03">border-bottom-left-radius: 8px 45px;</p>
<p class="radius04">border-top-left-radius: 150px 50px;</p>
</div>

</dd>
<!-- / .browserView --></dl>

<p>
<img src="/img/property/border-top-right-radius.gif" alt="どういう曲線を書くかの図" class="imgL" />何となく、どう指定すればどういう曲線を描くのかわかるかもですが、図で描くと左記のような感じです。<br />
よく分かんない場合色々試してみてください。
</p>
<p>
こんな感じで色々楽しめるので個人サイト等では自由に使っていけると思いますが、現状ではブラウザによる実装状況もまちまちなので、その辺りも確認しながら使った方が良いかと思います。
</p>
]]>
    </content>
</entry>

<entry>
    <title>仕様策定のプロセス</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/basic/process.shtml" />
    <id>tag:css-happylifezero.com,2010:/basic//2.336</id>

    <published>2010-01-17T01:50:58Z</published>
    <updated>2010-01-17T07:30:35Z</updated>

    <summary>仕様が勧告されるまでのプロセスを簡単に説明しています。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/basic/">
        <![CDATA[<p>どのステータスが何なのかど忘れするのでメモがてら。</p>

<p>Web標準の中心的な役割を果たしている<a href="http://www.w3.org/">W3C</a>が策定する仕様書は、多くのプロセスを踏んで最終的に「Recommendation（勧告）」となります。<br />
このプロセスは次のようになっています。</p>

<ol>
<li>Working Draft（WD、草案）</li>
<li>Last Call（LC、最終草案）</li>
<li>Candidate Recommendation（CR、勧告候補）</li>
<li>Proposed Recommendation（PR、勧告案）</li>
<li>W3C Recommendation（REC、勧告）</li>
</ol>

<p>こんな感じで、最初のWorking Draftから始まり、進捗状況に応じてステータスが変わっていく訳ですが、ステータスが一度上がっても戻る可能性も有るので、時々、W3Cの「<a href="http://www.w3.org/Style/CSS/current-work">CSS: Current Work</a>」にて状況を確認してみると良いかなと思います。</p>

<p>これらのステータスですが、Candidate Recommendation（勧告候補）まで進むと、実装を呼びかけることになるので、ブラウザの実装が進むかと思います。</p>]]>
        
    </content>
</entry>

<entry>
    <title>基本的な2カラムレイアウト</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/dl/layout/2/" />
    <id>tag:css-happylifezero.com,2010:/dl//8.322</id>

    <published>2010-01-12T02:20:59Z</published>
    <updated>2010-01-13T05:41:51Z</updated>

    <summary>レイアウト講座の基本的な2カラムレイアウトの完成済みのサンプルです。 サンプルを...</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="レイアウト講座のサンプル" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/dl/">
        <![CDATA[<p>レイアウト講座の<a href="/layout/basic_2column_fixed/">基本的な2カラムレイアウト</a>の完成済みのサンプルです。</p>

<ul class="example">
<li class="view"><a href="/layout/basic_2column_fixed/sample/">サンプルを見る</a></li>
<li class="dl"><a href="/layout/basic_2column_fixed/sample.zip">サンプルのダウンロード（4 KB）</a></li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>06. フッターの作成と調整をして完成</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/layout/basic_2column_fixed/06.shtml" />
    <id>tag:css-happylifezero.com,2010:/layout//7.320</id>

    <published>2010-01-11T10:06:04Z</published>
    <updated>2010-01-17T06:43:49Z</updated>

    <summary>最後にフッターの作成と#contentsの作成、諸々の調整をして完成です。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="基本的な2カラムレイアウト" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/layout/">
        <![CDATA[<p>
2カラムっぽくなりだいぶ形になってきました。<br />
次は、メインの横に流し込まれてしまっているフッターを調整します。
</p>

<h3>フッターの作成</h3>
<p>
フッターのスタイルはヘッダーと同じく「module.css」に書いていきます。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  #footer
-------------------------------------------------------- */
#footer {
  clear: both;
  width: 830px;
  margin-bottom: 15px;
  padding: 15px;
  background: #2e69ab;
}

#footer .copyright {
  text-align: center;
  color: #fff;
}</code>
</pre>

<p>
このフッターで一番のポイントとなってくるのが<a href="/property/clear.shtml">clearプロパティ</a>の指定です。この指定をする事で、フッター部分が横に流し込まれずメインの下に表示されます。
</p>
<p>
全体の横幅は<code>860px</code>ですが、フッターは<code>830px</code>と指定しているのは、左右パディングの15pxが足されて実際には<code>890px</code>となってしまうからです。<br />また、一見widthプロパティの指定はいらないように見えますが、指定が無いとIEで不自然な上パディングができてしまいます（<a href="/property/zoom.shtml">zoomプロパティ</a>でも対応出来ます）。
</p>

<ul class="example">
<li class="view"><a href="sample_06/">ここまでのサンプルを見る</a></li>
<li class="view"><a href="sample_06_ie/">IE6, 7でダメなサンプル</a></li>
</ul>

<p>
これで、フッターまで完成しました。もう一息で完成です。
</p>

<h3>#contentsの作成</h3>

<p>
順番的に、メインとサブを作っているタイミングでも良かったんですが、実際に組んでいるとそんなに効率よく書けなかったりして<code>#contents</code>が後になり、その後さらにメインとサブを調整したりするんでここに来て<code>#contents</code>の作成に入ります。
</p>
<p>
最初に見た<a href="sample/">完成形</a>にするために、<code>#contents</code>に必要な指定をします。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  #contents
-------------------------------------------------------- */
#contents {
  float: left;
  width: 830px;
  margin-bottom: 15px;
  padding: 15px;
  background: #2e69ab;
}</code>
</pre>

<p>
ここで重要なのは<code>float: left;</code>と<code>width: 830px;</code>の指定です。特にfloatプロパティの指定が大切で、この指定が無いと背景色が表示されなくなってしまいます。
</p>
<p>
これらの指定をした状態を実際のブラウザで見ると以下のようになり、ブラウザによって表示が異なってきます。
</p>

<ul class="example">
<li class="view"><a href="sample_07/">ここまでのサンプル</a></li>
</ul>

<p>
このままでは当然ダメなので、メインとサブの調整をします。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  #main
-------------------------------------------------------- */
#main {
  float: left;
  width: 515px;
  padding: 15px;
  background: #fff;
}

/* -----------------------------------------------------------
  #sub
----------------------------------------------------------- */
#sub {
  float: right;
  width: 270px;
  color: #fff;
}</code>
</pre>

<p>
この調整で、2カラムレイアウトは完成です。
</p>

<ul class="example">
<li class="view"><a href="sample_08/">調整したサンプル</a></li>
</ul>

<h3>メイン内の作成</h3>
<p>
メイン内の各要素にスタイルを当てます。
</p>

<pre class="css">
<code>#main table,#main ol,#main ul,#main dl,#main blockquote,#main pre,#main p {
  margin-bottom: 10px;
}

#main .pageTop {
  clear: both;
  margin: 0;
  text-align: right;
}

#main h2 {
  margin: 0 0 10px;
  padding-bottom: 3px;
  border-bottom: 5px solid #2e69ab;
  font-size: 120%;
}

#main h3 {
  margin: 30px 0 10px;
  padding-left: 5px;
  border-left: 5px solid #2e69ab;
  font-size: 110%;
}</code>
</pre>

<p>
これで、ほぼ全てが完了です。
</p>

<h3>おまけの角丸</h3>
<p>
最後にちょっとしたおまけとして、CSS3を使って角丸を作成します。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  角丸
-------------------------------------------------------- */
#header,
#footer,
#contents,
#main {
  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}</code>
</pre>

<p>
border-radiusプロパティの指定をすることで、Firefox3～、Safari3～、Chrome辺りで見た場合に指定された要素の角が丸くなってくれます。<br />
情報に支障を与える訳ではないので、個人サイト等なら使っていけるプロパティかと思います。<br />
ちなみに、Operaは10.5、IEは9で対応予定っぽいです。<br />
角丸の詳細に関しては「<a href="/property/border-radius.shtml">border-radiusプロパティ</a>」でご確認ください。
</p>
<p>
何はともあれ、以上で全て完成となります。<br />
お疲れさまでしたっ！
</p>

<ul class="example">
<li class="view"><a href="sample/">完成したサンプル</a></li>
<li class="dl"><a href="sample.zip">完成したサンプルのダウンロード</a></li>
</ul>

<h3>あとがき的な</h3>
<p>
分かってる人からすると非常に簡単なサンプルでしたが、書いてて思うのは実際にこのレイアウトから説明が必要な人は、この説明でどの程度分かってもらえるのか。もしくは、説明が冗長過ぎてかえって分かり難いのか...等々色んな課題が残ります。<br />
感想等有ればくださいませ。
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>05. メインとサイドを2カラムに</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/layout/basic_2column_fixed/05.shtml" />
    <id>tag:css-happylifezero.com,2010:/layout//7.319</id>

    <published>2010-01-11T09:38:42Z</published>
    <updated>2010-01-11T13:28:07Z</updated>

    <summary>キモとなる2カラム部分です。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="基本的な2カラムレイアウト" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/layout/">
        <![CDATA[<p>
ここまで完成したら、いよいよ2カラム部分に入ります。
</p>

<h3>floatとwidthの指定</h3>
<p>
最初に軽く触れたように、ここで<a href="/property/float.shtml">floatプロパティ</a>の指定をして2カラムを作成していきます。<br />
まずは、<code>#main</code>から指定します。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  #main
-------------------------------------------------------- */
#main {
  float: left;
  width: 570px;
  background: #ccf;
}</code>
</pre>

<p>
これで、<code>#main</code>が左フロートし、サイドバーとフッターが右側に流し込まれます。<br />
<a href="/property/background.shtml">backgroundプロパティ</a>で背景色の指定をしているのは、横幅を分かりやすくするためです。
</p>

<ul class="example">
<li class="view"><a href="sample_04/">左フロートさせたサンプル</a></li>
</ul>

<p>
続いて、<code>#sub</code>にもfloatプロパティとwidthプロパティの指定をします。
</p>

<pre class="css">
<code>/* -----------------------------------------------------------
  #sub
----------------------------------------------------------- */
#sub {
  float: right;
  width: 270px;
  background: #ccc;
}</code>
</pre>

<p>
<code>#main</code>と同様に<code>#sub</code>も<code>float: left;</code>と指定しても問題ありませんが、<code>left</code>にした場合、メインとサブ間でマージンの調整が必要になってくるので今回は<code>right</code>にしています。
</p>

<ul class="example">
<li class="view"><a href="sample_05/">#subもフロートさせたサンプル</a></li>
</ul>

<p>
これで、だいぶ2カラムっぽくなりましたが、フッターまでメインの横に流し込まれているので、次はソレの対応と諸々の調整やデザインを整えます。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>04. 全体のセンタリングとヘッダーの作成</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/layout/basic_2column_fixed/04.shtml" />
    <id>tag:css-happylifezero.com,2010:/layout//7.318</id>

    <published>2010-01-11T08:33:43Z</published>
    <updated>2010-01-11T09:46:25Z</updated>

    <summary>2カラムの前に全体をセンタリングさせ、ヘッダーを完成させます。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="基本的な2カラムレイアウト" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/layout/">
        <![CDATA[<p>
デフォルトスタイルのリセットが完了したら、大枠から徐々にスタイルを当てていきます。
</p>

<h3>全体をセンタリング</h3>
<p>
全体をセンタリングさせるには、全体を囲っているdiv要素の<code>#page</code>に、下記のように<a href="/property/width.shtml">widthプロパティ</a>で横幅の指定をし、<a href="/property/margin.shtml">marginプロパティ</a>で左右のマージンを<code>auto</code>と指定します。
</p>
<p>
この指定は「style.css」の30行目辺りに#pageとコメントが有るのでその直後にスタイルを書くようにします。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  #page
-------------------------------------------------------- */
#page {
  width: 860px;
  margin: 0 auto;
  text-align: left;
}</code>
</pre>

<p>
これで全体がセンタリングされます。
</p>
<p>
なお、IE5.xやIE6の互換モードでは、左右マージンの値を<code>auto</code>にしてもセンタリングされませんが、<code>text-align: center;</code>の指定をするとブロックレベル要素がセンタリングされるバグが有り、これを利用してセンタリングさせます。<br />
具体的には、body要素に<code>text-align: center;</code>の指定をすると、子要素である<code>#page</code>がセンタリングされます。このままだとテキストもセンタリングされてしまうので、<code>text-align: left;</code>の指定をする事でテキストを左寄せに戻します。<br />
IE5.xやIE6の互換モードは対応ブラウザに含めていないので、別にいいんですが、最低限の対応として一応行っています。（この部分の内容はHTML5でいうとaside要素でマークアップ出来ますね。）
</p>

<h3>ヘッダーの作成</h3>
<p>
次はヘッダーに取り掛かります。<br />
ヘッダーのスタイルは「style.css」ではなく「module.css」に書くようにします。
</p>

<pre class="css">
<code>/* --------------------------------------------------------
  #header
-------------------------------------------------------- */
#header {
  margin: 15px 0;
  padding: 15px;
  background: #2e69ab;
  color: #fff;
}

#header h1 {
  font-size: 125%;
}</code>
</pre>

<p>
ヘッダー部分ではデザイン用の指定が有るだけなので、レイアウト関係で特にポイントとなる部分は有りません。<br />
分からないプロパティが有る場合は、「<a href="/property/">プロパティ</a>」から調べて頂ければと思います。
</p>
<p>
ここまでのスタイルを適用させると、下記のようになっています。
</p>

<ul class="example">
<li class="view"><a href="sample_03/">ここまでのサンプルを見る</a></li>
</ul>

<p>
センタリングされ、ヘッダー部分が完成しました。次は、肝となってくる2カラム部分です。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>03. デフォルトスタイルをリセット</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/layout/basic_2column_fixed/03.shtml" />
    <id>tag:css-happylifezero.com,2010:/layout//7.317</id>

    <published>2010-01-11T07:56:37Z</published>
    <updated>2010-01-11T09:45:19Z</updated>

    <summary>ブラウザがデフォルトで持っているスタイルをリセットします。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="基本的な2カラムレイアウト" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/layout/">
        <![CDATA[<p>HTMLファイルの準備が完了したら、ブラウザ側で予め当たっているデフォルトスタイルをリセットして差異を埋める必要が有ります。<br />
そのために、ここではボクが普段使っている<a href="/dl/new_site/hirasawa_default_css/">default.css</a>を使ってリセットします。</p>

<p>このdefault.cssは先ほどダウンロードした一式に入っていますので、これを適用させます。<br />
適用させるには、head要素内のlink要素によってCSSファイルを読み込んでいる部分（18行目）のパスを以下のように「_」から「.」に変更します。</p>

<pre class="xhtml">
<code>&lt;link rel=&quot;stylesheet&quot; href=&quot;_/css/import.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;
↓↓↓↓
&lt;link rel=&quot;stylesheet&quot; href=&quot;./css/import.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;</code>
</pre>

<p>これで、default.cssが適用されたのが確認できるかと思います。<br />
なお、default.css以外のCSSファイルには特に指定をしていないため、これと言った変化は有りませんが、import.cssを通して他のCSSファイルも実際には読み込まれています。</p>

<ul class="example">
<li class="view"><a href="sample_02/">default.cssが適用された状態</a></li>
</ul>

<p>ここまで完成したら、いよいよレイアウト部分に入ります。</p>]]>
        
    </content>
</entry>

<entry>
    <title>02. HTMLを書く</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/layout/basic_2column_fixed/02.shtml" />
    <id>tag:css-happylifezero.com,2010:/layout//7.316</id>

    <published>2010-01-10T16:01:44Z</published>
    <updated>2010-01-11T09:44:27Z</updated>

    <summary>HTMLファイルが無ければCSSを当てれないので、まずはHTMLファイルを準備します。ここでマークアップ済みのHTMLファイルもDL出来ます。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="基本的な2カラムレイアウト" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/layout/">
        <![CDATA[<p>
CSSによるレイアウトをする以上、必須になってくるのがHTMLです。<br />
という事で、CSSに入る前に基本的な2カラムレイアウトを作成するのに必要なHTMLファイルを用意します。
</p>

<pre class="xhtml">
<code>&lt;div id=&quot;page&quot;&gt;

&lt;div id=&quot;header&quot;&gt;
&lt;!-- / #header --&gt;&lt;/div&gt;


&lt;div id=&quot;contents&quot;&gt;

&lt;div id=&quot;main&quot;&gt;
&lt;!-- / #main --&gt;&lt;/div&gt;

&lt;div id=&quot;sub&quot;&gt;
&lt;!-- / #sub --&gt;&lt;/div&gt;

&lt;!-- / #contents --&gt;&lt;/div&gt;


&lt;div id=&quot;footer&quot;&gt;
&lt;!-- / #footer --&gt;&lt;/div&gt;

&lt;!-- / #page --&gt;&lt;/div&gt;</code>
</pre>

<p>
レイアウトに関する要素のみだと上記のような構造になっており、このレイアウト用のdiv要素にスタイルを当てていきます。<br />
HTMLの構造を見てもらうと、<code>div id="contents"</code>内に<code>div id="main"</code>と<code>div id="sub"</code>が内包されているのが確認出来ます。この<code>div id="contents"</code>が無くとも2カラムにする事は可能ですが、デザイン性を持たせた際に必要になったり、レイアウト崩れやバグの誘発を防ぐために必要になってきます。<br />
また、2カラムを作成するだけなら<code>div id="page"</code>は不要な場合も有りますが、全体の横幅を決めたりセンタリングするのに使うので実用性を考えると必要になってきます。
</p>
<p>
このように、カラムレイアウトを作成するにはHTMLの構造が重要で構造が滅茶苦茶だと思うように組めなかったり後から追加したりと大変です。また、デザインによってはdiv要素を追加したりする必要が有りますが、今回程度のデザインなら追加する必要は有りません。
</p>
<p>
んでは、構造がざっくりと分かった所で、スタイルが当たる前のマークアップ済みHTMLファイルとCSSファイルが入っている一式を下記に用意していますので、ダウンロードしてお使い下さい。
</p>

<ul class="example">
<li class="view"><a href="sample_01/">HTMLを見る</a></li>
<li class="dl"><a href="sample_01.zip">HTMLファイルとか一式をDL</a></li>
</ul>

<p>
ダウンロードしたzipファイルを解凍すると「sample_01」というフォルダが出来ます。その中に「index.html」とcssフォルダが入ってますので、まずはindex.htmlをブラウザで表示させつつ、テキストエディタ（やオーサリングツール）でも開いて下さい。<br />
ブラウザで見ると、上記<a href="sample_01/">HTMLを見る</a>のように、CSSが当たっていない状態で表示されます。
</p>
<p>
これでHTMLファイルの準備が完了したので、次からCSSを書き始めます。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>border-radius</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/property/border-radius.shtml" />
    <id>tag:css-happylifezero.com,2009:/property//3.302</id>

    <published>2009-12-07T10:15:44Z</published>
    <updated>2010-01-17T06:45:19Z</updated>

    <summary>四つ角の半径（角丸）を一括指定</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="B" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css3" label="css3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="css3background" label="css3-background" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/property/">
        <![CDATA[<p>
border-radiusプロパティは、四つ角の半径を一括指定できるショートハンドプロパティです。<br />
これにより、指定した要素の角を角丸にする事ができます。
</p>
<p>
角を丸くするだけなのにこのプロパティが使えるだけで、角丸なサイトのデザイン再現用のdiv要素が減り、コーディングもかなり楽になってきます。<br />
とはいえ、角丸は情報を提供するだけなら有っても無くても変わりませんが、ユーザーに与える印象は大きく異なってきます。なので、IEユーザーが多い現状では、デザインとして重要な部分は従来通り背景画像にするなど、訪れるユーザーの事も考慮しながら使うと良いかと思います。
</p>
<p>
なお、border-radiusプロパティを含む、「<a href="http://www.w3.org/TR/css3-background/">CSS Backgrounds and Borders Module Level 3</a>」は現在（2010/01/17） Candidate Recommendation（勧告候補）なので、まだ仕様が変更される可能性が有りますが、勧告候補まで進むとブラウザへの実装を呼びかけることになるため、大きな仕様変更は無いかと思います。<br />
これにタイミングが有ってたのかわかりませんが、Chrome4ではプレフィックス（接頭辞）を付けなくても適用されるみたいです。
</p>]]>
        <![CDATA[<p class="supplement">
Operaは10.5、IEは9で対応予定らしいです。
</p>

<h3>プロパティの解説</h3>

<dl class="explain">
<dt>値</dt>
<dd>
[ &lt;長さ&gt;｜&lt;パーセント&gt; ]{1,4} [ / [ &lt;長さ&gt;｜&lt;パーセント&gt; ]{1,4} ]?｜inherit
</dd>
<dt>初期値</dt>
<dd>
0
</dd>
<dt>適用される要素</dt>
<dd>
全ての要素。ただし、<a href="/property/border-collapse.shtml">border-collapseプロパティ</a>の値が<code>collapse</code>のテーブル要素は除く。
</dd>
<dt>継承</dt>
<dd>
しません
</dd>
<dt>パーセント値</dt>
<dd>
ボーダーボックスに対する割合
</dd>
<dt>メディア</dt>
<dd>
visual
</dd>
</dl>

<p>
border-radiusプロパティは、Forefoxで実装するにはプロパティにプレフィックス「-moz-」を付ける必要が有り、WebKit系（SafariやChrome）で実装するには「-webkit-」を付けます。
</p>

<h3>border-radiusのサンプル 01</h3>

<pre class="xhtml">
<code>&lt;div class=&quot;sample01&quot;&gt;
&lt;p class=&quot;radius01&quot;&gt;border-radius: 10px;&lt;/p&gt;
&lt;p class=&quot;radius02&quot;&gt;-webkit-border-radius: 10px;&lt;/p&gt;
&lt;p class=&quot;radius03&quot;&gt;-moz-border-radius: 10px;&lt;/p&gt;
&lt;/div&gt;</code>
</pre>

<pre class="css">
<code>.sample01 p {
  margin: 20px;
  padding: 15px;
  background: #00208b;
  color: #fff;
}

.sample01 p.radius01_01 {
  border-radius: 10px;
}

.sample01 p.radius01_02 {
  -webkit-border-radius: 10px;
}

.sample01 p.radius01_03 {
  -moz-border-radius: 10px;
}</code>
</pre>

<p>
まずは、もっとも簡単なサンプルで同じように四つ角の半径を指定しています。<br />
ちなみに、border-radiusとはいえ背景色の指定などが有ればボーダーの指定が無くても大丈夫です。
</p>
<p>
このサンプルを今見ているブラウザで表示すると以下のようになります。
</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>

<div class="sample01">
<p class="radius01">border-border-radius: 10px;</p>
<p class="radius02">-webkit-border-radius: 10px;</p>
<p class="radius03">-moz-border-radius: 10px;</p>
</div>

</dd>
<!-- / .browserView --></dl>

<h3>border-radiusのサンプル 02</h3>

<pre class="xhtml">
<code>&lt;div class=&quot;sample02&quot;&gt;
&lt;p class=&quot;radius01&quot;&gt;border-radius: 5px 10px 50px 20px;。値4つのサンプルです。&lt;/p&gt;
&lt;p class=&quot;radius02&quot;&gt;-webkit-border-radius: 5px 10px 50px 20px;。値4つのサンプルです。&lt;/p&gt;
&lt;p class=&quot;radius03&quot;&gt;-moz-border-radius: 5px 10px 50px 20px;。値4つのサンプルです。&lt;/p&gt;
&lt;p class=&quot;radius04&quot;&gt;border-border-radius: 5px 20px;。値2つのサンプルです。&lt;/p&gt;
&lt;p class=&quot;radius05&quot;&gt;-webkit-border-radius: 5px 20px;。値2つのサンプルです。&lt;/p&gt;
&lt;p class=&quot;radius06&quot;&gt;-moz-border-radius: 5px 20px;。値2つのサンプルです。&lt;/p&gt;
&lt;/div&gt;</code>
</pre>

<pre class="css">
<code>.sample02 p {
  margin: 20px;
  padding: 15px;
  border: 5px solid #e17b1b;
}

.sample02 p.radius06,
.sample02 p.radius05,
.sample02 p.radius04 {
  border-color: #008d3b;
}

.sample02 p.radius01 {
  border-radius: 5px 10px 50px 20px;
}

.sample02 p.radius02 {
  -webkit-border-radius: 5px 10px 50px 20px;
}

.sample02 p.radius03 {
  -moz-border-radius: 5px 10px 50px 20px;
}

.sample02 p.radius04 {
  border-radius: 5px 20px;
}

.sample02 p.radius05 {
  -webkit-border-radius: 5px 20px;
}

.sample02 p.radius06 {
  -moz-border-radius: 5px 20px;
}</code>
</pre>

<p>
今度は、個別に半径を指定したサンプルです。<br />
このサンプルを今見ているブラウザで表示すると以下のようになります。
</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>

<div class="sample02">
<p class="radius01">border-radius: 5px 10px 50px 20px;。値4つのサンプルです。</p>
<p class="radius02">-webkit-border-radius: 5px 10px 50px 20px;。値4つのサンプルです。</p>
<p class="radius03">-moz-border-radius: 5px 10px 50px 20px;。値4つのサンプルです。</p>
<p class="radius04">border-border-radius: 5px 20px;。値2つのサンプルです。</p>
<p class="radius05">-webkit-border-radius: 5px 20px;。値2つのサンプルです。</p>
<p class="radius06">-moz-border-radius: 5px 20px;。値2つのサンプルです。</p>
</div>

</dd>
<!-- / .browserView --></dl>

<p>
Safari4では、四つ角を個別に指定するとまったく反映されず、値が2つの場合だと変な角丸になってしまい、指定した通りには反映されないようです。また、Chrome4でも値が2の場合にプレフィックスを付けていると変な角丸になるようです。<br />
これらの事から、現状では値は1つにしておくのが良いかと思いますが、値を2つ書く場合、以下のように宣言は独自実装から先に記述した方が良さそうです。
</p>

<pre class="css">
<code>p.sample {
  -moz-border-radius: 5px 20px;
  -webkit-border-radius: 5px 20px;
  border-radius: 5px 20px;
}</code>
</pre>

<h3>border-radiusのサンプル 03</h3>

<pre class="xhtml">
<code>&lt;div class=&quot;sample03&quot;&gt;
&lt;p class=&quot;radius01&quot;&gt;border-radius: 10px / 50px;&lt;/p&gt;
&lt;p class=&quot;radius02&quot;&gt;-webkit-border-radius: 10px / 50px;&lt;/p&gt;
&lt;p class=&quot;radius03&quot;&gt;-moz-border-radius: 10px / 50px;&lt;/p&gt;
&lt;/div&gt;</code>
</pre>

<pre class="css">
<code>.sample03 p {
  margin: 20px;
  padding: 15px;
  background: #666;
  color: #fff;
}

.sample03 p.radius01 {
  border-radius: 10px / 50px;
}

.sample03 p.radius02 {
  -webkit-border-radius: 10px / 50px;
}

.sample03 p.radius03 {
  -moz-border-radius: 10px / 50px;
}</code>
</pre>

<p>
値を半角スラッシュ（<code>/</code>）で区切って指定すると、スラッシュより前が水平方向の半径を指定し、後ろが垂直方向の半径を指定します。なので、この場合だと小カッコ () のような角丸になります。
</p>
<p>
このサンプルを今見ているブラウザで表示すると以下のようになります。
</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>

<div class="sample03">
<p class="radius01">border-radius: 10px / 50px;</p>
<p class="radius02">-webkit-border-radius: 10px / 50px;</p>
<p class="radius03">-moz-border-radius: 10px / 50px;</p>
</div>

</dd>
<!-- / .browserView --></dl>

<p>
こんな感じで色々楽しめるので個人サイト等では使っていける感じですが、<code> / </code>を使って指定した場合もSafari4では全く反映されなくなってしまったりと、現状ではブラウザによる実装具合の関係からも使う場合は注意が必要です。
</p>]]>
    </content>
</entry>

<entry>
    <title>色の指定に関して</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/basic/color.shtml" />
    <id>tag:css-happylifezero.com,2009:/basic//2.268</id>

    <published>2009-11-09T17:12:17Z</published>
    <updated>2010-05-05T04:42:30Z</updated>

    <summary>背景色などの色を指定する方法に関しての説明です。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/basic/">
        <![CDATA[<p>
colorプロパティやbackground-colorプロパティ等で指定する色の値は、「キーワード」もしくは「RGB値」で指定する必要が有ります。
</p>
<p>
まずは簡単なサンプルを見てください。
</p>

<pre class="css">
<code>p {
  color: #2a2a2a; /* RGB値（16進数、6桁） */
}
p.att {
  color: red; /* キーワード */
}</code>
</pre>

<p>
こんな感じで、RGB値で指定する場合は、16進法の数値の前にシャープ（<code>#</code>）を必ず付けます。<br />
キーワード指定の場合、シャープを付けてはいけません。<br />
また、大文字、小文字の区別が行われないので、#F00と書いても、#f00と書いても問題ありません。
</p>

<h3>指定方法</h3>

<h4>RGB値（16進数、6桁）</h4>
<pre class="css">
<code>p {
  color: #333333;
}</code>
</pre>
<p>
RGB値の各値を6桁の16進数（0～f）で指定します。
</p>

<h4>RGB値（16進数、3桁）</h4>
<pre class="css">
<code>p {
  color: #f30;
}</code>
</pre>
<p>
RGB値の各値を3桁の16進数（0～f）で指定します。<br />
3桁の場合は、二度繰り返した6桁の16進数と同じです。<br />
上記の場合だと、「#ff3300」と同じになります。
</p>

<h4>RGB値（10進数）</h4>
<pre class="css">
<code>p {
 color: rgb(255,0,0);
}</code>
</pre>

<p>
「rgb()」関数を利用して、RGB値の各値の10進数（0～255）を半角カンマ（<code>,</code>）で区切って指定します。<br />
尚、255以上の値を指定した場合は、255として解釈されます。
</p>

<h4>RGB値（パーセンテージ値）</h4>
<pre class="css">
<code>p {
 color: rgb(100%,20%,0%);
}</code>
</pre>

<p>
10進数と同様ですが、こちらは<code>%</code>で指定します。<br />
尚、100以上の値を指定した場合は、100として解釈されます。
</p>

<h4>キーワード指定</h4>
<pre class="css">
<code>p {
 color: green;
}</code>
</pre>

<p>
あらかじめ決められたキーワードを指定する事で該当の色が反映されます。
</p>

<h3>色のキーワード</h3>
<p>
キーワードでは、HTML 4で定義済みの16色＋CSS2.1で新たに追加された<code>orange</code>が指定できます。
</p>
<ul>
<li>black <span style="color:black">■色■</span></li>
<li>silver <span style="color:silver">■色■</span></li>
<li>gray <span style="color:gray">■色■</span></li>
<li>white <span style="color:white">■色■</span></li>
<li>maroon <span style="color:maroon">■色■</span></li>
<li>red <span style="color:red">■色■</span></li>
<li>purple <span style="color:purple">■色■</span></li>
<li>fuchsia <span style="color:fuchsia">■色■</span></li>
<li>green <span style="color:green">■色■</span></li>
<li>lime <span style="color:lime">■色■</span></li>
<li>olivie <span style="color:olivie">■色■</span></li>
<li>yellow <span style="color:yellow">■色■</span></li>
<li>navy <span style="color:navy">■色■</span></li>
<li>blue <span style="color:blue">■色■</span></li>
<li>teal <span style="color:teal">■色■</span></li>
<li>aqua <span style="color:aqua">■色■</span></li>
<li>orange <span style="color:orange">■色■</span></li>
</ul>
<p>
他に、システムカラーなども指定できます。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>ボックスモデル</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/basic/box.shtml" />
    <id>tag:css-happylifezero.com,2009:/basic//2.255</id>

    <published>2009-10-08T03:06:08Z</published>
    <updated>2009-11-09T08:00:48Z</updated>

    <summary>ボックスモデルの概念やマージンの相殺に関して書いてます。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/basic/">
        <![CDATA[<h3>ボックスモデルの概念</h3>

<p><img src="/img/basic/box_model.gif" alt="図：ボックスモデルの概念" class="imgR" />文書内のすべての要素は、ボックスと呼ばれる四角形の領域を生成します。</p>

<p>各ボックスは、テキストや画像などの内容領域（Content Area）を持っており、その周辺に、パディング（Padding）、ボーダー（Border）、マージン（Margin）の順に周辺領域を持つ事が有ります。領域の大きさは、各プロパティによって指定する事ができます。</p>

<p>また、この各領域の境界を「辺」（Edge）と呼びます。この「辺」は上下左右の4辺に分ける事が可能で、それぞれにスタイルを指定する事ができます。</p>

<h3>内容領域（Content Area）</h3>

<p>テキストや画像などが表示される領域です。<br />
この内容領域の、幅は<a href="/property/width.shtml">widthプロパティ</a>、高さは<a href="/property/height.shtml">heightプロパティ</a>を指定する事で任意の幅と高さにする事ができます。<br />
また、<a href="/property/background.shtml">backgroundプロパティ</a>の指定が有る場合、内容領域とパディングに背景が表示されます。</p>

<h3>パディング（Padding）</h3>

<p>内容領域とボーダーの間にある余白がパディングです。パディングの指定は、<a href="/property/padding.shtml">paddingプロパティ</a>で行います。<br />
backgroundプロパティの指定が有る場合、パディング部分にも背景が表示され、パディング領域の左上が背景画像の始点になります。なお、IE6, 7はボーダー領域の左上を背景画像の始点にしてしまうので、ボーダーの太さ分背景画像の位置がずれてしまいます。</p>

<h3>ボーダー（Border）</h3>

<p>パディングの外側にある領域をボーダーと呼びます。<br />
ボーダーは余白とは違っており、その名の通り「線」のため、パディングやマージンのように余白の指定をするのではなく、各<a href="/property/border.shtml">borderプロパティ</a>によって線の種類（<a href="/property/border-style.shtml">border-style</a>）を変えたり太さ（<a href="/property/border-width.shtml">border-width</a>）や色（<a href="/property/border-color.shtml">border-color</a>）を変えたりといった事ができます。<br />
また、ボーダー部分の背景は、ボーダーが背景の上に重ねて表示されます。そのため、ボーダーの色が透明な時や、線の種類が破線や二重線などの場合に隙間から見えます。</p>

<h3>マージン（Margin）</h3>

<p>マージンは、ボックスの最も外側にある余白部分で、<a href="/property/margin.shtml">marginプロパティ</a>の指定をする事で余白を調整する事ができます。<br />
また、マージン領域には背景が表示されないため常に透明になります。</p>

<h4 id="collapsingMargins">マージンの相殺</h4>

<p>要素同士が垂直方向で隣接している場合、条件によってはマージンが重なり、いずれかの大きいマージンの値が反映されます。このことをマージンの相殺と言います。なお、水平マージンは相殺されないため、各マージンの値が足されたマージンが反映されます。</p>

<p>例えば、以下のように指定した場合、上マージンは相殺され下マージンの値（30px）が実際のマージンになります。</p>

<pre class="css">
<code>div.item {
  margin: 10px 10px 30px;
  padding: 15px;
  border: 5px solid #ccc;
}</code>
</pre>
<pre class="xhtml">
<code>&lt;div class=&quot;item&quot;&gt;
...（略）...
&lt;/div&gt;
&lt;div class=&quot;item&quot;&gt;
...（略）...
&lt;/div&gt;</code>
</pre>

<p>これを実際のブラウザで表示すると以下のようになり、上下マージンが足されず下マージンの30pxが反映されるのが確認できます。</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>
<div class="item">
<p>
<code>margin: 10px 10px 30px;</code>と宣言が有る場合、二つ目のdiv要素の上マージンは相殺され、一つ目の下マージンの値が実際のマージンになります。
</p>
</div>
<div class="item">
<p>
<code>margin: 10px 10px 30px;</code>と宣言が有る場合、二つ目のdiv要素の上マージンは相殺され、一つ目の下マージンの値が実際のマージンになります。
</p>
</div>
</dd>
<!-- / .browserView --></dl>

<p>これが基本的なマージンの相殺ですが、このマージンの相殺には以下のルールが定められています。</p>

<ul>
<li>通常フロー（floatプロパティなどの指定が無い場合）においてボックスの垂直マージンの相殺がされます。
	<ul>
	<li>マージンが全て正の値なら、最も大きい値がマージンになります。</li>
	<li>マージンに正と負の値が両方存在している場合は、最も大きいものと最も小さいものの差がマージンになります。</li>
	<li>マージンが全て負の値なら、絶対値の最も大きい値がマージンになります。</li>
	</ul>
</li>
<li>水平マージンは相殺されません。</li>
<li>フロートのマージンは相殺されません。</li>
<li>絶対位置決めされたボックスのマージンは相殺されません。</li>
<li>overflowプロパティの値が<code>visible</code>以外の要素のマージンは、その内側の通常フローにある子要素とマージンを相殺しません。</li>
<li>インラインブロック要素（<code>display: inline-block;</code>の宣言が有るボックス）のマージンは相殺されません。</li>
<li>あるボックスの上マージンと下マージンが隣接するなら、それらのマージンは貫通するようにして相殺されます。その場合
	<ul>
	<li>親の上マージンと相殺するときは、ボックスの上ボーダー辺と親の上ボーダー辺を一致させます。</li>
	<li>そうでなければ、親のマージンとは相殺しないか、もしくは親の下マージンとのみ相殺します。ボックスの上ボーダー辺の位置は、その要素がゼロ幅以外の上ボーダーを持っている場合と同じになります。</li>
	</ul>
</li>
<li>クリアランスを持つ要素の上マージンは、親ブロックの下マージンと相殺しません。</li>
<li>ルート要素（HTML文書ならhtml要素）のマージンは相殺されません。</li>
</ul>
<ul>
<li><a href="http://www.w3.org/TR/CSS21/box#collapsing-margins">8.3.1 Collapsing margins</a></li>
<li><a href="http://az-store.nrym.org/archive/mynotes/lecture/css21/box#collapsing-margin">マージンの相殺【ボックス -- CSS 2.1のエッセンス】</a></li>
</ul>

<p>このように、マージンの相殺にはちょっと複雑な事が定められています。</p>]]>
        
    </content>
</entry>

<entry>
    <title>hirasawaが使っているdefault.css</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/dl/new_site/hirasawa_default_css/" />
    <id>tag:css-happylifezero.com,2009:/sample//8.225</id>

    <published>2009-07-06T03:16:23Z</published>
    <updated>2010-01-10T07:36:39Z</updated>

    <summary>ボクが使っているdefault.cssです。 新規サイト一式などに含まれているの...</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="新規サイト用" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/dl/">
        <![CDATA[<p>ボクが使っているdefault.cssです。<br />
新規サイト一式などに含まれているのと同じです。</p>

<p>基本的には、新規でサイトを作る場合などこのdefault.cssを読み込ませて、ブラウザのデフォルトスタイルをリセットしたり、body要素への基本的な宣言をしています。<br />
このCSSファイルは、よっぽどの事が無い限り変更しません。</p>

<ul class="example">
<li class="dl"><a href="/dl/new_site/hirasawa_default_css/default.css">ダウンロード (2KB)</a></li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>新規サイト用一式 (.html, XHTML 1.0 Strict, utf-8)</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/dl/new_site/001/" />
    <id>tag:css-happylifezero.com,2009:/sample//8.224</id>

    <published>2009-07-06T03:07:00Z</published>
    <updated>2010-01-10T08:08:38Z</updated>

    <summary>新規でサイトを作り始めるのに使える一式です。 基本的な2カラムのスタイルとかが当...</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="新規サイト用" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/dl/">
        <![CDATA[<p>新規でサイトを作り始めるのに使える一式です。</p>

<p>基本的な2カラムのスタイルとかが当たっているだけですが、新しくサイトを組み始めるのに毎回同じような事を書いたりコピペしなくて済むので効率がちょこっとアップします。</p>

<ul class="example">
<li class="dl"><a href="/dl/new_site/001/001.zip">ダウンロード (31KB)</a></li>
<li class="view"><a href="/dl/new_site/001/001/">サンプルを見る</a></li>
</ul>
<p class="att">※この一式は、CSS HappyLifeの「<a href="http://css-happylife.com/log/css-template/000733.shtml">新規でサイトを作るのに使えそうなの一式。Ver 3</a>」をちょこっと改良したものです。</p>]]>
        
    </content>
</entry>

<entry>
    <title>inherit値</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/basic/inherit.shtml" />
    <id>tag:css-happylifezero.com,2009:/basic//2.200</id>

    <published>2009-06-28T03:52:14Z</published>
    <updated>2009-06-29T03:26:04Z</updated>

    <summary>プロパティの値として指定できる、inherit値の説明です。</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/basic/">
        <![CDATA[<p>
CSSのあらゆるプロパティには、<code>inherit</code>という値を指定できます。<br />
この値は、通常では継承しない親要素のプロパティでも強制的に継承させる事ができます。
</p>

<dl class="browser">
<dt>対応ブラウザ</dt>
<dd>
	<ul>
	<li><img src="/img/item/icon_ie6_no.gif" alt="IE6未対応" /></li>
	<li><img src="/img/item/icon_ie7_no.gif" alt="IE7未対応" /></li>
	<li><img src="/img/item/icon_ie8.gif" alt="IE8対応" /></li>
	<li><img src="/img/item/icon_fx.gif" alt="Firefox3対応" /></li>
	<li><img src="/img/item/icon_opera.gif" alt="Opera9.6対応" /></li>
	<li><img src="/img/item/icon_safari.gif" alt="Safari4対応" /></li>
	<li><img src="/img/item/icon_chrome.gif" alt="Chrome2対応" /></li>
	</ul>
</dd>
</dl>

<h3>inherit値を使ったサンプル</h3>

<pre class="css">
<code>div.mainArea {
  padding: 10px;
  border: 1px solid #999;
}

div.mainArea * {
  border: inherit;
  padding: inherit;
}

div.mainArea strong {
  margin: 0 3px;
  padding: 2px;
}</code>
</pre>

<pre class="xhtml">
<code>&lt;div class=&quot;mainArea&quot;&gt;

&lt;div class=&quot;item&quot;&gt;
&lt;p&gt;全ての要素にボーダーが&lt;strong&gt;継承&lt;/strong&gt;されます。&lt;/p&gt;
&lt;p&gt;全ての要素にボーダーが&lt;strong&gt;継承&lt;/strong&gt;されます。&lt;/p&gt;
&lt;/div&gt;

&lt;/div&gt;</code>
</pre>

<p>
通常borderプロパティは子要素に継承する事がありませんが、値にinheritを指定する事で強制的にすべての要素に継承させています。<br />
（ユニバーサルセレクタを使って全ての要素に継承させているので、タイプセレクタなどで特定の要素のみ継承させる事も勿論可能です）
</p>
<p>
このサンプルを今見ているブラウザで表示すると以下のようになります。
</p>

<dl class="browserView">
<dt>サンプルのブラウザ上の表示</dt>
<dd>

<div id="inheritExample">

<div class="mainArea">

<div class="item">
<p>全ての要素にボーダーが<strong>継承</strong>されます。</p>
<p>全ての要素にボーダーが<strong>継承</strong>されます。</p>
</div>

</div>

<!-- / #inheritExample --></div>

</dd>
<!-- / .browserView --></dl>

<p>
なんだかボーダーだらけになっているのが確認できるかと思います。<br />
上手く使えば指定を減らす事が出来たり中々便利に使えるのですが、IE6, 7が対応していないため現状では実用するのは難しいかもしれません。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>hasLayout</title>
    <link rel="alternate" type="text/html" href="http://css-happylifezero.com/property/haslayout.shtml" />
    <id>tag:css-happylifezero.com,2009:/property//3.199</id>

    <published>2009-06-25T01:45:17Z</published>
    <updated>2009-06-25T04:56:43Z</updated>

    <summary>IE独自のプロパティでレイアウト情報の有無を判断する</summary>
    <author>
        <name>hirasawa</name>
        <uri>http://css-happylifezero.com/</uri>
    </author>
    
        <category term="H" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="original" label="original" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://css-happylifezero.com/property/">
        <![CDATA[<p>hasLayoutはIE独自のプロパティで、他のプロパティのように宣言として書く事はできない読み取り専用のプロパティです。<br />
このhasLayoutは、それぞれの要素がレイアウト情報を持っているか居ないかを判断しており、デフォルトの値は「false」になっているためレイアウト情報は無しになります。<br />
尚、<code>body, img, object, hr, input, button, textarea, table, tr, th, td, frameset, frame, iframe, marquee</code>などは「true」で固定になっているため変更できません。</p>

<table class="imgR">
<caption>hasLayoutを「true」にする宣言</caption>
<tr>
<th>プロパティ</th>
<th>値</th>
</tr>
<tr>
<td>display</td>
<td>inline-block</td>
</tr>
<tr>
<td>height</td>
<td>auto以外</td>
</tr>
<tr>
<td>float</td>
<td>left or right</td>
</tr>
<tr>
<td>position</td>
<td>absolute</td>
</tr>
<tr>
<td>width</td>
<td>auto以外</td>
</tr>
<tr>
<td>writing-mode</td>
<td>tb-rl</td>
</tr>
<tr>
<td>zoom</td>
<td>auto以外</td>
</tr>
</table>

<p>値をtrueにする事で、IE6, 7における大半のバグ対策ができます。</p>

<p>CSSを覚え始めの頃はIE6や7を基準に考えがちだと思いますが、その時に、IEだとサイドバーの背景が繰り返されるのにIE以外では繰り返されないと言った事は無かったでしょうか？（ボクが覚え始めの頃あっただけかも知れませんが）</p>

<p>これは、このhasLayoutが関係していた事になります。<br />
floatプロパティを使って2カラムレイアウトを組む場合など、親要素にwidthプロパティの指定のみだと仕様上は子要素にfloatが指定されたボックスが有ると高さを算出してくれませんが、IE6, 7の場合widthプロパティの値がauto以外でhasLayoutの値が「true」になるため、レイアウト情報が有るとみなされ高さが算出されます。<br />
これにより、IE6, 7だけ背景が表示されるという訳です。</p>

<p>また、この他のバグでもhasLayoutが関係している事が多く、widthプロパティなどでは汎用性が高くないため、全ての要素にほぼ問題なく指定できるzoomプロパティを使ってバグ対策するケースが多いです。</p>

<p>IE6, 7におけるバグという表現は、CSSの仕様と違った場合の事を指していますが、hasLayoutはIE6, 7の仕様なので、バグと言うよりそういう仕様になっているのがIE6, 7です。と言うのが正しいかもしれません。</p>]]>
        
    </content>
</entry>

</feed>
