<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>d-spica</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/" />
    <link rel="self" type="application/atom+xml" href="http://blog.d-spica.com/atom.xml" />
    <id>tag:blog.d-spica.com,2008-06-20://1</id>
    <updated>2008-08-14T04:42:51Z</updated>
    <subtitle>Web標準のXHTML+CSSデザイン，フリーランスの仕事術</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.12</generator>

<entry>
    <title>table と caption の margin</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080813caption.html" />
    <id>tag:blog.d-spica.com,2008://1.50</id>

    <published>2008-08-13T13:57:20Z</published>
    <updated>2008-08-14T04:42:51Z</updated>

    <summary> Firefox，Safari，Opera は IE に比べるとだいぶWeb標準に準拠してレンダリングされます。しかし，仕様に詳しく定められていないところは（追記参照）ブラウザごとのクセがあり，表示結果が微妙に違ったりします。以前，table に caption を入れたとき，margin を合わせるのにちょっと苦労した経験があったので，改めて調べてみました。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="caption" label="caption" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="table" label="table" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xhtml" label="XHTML" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>Firefox，Safari，Opera は IE に比べるとだいぶWeb標準に準拠してレンダリングされます。しかし，仕様に詳しく定められていないところは（<a href="#ps">追記参照</a>）ブラウザごとのクセがあり，表示結果が微妙に違ったりします。以前，table に caption を入れたとき，margin を合わせるのにちょっと苦労した経験があったので，改めて調べてみました。</p>
</div>

]]>
        <![CDATA[<p>caption は表題を示す要素です。table の子要素になり，table の開始タグの直後に記述します。</p>
<h4>table の margin-top が入る位置</h4>
<pre class="xhtml"><code>&lt;p&gt;テキストテキスト&lt;/p&gt;
&lt;table&gt;
  &lt;caption&gt;サンプル（ここがcaption）&lt;/caption&gt;
  &lt;tr&gt;
    ......
  &lt;/tr&gt;
&lt;/table&gt;</code></pre>
<pre class="css"><code>table {
  margin-top: 50px;
}</code></pre>
<p>Firefox3，Opera9.5，Safari3 のそれぞれの表示結果をみてみましょう。</p>
<p><img src="http://blog.d-spica.com/figure/table-caption/fx-1.png" alt="Firefoxのレンダリング" width="263" height="182" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/op-1.png" alt="Operaのレンダリング" width="263" height="182" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/sf-1.png" alt="Safariのレンダリング" width="263" height="181" class="sample0" /></p>
<p><em>Firefoxの場合，table の margin-top が caption との間に入っています。</em></p>
<h4>caption にだけ上下の margin を入れてみる</h4>
<pre class="css"><code>table {
  margin-top: 0;
}

table caption {
  margin-top: 30px;
  margin-bottom: 30px;
}</code></pre>
<p><img src="http://blog.d-spica.com/figure/table-caption/fx-3.png" alt="Firefoxのレンダリング" width="263" height="193" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/op-3.png" alt="Operaのレンダリング" width="263" height="178" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/sf-3.png" alt="Safariのレンダリング" width="263" height="191" class="sample0" /></p>
<p>これは顕著な違いが出てきています。</p>
<p>Firefox は予想通り。</p>
<p>Opera は上の margin が若干狭くなっています。<em>caption のテキストのベースラインから上</em>が，ちょうど30pxになっていました。</p>
<p>Safari は<em>上の margin が下に</em>まわっています。</p>
<h4>table の上と caption の上下の margin を入れてみる</h4>
<pre class="css"><code>table {
  margin-top: 50px;
}

table caption {
  margin-top: 30px;
  margin-bottom: 30px;
}</code></pre>
<p><img src="http://blog.d-spica.com/figure/table-caption/fx-2.png" alt="Firefoxのレンダリング" width="263" height="212" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/op-2.png" alt="Operaのレンダリング" width="263" height="228" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/sf-2.png" alt="Safariのレンダリング" width="263" height="241" class="sample0" /></p>
<p>ブラウザによってかなりの違いがあることがお分かりいただけたかと思います。</p>
<h4>クロスブラウザのCSS</h4>
<p><em>IE6,7 では caption に margin が効かない</em>ことをあわせると，いまのところ <em>table 上部と caption 上下の margin は指定しない</em>ほうが無難でしょう。</p>
<ul>
  <li>table 上部の余白は，前の要素の margin-bottom で調整</li>
  <li>caption と table 本体の間隔は caption の padding-bottom で調整</li>
</ul>
<pre class="css"><code>p {
  margin-bottom: 50px;
}

table {
  margin-top: 0;
}

table caption {
  padding-bottom: 10px;
}</code></pre>
<p><img src="http://blog.d-spica.com/figure/table-caption/ie-5.png" alt="InternetExplorerのレンダリング" width="263" height="196" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/fx-5.png" alt="Firefoxのレンダリング" width="263" height="192" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/op-5.png" alt="Operaのレンダリング" width="263" height="191" class="sample0" /></p>
<p><img src="http://blog.d-spica.com/figure/table-caption/sf-5.png" alt="Safariのレンダリング" width="263" height="191" class="sample0" /></p>
<h4>参考</h4>
<p>複数並んだ table間のマージンについては to-R の西畑さんの記事を参考にしてください。</p>
<ul class="link-list">
<li><a href="http://blog.webcreativepark.net/2008/08/03-123928.html">tableにおけるmarginの相殺 [to-R]</a></li>
</ul>
<p>サンプルページを用意しましたので，あわせてご覧ください。</p>
<ul class="link-list">
<li><a href="http://www.d-spica.com/try/table-caption.html">CSS - table と caption の margin | Try | d-spica</a></li>
</ul>
<h4 id="ps">追記</h4>
<p><a href="http://b.hatena.ne.jp/vantguarde/20080814#bookmark-9645513">vantguarde さんのはてなブックマーク</a>でご指摘をいただきました。caption の margin については仕様に定められていました。以下を参考にしてください。</p>
<ul class="link-list">
  <li><a href="http://www.w3.org/TR/CSS21/tables.html#model">Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification - Tables in the visual formatting model</a></li>
</ul>
<p>こうしてみると，Firefox，Opera，Safari とも仕様のとおりにレンダリングされてはいませんね。</p>
]]>
    </content>
</entry>

<entry>
    <title>label のススメ</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080729label.html" />
    <id>tag:blog.d-spica.com,2008://1.49</id>

    <published>2008-07-29T08:43:56Z</published>
    <updated>2008-08-19T10:09:39Z</updated>

    <summary>   label要素とその挙動 | Web標準Blog | ミツエーリンクス これを読んでいて，ぼくがやっていることをちょっと紹介しようと思いました。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="label" label="label" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xhtml" label="XHTML" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<ul class="link-list">
  <li><a href="http://standards.mitsue.co.jp/archives/001336.html">label要素とその挙動 | Web標準Blog | ミツエーリンクス</a></li>
</ul>
<p>これを読んでいて，ぼくがやっていることをちょっと紹介しようと思いました。</p>
</div>
]]>
        <![CDATA[<h4>label の働き</h4>
<pre class="xhtml"><code>お名前 &lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; size=&quot;20&quot; /&gt;</code></pre>
<p>このような場合，コントロール本体であるテキストボックス<code>&lt;input type=&quot;text&quot; ... /&gt;</code>とその説明である「お名前」というテキストは，隣同士に並んではいるけれど，対応していることがはっきりマークアップされているわけではありません。</p>
<p>label要素を使って，次のようにマークアップすることで，「お名前」というテキストとテキストボックスをはっきり関連づけることができます。label要素内のテキストが，for属性の値に入れられた id名を持つ要素，つまり id=&quot;name&quot; のラベルであることを示すわけです。</p>
<pre class="xhtml"><code>&lt;label for=&quot;<em>name</em>&quot;&gt;お名前&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;<em>name</em>&quot; size=&quot;20&quot; /&gt;</code></pre>
<p>IE6以前では対応していませんが，次のようにテキストとコントロールをまとめてくくる方法もあります。</p>
<pre class="xhtml"><code>&lt;label&gt;お名前 &lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; size=&quot;20&quot; /&gt;&lt;/label&gt;</code></pre>
<p>label要素の部分をクリックすると，テキストボックス（input type=&quot;text&quot;）やテキストエリア（textarea）ならボックスにカーソルが入った状態，ラジオボタン（input type=&quot;radio&quot;）やチェックボックス（input type=&quot;checkbox&quot;）だと選択された状態，さらにクリックすると選択を解除した状態になります。</p>
<p>大きさの限られたラジオボタンやチェックボックスの場合，テキスト部分も含めてクリックが有効になるので，かなり使いやすくなります。</p>
<h4>CSSでのデザインにも便利</h4>
<p>ラジオボタンやチェックボックスをいつか並べるようなことがあります。</p>
<form method="post" action="#">
<dl class="sample">
  <dt>利用しているソーシャルブックマーク</dt>
  <dd class="sbm1">
    <label><input type="checkbox" name="hatena" value="はてなブックマーク" />はてなブックマーク</label>
    <label><input type="checkbox" name="delicious" value="del.icio.us" />del.icio.us</label>
    <label><input type="checkbox" name="livedoor" value="livedoorクリップ" />livedoorクリップ</label>
    <label><input type="checkbox" name="buzzurl" value="buzzurl" />buzzurl</label>
    <label><input type="checkbox" name="yahoo" value="Yahooブックマーク" />Yahooブックマーク</label>
    <label><input type="checkbox" name="pookmark" value="POOKMARK Airline" />POOKMARK Airline</label>
    <label><input type="checkbox" name="nifty" value="@niftyクリップ" />@niftyクリップ</label>
    <label><input type="checkbox" name="newsing" value="newsing" />newsing</label>
    <label><input type="checkbox" name="others" value="その他" />その他</label>
  </dd>
</dl>
</form>
<pre class="xhtml"><code>&lt;form method=&quot;post&quot; action=&quot;#&quot;&gt;
  &lt;dl&gt;
    ......
    &lt;dt&gt;利用しているソーシャルブックマーク&lt;/dt&gt;
    &lt;dd class=&quot;sbm&quot;&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;hatena&quot; id=&quot;hatena&quot; value=&quot;はてなブックマーク&quot; /&gt;はてなブックマーク&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;delicious&quot; id=&quot;delicious&quot; value=&quot;del.icio.us&quot; /&gt;del.icio.us&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;livedoor&quot; id=&quot;livedoor&quot; value=&quot;livedoorクリップ&quot; /&gt;livedoorクリップ&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;buzzurl&quot; id=&quot;buzzurl&quot; value=&quot;buzzurl&quot; /&gt;buzzurl&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;yahoo&quot; id=&quot;yahoo&quot; value=&quot;Yahooブックマーク&quot; /&gt;Yahooブックマーク&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;pookmark&quot; id=&quot;pookmark&quot; value=&quot;POOKMARK Airline&quot; /&gt;POOKMARK Airline&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;nifty&quot; id=&quot;nifty&quot; value=&quot;@niftyクリップ&quot; /&gt;@niftyクリップ&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;newsing&quot; id=&quot;newsing&quot; value=&quot;newsing&quot; /&gt;newsing&lt;/label&gt;
      &lt;label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;others&quot; id=&quot;others&quot; value=&quot;その他&quot; /&gt;その他&lt;/label&gt;
    &lt;/dd&gt;
    ......
  &lt;/dl&gt;
&lt;/form&gt;</code></pre>
<p>このように マークアップしておくと，CSSでのデザインも楽になります。（ただし，このマークアップではIE6以前で label要素上のクリックは効きません）</p>
<pre class="css"><code>form dl dd.sbm label {
  margin-right: 1.5em;
  white-space: nowrap;
}</code></pre>
<p>とすれば，テキストとコントロールのセットが分かりやすくなり，途中で折り返されることがなくなります。</p>
<p>ひとつずつ改行したくなったら，&lt;br /&gt; を入れなくても，次のようにすれば解決します。</p>
<pre class="css"><code>form dl dd.sbm label {
  display: block;
}</code></pre>
<p>応用としてこんなふうにも。</p>
<pre class="css"><code>form dl {
  overflow: hidden;
  width: 434px;
}

form dl dd.sbm label {
  display: block;
  float: left;
  width: 13em;
}</code></pre>
<form method="post" action="#">
<dl class="sample">
  <dt>利用しているソーシャルブックマーク</dt>
  <dd class="sbm2">
    <label><input type="checkbox" name="hatena" value="はてなブックマーク" />はてなブックマーク</label>
    <label><input type="checkbox" name="delicious" value="del.icio.us" />del.icio.us</label>
    <label><input type="checkbox" name="livedoor" value="livedoorクリップ" />livedoorクリップ</label>
    <label><input type="checkbox" name="buzzurl" value="buzzurl" />buzzurl</label>
    <label><input type="checkbox" name="yahoo" value="Yahooブックマーク" />Yahooブックマーク</label>
    <label><input type="checkbox" name="pookmark" value="POOKMARK Airline" />POOKMARK Airline</label>
    <label><input type="checkbox" name="nifty" value="@niftyクリップ" />@niftyクリップ</label>
    <label><input type="checkbox" name="newsing" value="newsing" />newsing</label>
    <label><input type="checkbox" name="others" value="その他" />その他</label>
  </dd>
</dl>
</form>
<h4>注意点</h4>
<ul>
  <li>ひとつの label に対して，ひとつのコントロールを対応させなければなりません。label要素の中に複数のチェックボックスを入れるようなことはできません。</li>
  <li>label要素はインライン要素です。</li>
  <li>せっかく関連づけがされているので，label要素にマウスがのったとき，見た目上の変化があるとよいかもしれません。IEでは，コントロール本体がグローしますが，他のブラウザでは特に変化はありません。たとえば次のように。
  <pre class="css"><code>form dl dd.sbm label:hover {
  background: #EEE;
}</code></pre>
  </li>
</ul>
<h4>参考</h4>
<ul class="link-list">
  <li><a href="http://standards.mitsue.co.jp/archives/001336.html">label要素とその挙動 | Web標準Blog | ミツエーリンクス</a></li>
  <li><a href="http://www.kanzaki.com/docs/html/htminfo33.html">フォームとアクセシビリティ -- ごく簡単なHTMLの説明 -- The Web KANZAKI</a></li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>Webデザインのための Firefox 3 アドオン</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080624firefox.html" />
    <id>tag:blog.d-spica.com,2008://1.48</id>

    <published>2008-06-24T13:23:23Z</published>
    <updated>2008-07-01T11:58:14Z</updated>

    <summary> 6月18日，Firefox 3 がリリースされました。ぼくも早速ダウンロード。  Firefox の魅力はなんといっても豊富なアドオンにあります。便利な拡張機能がたくさんあって，自分にあったブラウジング環境が作れます。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="browser" label="browser" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-web.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>6月18日，Firefox 3 がリリースされました。ぼくも早速ダウンロード。</p>
<p> Firefox の魅力はなんといっても豊富なアドオンにあります。便利な拡張機能がたくさんあって，自分にあったブラウジング環境が作れます。</p>
</div>
]]>
        <![CDATA[<h4>Firefoxの拡張機能</h4>
<p>  今回のバージョンアップの目玉が高速化。実際に使ってみると確かに速い！　Firefox は便利なんだけど，ときとして非常に重たくなるのが難点でした。これで，アドオンをいろいろ入れても快適に使えそうです。</p>
<p>今回はぼくが Firefox 3 に入れている拡張機能をいくつか紹介してみます。<br />
  Love &amp; Design のらぶさんが TB企画をしていますので，そちらにもトラックバックしておきましょう。</p>
<ul class="link-list">
<li><a href="http://sweetlovexx.seesaa.net/article/101392145.html">TB企画*これがないと困る！Firefox 3 のアドオンリスト :: Love &amp; Design ::</a></li>
</ul>
<h4>快適なブラウジングのために</h4>
<h5><a href="http://tmp.garyr.net/forum/viewtopic.php?t=7031"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Tab Mix Plus</a></h5>
<p>これはもう欠かせません。タブの開閉をコントロールする拡張機能です。ぼくの場合，ほとんどのリンクは新しいタブで開くようにしています。そして次に紹介する FireGestures でタブ間を移動したり，閉じたりしています。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/6366"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> FireGestures</a></h5>
<p>ボタンをクリックしたり，メニューを選択しなくても，マウスをちょっと動かすだけでブラウジングできてしまう優れもの。たとえば，右にドラッグすると次のタブへ，左だと前のタブ，下に動かすとタブを閉じ，上にするとページの先頭に戻る，といった設定ができます。以前は All-in-One Gestures を使っていましたが，今回乗り換えました。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/1937"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> タブカタログ (Tab Catalog)</a></h5>
<p>開いたタブをサムネイルで表示してくれます。サムネイル内でスクロールしたり，リンクをクリックすることもできます。広いディスプレイなら快適に使えます。</p>
<h5><a href="http://www.google.com/tools/firefox/toolbar/FT3/intl/ja/index.html?utm_source=ja-et-more&amp;utm_medium=et&amp;utm_campaign=ja&amp;tbbrand=GZEZ"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" />  Google Toolbar for </a><a href="http://www.google.com/tools/firefox/toolbar/FT3/intl/ja/index.html?utm_source=ja-et-more&amp;utm_medium=et&amp;utm_campaign=ja&amp;tbbrand=GZEZ">Firefox</a></h5>
<p>Google のいろんなサービスがさらに使いやすくなります。</p>
<h5><a href="http://www.hatena.ne.jp/tool/firefox#Hatenabar"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> hatenabar</a></h5>
<p>はてなユーザー御用達。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/748"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Greasemonkey</a></h5>
<p>通称「グリモン」。痒いところに手が届くちょっと便利なスクリプトが追加できます。グリモンで使えるいろんなスクリプトが公開されています。</p>
<h4>Webデザイン用</h4>
<h5><a href="http://getfirebug.com/jp.html"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Firebug</a></h5>
<p>このデバッグツールはもう手放せません。CSS や Javascript の問題を見つけたり，修正したりするときに使います。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/60"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Web Developer</a></h5>
<p>アクセシビリティをよくしようというときには，いろんな条件でチェックするのが大事。CSS や Javascript を切ったり，画像を非表示にしたり，validator でチェックしたりというときに使っています。</p>
<h5><a href="http://users.skynet.be/mgueury/mozilla/download.html"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Html Validator for Firefox and Mozilla</a></h5>
<p>valid かどうかをステイタスバーに表示してくれます。エラーがあると一目瞭然。ソースを表示させると，エラー箇所をハイライト。これで見ていると valid なページというのは少ないですね。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/142"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Make Link</a></h5>
<p>コピペするときにページの title要素やURLを取得して，HTMLタグを付け加えることができます。以前は Copy URL + を使っていたのですが，設定が簡単なのでこちらに乗り換えました。</p>
<h4>ちょっとニッチな感じなもの</h4>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/1743"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> lori (Life-of-request info)</a></h5>
<p>ステイタスバーに，最初の読み込みが始まるまでの時間，ページ全部を読み込むまでの時間，読み込んだファイルサイズ，リクエスト数を表示してくれます。「ん？　このページなんか遅いぞ」というときにチェック。もっと詳しく見たいときは Firebug の Net でチェックします。 </p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/1146"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Screengrab!</a></h5>
<p>ページのスクリーンショットをとってくれます。スクロールしなければ出てこないページの下のほうも全部まとめてPNG画像に。選択した部分だけを画像にすることもできます。<br />
  この画像は，サムネイルの元画像として使ったり，紙ベースでデザインを見てもらったりするとき（印刷するとほとんどの場合デザインが変わってしまうので）に使います。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/2933"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Link Widgets</a></h5>
<p>ツールバーに追加したボタンに，link要素や a要素の rel属性のURLを取得してきます。今のところ rel属性のチェック用として使っています。Opera にもデフォルトで同じような機能があります。ブラウザが rel属性をUIに活用するようになってくると，制作側もそれにうまく対応していくのがよさそうですね。</p>
<h5><a href="https://addons.mozilla.org/ja/firefox/addon/1852"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> Table2Clipboard</a></h5>
<p>table部分をコピペするときに使います。通常のコピペだと，テキストが連続してしまって，セルの区切りがわかりづらくなります。行の区切りとセルの区切りに任意の文字列を挿入してペーストできます。<br />
  たとえば次のようにすると，table関連のタグが追加されます。</p>
<p><img src="http://blog.d-spica.com/figure/table2clipboad.png" alt="capture : Table2Clipboard" width="300" height="210" /></p>
<p> サイトリニューアルのときなど，前のサイトで使っていた表をまた使う，ということがよくあります。ソースをコピペしてもよいのですが，インデントがバラバラだったり，align，bgcolor，width といったオススメできない属性が入っていることも多く，表が大きいとこれを修正する手間もバカになりません。<br />
  文字列を変えることで，いろんな形式で書き出せます。</p>
<h4>その他に</h4>
<p>こんなものも入れています。</p>
<ul class="link-list">
  <li><a href="https://addons.mozilla.org/ja/firefox/addon/1985">Window Resizer</a></li>
  <li><a href="https://addons.mozilla.org/ja/firefox/addon/3504">Zotero</a></li>
  <li><a href="http://gears.google.com/">Google Gears</a></li>
  <li><a href="http://miniturbo.org/2007/08/22/011621">SBMカウンタ</a></li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>CSSの初期化ファイル</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080531defaultcss.html" />
    <id>tag:blog.d-spica.com,2008://1.47</id>

    <published>2008-05-31T05:37:35Z</published>
    <updated>2008-07-28T17:17:27Z</updated>

    <summary> 以前， CSSの初期化 というエントリを書きました。あれからいろいろと試行錯誤し，初期化ファイルがずいぶん変わってきましたので，改めて今ぼくが使っている最新のファイルを紹介したいと思います。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>以前，<a href="http://blog.d-spica.com/entry/070925default.html"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> CSSの初期化</a> というエントリを書きました。あれからいろいろと試行錯誤し，初期化ファイルがずいぶん変わってきましたので，改めて今ぼくが使っている最新のファイルを紹介したいと思います。</p>
</div>]]>
        <![CDATA[<h4>default.css</h4>
<p>以下からご覧いただけます。</p>
<ul class="link-list">
  <li><a href="http://www.d-spica.com/css2/default.css">default.css</a></li>
</ul>
<p>このファイルは次のような目的で作っています。</p>
<ul>
  <li>各ブラウザが持つデフォルトのCSSをリセットして，レンダリングの違いを解消する。</li>
  <li>サイトやページによって書き換えることがほとんどない，基本的な設定を行う。</li>
  <li>コーディングが分かりやすくなる初期値を指定しておく。</li>
</ul>
<p>このファイルをあらゆるサイトで使い回せるようにしておくわけです。</p>
<h4>リセット</h4>
<pre class="css"><code>/* Reset */

body, div, h1, h2, h3, h4, h5, h6, p, dl, dt, dd, ul, ol, li, 
brockquote, pre, table, caption, th, td, address, 
form, fieldset, legend, object {
  margin: 0;
  padding: 0;
}

h5, h6, pre, table, code, kbd, samp, acronym, input, textarea {
  font-size: 100%;
}

a, ins {
  text-decoration: none;
}

address, em, cite, dfn, var {
  font-style: normal;
}

input, textarea {
  font-family: sans-serif;
  font-weight: normal;
}

img {
  vertical-align: baseline;
}

a img {
  border: none;
}</code></pre>
<p>まず，ブロックレベル要素は margin と padding が 0 の状態にし，見出しを除くテキストはフォントサイズ・スタイルが同じになるようにします。</p>
<p>各ブラウザのデフォルトCSSでどのように表示されるかは，以下のページで確かめてみてください。</p>
<ul class="link-list">
  <li><a href="http://www.d-spica.com/try/default-css.html">CSS - 各要素の表示チェック | Try | d-spica</a></li>
</ul>
<p>ブラウザによって違いが出てくるもののほかに，次のようなものもリセットしています。</p>
<ul>
  <li>斜体になる。（日本語フォントの斜体は読みづらい）</li>
  <li>フォントサイズ・スタイルが通常のものと違う。（table, input など。IEのpre, codeなど， Firefoxのinput, textarea，Oreraのacronym，などブラウザによっていくつか）</li>
</ul>
<p>この初期化ファイルをあてると，次のようになります。</p>
<ul class="link-list">
  <li><a href="http://www.d-spica.com/try/default-css2.html">CSS - 初期化ファイルをあてたときの各要素の表示 | Try | d-spica</a></li>
</ul>
<h4>基本的な設定</h4>
<p>以下の設定は，サイトによって値を若干変える場合もあります。</p>
<pre class="css"><code>/* Setting */

body {
  background: #FFF;
  font-family: sans-serif;
  font-size: 13px;
  color: #333;
}

* html body { /* for IE6 */
  font-size: small;
}
  
*:first-child+html body { /* for IE7 */
  font-size: small;
}

ul {
  list-style-position: outside;
  list-style-type: none;
}

ol {
  list-style-position: outside;
}
  
table {
  border-collapse: collapse;
}

legend {
  color: #333;
}

div#main p,
div#main ul,
div#main ol,
div#main dl,
div#main blockquote,
div#main pre,
div#main table {
  margin: 1em 0;
}</code></pre>
<p>まず，フォントサイズを13px相当に合わせています。ul, ol, table の設定は好みによるところも多分にありますが...。</p>
<p>legend はIEで青文字になります。他のフォント色と合わせています。</p>
<p>メインコンテンツの部分だけは，よく使うブロックレベル要素にあらかじめ margin を指定しています。他の部分は，デザインによって margin がまちまちになる場合が多いので，ここでは指定していません。</p>
<h4>初期化ファイルで指定しないほうがよいもの</h4>
<p>初期化ファイルであまり細かく指定しまうと，サイトによって後から書き換える部分がふえてしまいます。あらゆるサイトで使い回せるようなファイルになりません。初期化ファイルにはあくまで基本的（不変）なところだけ。</p>
<p>line-height は，メインコンテンツの部分では 1.5 前後にするとよいのですが，他のところでは 1.2 くらいがよかったり，1 にしておくのが便利だったりと様々なので，ここでは指定せず，サイトごとに作る別ファイルで。</p>
<p>h1, h2, h3 あたりの見出しも，サイトによってデザインも様々，しかもわりと詳細に指定することが多いので，別ファイルで。</p>
<p>form 内の各コントロールは，基本的にブラウザがあらかじめ持っているものを使うようにしています。padding や border. outline などをリセットしてしまうと，ひとつひとつ再設定していくのがかなり面倒です。</p>
<h4>オプションで</h4>
<pre class="css"><code>/* Option *//*

* html .smallFont {
  font-family: 'メイリオ', 'ＭＳ Ｐゴシック', sans-serif;
}
  
*:first-child+html .smallFont {
  font-family: 'メイリオ', 'ＭＳ Ｐゴシック', sans-serif;
}

* html ul li dl,
* html ol li dl {
  display: inline;
}

*:first-child+html ul li dl,
*:first-child+html ol li dl {
  display: inline;
}

*/</code></pre>
<p>バグ対策です。すべてのサイトで使うというものではないので，必要に応じて使うようにしています。詳細は関連するエントリを参考にしてください。</p>
<ul class="link-list">
  <li><a href="http://blog.d-spica.com/entry/070527li-dl.html">li要素にdl要素を入れてみる</a></li>
  <li><a href="http://blog.d-spica.com/entry/080518iefontsize.html">IEで指定どおりのfont-sizeにならない</a></li>
</ul>
<p>以前は clearfix の記述も入れていたのですが，最近ほとんど使わなくなりました。今は入れていません。</p>
<ul class="link-list">
  <li><a href="http://blog.d-spica.com/entry/080418clear.html">flaotを解除する3つの方法</a></li>
</ul>
<h4>font-sizeに関するメモ</h4>
<pre class="css"><code>/*---------------------------------------------

Font Size

20px : 154%
18px : 139%
16px : 124%
15px : 116%  125%
14px : 108%  117%
13px : 100%  108%
12px :  93%  100%
11px :  85%   92%

---------------------------------------------*/</code></pre>
<p>13pxを基準とした場合の，font-size の指定値をまとめてあります。基準値が違いますが，以下のエントリに書いた算出方法を使っています。</p>
<ul class="link-list">
  <li><a href="http://blog.d-spica.com/entry/070310fontsize.html">font-size指定</a></li>
</ul>
<h4>補足</h4>
<p><a href="http://blog.d-spica.com/entry/080523cssfiles.html"><img src="http://blog.d-spica.com/img/mk-golink.png" alt="" /> CSSファイルの分割</a> で書いたように，サイトのすべてのページに適用されるCSSを，default.css と common.css の2枚に書いています。</p>
<p>以前は，default.css で初期化したものを，common.css で再設定する部分が相当ありました。が，この二重の指定ははっきり言って無駄です。必要なものだけを残し，この重複をできるだけ省くようにしてきました。</p>
<p>また，「default.css はあらゆるサイトで使い回せるように」という視点で，default.css から common.css に移したものもあります。</p>
<h4>参考</h4>
<ul class="link-list">
  <li><a href="http://developer.yahoo.com/yui/reset/">Yahoo! UI Library: Reset CSS</a></li>
  <li><a href="http://developer.yahoo.com/yui/fonts/">Yahoo! UI Library: Fonts CSS</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>nth-child() 疑似クラスを試してみる</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080526nthchild.html" />
    <id>tag:blog.d-spica.com,2008://1.46</id>

    <published>2008-05-26T12:30:16Z</published>
    <updated>2008-06-20T14:31:13Z</updated>

    <summary> CSS3で定義される nth-child() 疑似クラス。これが使えるようになると，HTMLファイル，CSSファイルのメンテナスが楽になるだろうな...と思うのです。 どんな具合か，ちょっと試してみました。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nthchild" label="nth-child" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>CSS3で定義される nth-child() 疑似クラス。これが使えるようになると，HTMLファイル，CSSファイルのメンテナスが楽になるだろうな...と思うのです。</p>
<p>どんな具合か，ちょっと試してみました。</p>
</div>]]>
        <![CDATA[<h4>nth-child() 疑似クラスとは</h4>
<p>英文ですが，詳細は以下から。W3Cの Working Draft（草案）ですので，今後変更されることがあるかもしれません。</p>
<ul class="link-list">
  <li ><a href="http://www.w3.org/TR/css3-selectors/#nth-child-pseudo">Selectors - 6.6.5. Structural pseudo-classes - :nth-child() pseudo-class</a></li>
</ul>
<p>その要素が何番目の子要素かによって，該当するものにだけ，CSSをあてることができます。</p>
<p>たとえば，セレクタに<code>ul li:nth-child(2n)</code>，または<code>ul li:nth-child(even)</code>というふうに記述すると，リストの偶数番目のアイテムに対してCSSを適用できます。奇数番目なら<code>ul li:nth-child(2n+1)</code>，または<code>ul li:nth-child(odd)</code>となります。</p>
<p><code>ul li:nth-child(4n+1)</code>と書くと，4つおきに1, 5, 9, 13番目の li要素が該当することになります。<code>ul li:nth-child(6)</code>と書くと，6番目の li要素だけが該当します。</p>
<p>nth-child() 疑似クラスに対応しているブラウザも出てきました。</p>
<ul>
  <li>Safari 3</li>
  <li>Opera 9.50β</li>
</ul>
<p>（Firefox 3RCでは後述のCSSは効きませんでした。IE 8βは未確認）</p>
<h4>使用例</h4>
<p>Safari 3で表示したキャプチャを載せておきます。</p>
<h5>カレンダー：土・日・祝日に色を</h5>
<p><img src="http://blog.d-spica.com/illust/nth-child-1.jpg" alt="カレンダー：土・日・祝日に色を" width="196" height="186" class="sample0" /></p>
<pre class="css"><code>table.calendar tr th:nth-child(6) {
  background: #99F;
}

table.calendar tr th:nth-child(7) {
  background: #F99;
}

table.calendar tr td:nth-child(6) {
  color: #009;
}

table.calendar tr td:nth-child(7),
table.calendar tr:nth-child(5) td:nth-child(1) {
  color: #900;
}</code></pre>
<p>1行目の曜日は th でマークアップしてあります。この6番目（土）と7番目（日）は，背景色を変えて指定しています。</p>
<p>日の数字は td でマークアップしてあります。6番目と7番目のテキスト色を指定しています。</p>
<p>祝日の「海の日」は7月の第3月曜です。<code>tr:nth-child(5) td:nth-child(1)</code>，つまり5番目の tr の中の1番目の td がこれにあたります。</p>
<h5>カレンダー：休業日に背景色を</h5>
<p><img src="http://blog.d-spica.com/illust/nth-child-2.jpg" alt="カレンダー：休業日に背景色を" width="196" height="186" class="sample0" /></p>
<p>上のCSSに以下を追加します。</p>
<pre class="css"><code>table.calendar tr td:nth-child(7),
table.calendar tr:nth-child(2n+1) td:nth-child(4) {
  background: #FCC;
}

table.calendar tr:nth-child(6) td:nth-child(7) {
  background: #FFF;
}</code></pre>
<p><code>td:nth-child(7)</code>は日曜日に該当します。<code>tr:nth-child(2n+1) td:nth-child(4)</code>は奇数番目の tr の中の4番目の td にあたり，隔週木曜日に背景色が入ります。</p>
<p>27日の下は空欄になっていますが，ここにも背景色が入ってしまうので，<code>#FFF</code>を指定しています。</p>
<h5>floatを4つおきにclear</h5>
<p><img src="http://blog.d-spica.com/illust/nth-child-3.jpg" alt="floatを4つおきにclear" width="450" height="530" class="sample0" /></p>
<p>ul, li のリストでマークアップしてあります。li にはそれぞれ商品画像・商品名・価格が入っています。</p>
<pre class="xhtml">&lt;ul class=&quot;product-list&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;img src=&quot;figure/dummy-100.gif&quot; alt=&quot;ダミー&quot; width=&quot;100&quot; height=&quot;100&quot; /&gt;&lt;br /&gt;
    &lt;em&gt;商品名&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;span class=&quot;price&quot;&gt;価格 0,000円&lt;/span&gt;&lt;/li&gt;
  ...</pre>
<pre class="css"><code>ul.product-list {
  overflow: hidden;
  width: 430px;
  border-top: solid 3px #666;
}

ul.product-list li {
  float: left;
  margin-top: 15px;
  margin-left: 10px;
  width: 100px;
}

ul.product-list li:nth-child(4n+1) {
  clear: left;
  margin-left: 0;
}</code></pre>
<p><code>li:nth-child(4n+1)</code>は4つずつ並べたときのいちばん最初の li にあたります。これを clear して，左の margin を 0 にしています。きれいに4つずつ並びます。</p>
<h5>floatを3つおきにclear</h5>
<p>HTMLはそのまま，CSSをちょっと書き換えるだけでこんなふうにもなります。</p>
<p><img src="http://blog.d-spica.com/illust/nth-child-4.jpg" alt="floatを3つおきにclear" width="340" height="681" class="sample0" /></p>
<pre class="css"><code>ul.product-list {
  overflow: hidden;
  width: <em>320px</em>;
  border-top: solid 3px #666;
}

ul.product-list li {
  float: left;
  margin-top: 15px;
  margin-left: 10px;
  width: 100px;
}

ul.product-list li:nth-child(<em>3n+1</em>) {
  clear: left;
  margin-left: 0;
}</code></pre>
<p>書き換えたのは，ul の width の値と nth-child の 3n+1 のところだけです。同じ要領で，540px，5n+1 と書き換えると5つずつ並べることができますね。</p>
<h4>nth-child() が使いたい理由</h4>
<p>floatさせて4つずつ並べる場合，1, 5, 9, ...番目の li に class=&quot;head-item&quot; などと class をふり，これにCSSをあてる...という方法でもできないことはありません。</p>
<p>表に1行おきに背景色を入れるような場合も，奇数番目の tr に class=&quot;odd&quot; を，偶数番目の tr に class=&quot;even&quot; をふっておいたり...。</p>
<p>これらの方法だと，途中に商品を追加する（あるいは削除する）とか，表の途中のデータを1行そっくり抜く（あるいは挿入する）というとき，それ以降にある class を書き直さなくてはなりません。</p>
<p>nth-child() が使えるようになれば，こうした class をふる必要はなくなります。HTML上で追加しようと削除しようと順序を入れ替えようと，何番目になるかを気にすることはありません。</p>
<p>また，HTMLを固定したまま，見栄えをいろいろに変化させるときにも便利です。4つずつ並んでいたものを3つずつにする，1行おきに背景を入れていたものを3行ごとにする，ということもCSSの対応だけですみます。</p>
<h4>参考</h4>
<p>サンプルページを用意しましたので，あわせてご覧ください。</p>
<ul class="link-list">
  <li><a href="http://www.d-spica.com/try/nth-child.html">CSS - nth-child()疑似クラス | Try | d-spica</a></li>
</ul>
<h4>関連</h4>
<ul class="link-list">
  <li><a href="http://blog.d-spica.com/entry/080423friendlyhtml.html">Re: CSSによるデザインワークと相性のよいHTMLって？</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>CSSファイルの分割</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080523cssfiles.html" />
    <id>tag:blog.d-spica.com,2008://1.45</id>

    <published>2008-05-23T10:00:19Z</published>
    <updated>2008-06-20T14:32:33Z</updated>

    <summary> 見栄えに関わる部分をHTMLから分離してCSSに書いていくと，CSSの分量もかなり増えてきます。サイトの規模が大きくなったり，様々なデザインの要素が加わってくるとなおさらです。 今回は，CSSファイルをいくつかに分け，管理しやすくする方法を考えてみたいと思います。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>見栄えに関わる部分をHTMLから分離してCSSに書いていくと，CSSの分量もかなり増えてきます。サイトの規模が大きくなったり，様々なデザインの要素が加わってくるとなおさらです。</p>
<p>今回は，CSSファイルをいくつかに分け，管理しやすくする方法を考えてみたいと思います。</p>
</div>]]>
        <![CDATA[<h4>なぜ分割するのか</h4>
<h5>1. 余分なものを読み込まなくてすむように。</h5>
<p>構造（structure）と見栄え（prasentation）をHTMLとCSSに完全に分離すると，CSSのほうにたくさんの記述をすることになります。その中には，ある特定のページにしか適用されないものも出てきます。</p>
<p>これらのすべてを1枚のCSSファイルに書き，すべてのページで読み込む方法だと，そのページには適用されないものまで相当数読み込むことになってしまいます。</p>
<p>CSSファイルをいくつかに分割しておき，必要なものだけを読み込むようにすると，この無駄を省くことができます。</p>
<h5>2. CSSが管理しやすくなるように。</h5>
<p>ルールセットが多くなってくると，何がどこに書かれているのか探すのが大変になります。また，カスケード処理や値の継承の具合で，どの指定が適用されているのかも分かりづらくなってきます。</p>
<p>CSSファイルを適度な分量に分割して，それぞれのファイルの役割をはっきりさせ，記述や読み込みの順序に法則性を持たせておくと，管理が楽になります。</p>
<h4>具体的な分割の方法</h4>
<p>ぼくはまず，どのページに適用されるかによって，ファイルを分割しています。</p>
<ul>
  <li>サイト内のすべてのページに適用されるもの</li>
  <li>特定のページ群（またはページ）に適用されるもの</li>
  </ul>
<p>ここからさらに，</p>
<ul>
  <li>ブラウザ間の差異を解消する初期化に関わる部分</li>
  <li>CSSを切り替えて変化させる部分</li>
</ul>
<p>などを抜き出して別のファイルを作ります。</p>
<p>数十ページのサイトだと，だいたい次のようなCSSファイルができます。</p>
<ul>
  <li>default.css （初期化）</li>
  <li>common.css （全ページに適用するもの）</li>
  <li>top.css （トップページに適用するもの）</li>
  <li>lower.css （トップページを除く下層ページに適用するもの）</li>
  <li>category1.css （category1の各ページに適用するもの）</li>
  <li>category2.css （category2の各ページに適用するもの）</li>
  <li>...</li>
  <li>print.css （印刷用）</li>
</ul>
<p>ページのレイアウトで見ると...。common.css にはヘッダー，フッター，ナビゲーションあたりに適用されるものが書かれます。top.css，lower.css には，メインのコンテンツ部分に適用されるもの，categoryN.css にはそのカテゴリ固有のものが書かれます。</p>
<p><img src="http://blog.d-spica.com/illust/css-files.gif" alt="CSSファイルの分割" width="426" height="192" /></p>
<h4>インポートの方法</h4>
<p>上の図にかかれた下のファイルから順に読み込みます。CSSでは，同じ要素に対していくつかの指定がかち合ったとき，セレクタの詳細度が同じなら，後のほうに書かれたものが優先的に適用されます。より一般的な「原則的にこうだよ」というものを先に，「でも，ここはちょっと違うよ」という特殊なものは後から読み込むようにしておくと，分かりやすくなります。</p>
<p>print.css を別にすると，トップページでは次のファイルが必要になります。</p>
<ul>
  <li>default.css （初期化）</li>
  <li>common.css （全ページに適用するもの）</li>
  <li>top.css （トップページに適用するもの）</li>
</ul>
<p>category2 の各ページでは，</p>
<ul>
  <li>default.css （初期化）</li>
  <li>common.css （全ページに適用するもの）</li>
  <li>lower.css （トップページを除く下層ページに適用するもの）</li>
  <li>category2.css （category2の各ページに適用するもの）</li>
  </ul>
<p>以前は import_top.css，import_category2.css などのファイルを作り，</p>
<pre class="css"><code>@import url(default.css);
@import url(common.css);
@import url(top.css)</code></pre>
<p>というふうに，各ファイルをインポートして，これを index.html にリンクさせていました。が，サイトの規模が大きくなってくると import_(category name).css といったファイルが無闇に増えてしまいます。</p>
<p>今は，top.css の最初のほうで default.css と common.css をインポートし，その後に続けてトップページ適用させるルールセットを書き，index.html にリンクさせる...という方法をとっています。</p>
<p>category2 の各ページは，category2.sss にリンクし，このCSSファイルでは次のように各ファイルをインポートしてから，category2 に適用するルールセットを書く...というふうにしています。</p>
<pre class="css"><code>@import url(default.css);
@import url(common.css);
@import url(lower.css)


div#main div.section h3 {
  ...
}

...
</code></pre>
<h4>HTMLファイルにCSSを書かないために</h4>
<p>「このページのこの部分だけ，ちょっとイレギュラーに違うデザインにしたい」ということがときどきあります。</p>
<p>HTMLファイルに，style要素や style属性を使って，その部分にだけ適用させるCSSを書くという方法もあるのですが，これだと構造（structure）と見栄え（prasentation）の完全分離は実現できなくなってしまいます。</p>
<p>ぼくは <a href="http://blog.d-spica.com/entry/080423friendlyhtml.html">Re: CSSによるデザインワークと相性のよいHTMLって？</a> で紹介したように，body要素の id属性でページ名を付けるようにして，category2.css の下のほうに，次のような記述を追加しています。</p>
<pre class="css"><code>/* Links Page Only */

body#links div#main div.section ul.link-list {
  background: url( ... ) no-repeat left center;
  padding-left: 10px;
}</code></pre>
<p>こうような特定のページにだけ適用させるルールセットが多くなるような場合は，(page name).css といファイルを新たに作り，これらのルールセットを書いて該当ページにリンクさせるようにしています。</p>
<h4>分割しすぎるとかえって面倒</h4>
<p>分割の方法があまりに複雑だったり，分割したファイルがたくさんになりすぎると，かえって管理が面倒になります。あえて分割しなくても，同一ファイル内をコメントで区切り，何がどこに書かれているかをはっきりさせておけば，かなり分かりやすくなります。</p>
<p>また，各CSSのファイルの役割，インポート先・リンク先，必要に応じてHTMLのDOM構造の主要な部分などを書いておくと管理の手助けになります。良い例となるか分かりませんが，ぼくが書くCSSの最初のほうは，次のような感じです。</p>
<pre class="css"><code>@charset "UTF-8";

/*---------------------------------------------

Common CSS
for all pages
coded by d-spica at 2008-05-23
imported to "$category-name.css", "top.css"

-----------------------------------------------

Basic Layout

  body

    div#header
      p.description
      p.logo / h1.logo
      p.tel
      ul.nav

    div#contents
    
      p#topicpath / -

      div#main
          ... ( >lower.css / >top.css )

      div#sub
        ul.nav
        ul.banner

      p#toTopNav
      
    div#footer
      ul.nav
      p.credit

---------------------------------------------*/
</code></pre>
<h4>参考</h4>
<ul class="link-list">
  <li><a href="http://2xup.org/log/2006/12/13-0947">CSS 分割管理の実践編 - 2xup.org</a></li>
  <li><a href="http://3ping.org/2007/08/11/0416">分割CSSファイルの構成とそのルール - 3ping.org</a></li>
  <li><a href="http://realog.org/2007/03/07/1045.html">Re: CSS分割管理の実践編 - Go my way</a></li>
  <li><a href="http://with-d.net/xhtml-css/000035.html">コーディングする際のCSSの分割方法について【With-D】</a></li>
</ul>
<h4>追記</h4>
<p>さらに参考となるページを。</p>
<ul class="link-list">
  <li><a href="http://www.i81.co.jp/koba/?p=72">Clear Sky Source - マルチシートアプローチとかクラス名とか</a></li>
  <li><a href="http://blog.webcreativepark.net/2008/05/28-223334.html">re:マルチシートアプローチとかクラス名とか[to-R]</a></li>
</ul>
<h4>関連</h4>
<p>CSSの初期化ファイル default.css について。</p>
<ul class="link-list">
<li><a href="http://blog.d-spica.com/entry/080531defaultcss.html">CSSの初期化ファイル</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>IEで指定どおりのfont-sizeにならない</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080518iefontsize.html" />
    <id>tag:blog.d-spica.com,2008://1.44</id>

    <published>2008-05-18T10:03:22Z</published>
    <updated>2008-06-20T15:10:29Z</updated>

    <summary> IE との兼ね合いで，font-size は%で指定しておくのが，いちばん無難だと思うのですが，IE6, 7 にちょっと痛いバグがありました。 小さなサイズの文字が指定どおりの大きさにならないのです。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fontsize" label="font-size" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>IE との兼ね合いで，font-size は%で指定しておくのが，いちばん無難だと思うのですが，IE6, 7 にちょっと痛いバグがありました。</p>
<p>小さなサイズの文字が指定どおりの大きさにならないのです。</p>
</div>]]>
        <![CDATA[<h4>11px以下のフォントが指定より大きくなる</h4>
<p>まず，<a href="http://blog.d-spica.com/font-size.html">font-size</a> のページを IE6 または IE7 でご覧ください。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/font-ie7-2.gif" alt="font-sizeを小さくしていったときのIE7での表示" /></p>
<p>順にフォントサイズが小さくなっていくはずなのですが，74%から72%あたりの日本語のフォントサイズが一旦大きくなっています。その後71%から 60%のところまで，日本語フォントはサイズが変わっていません。</p>
<p>FIrefox の場合と比べると，よく分かるかもしれません。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/font-win-fx-2.gif" alt="font-sizeを小さくしていったときのFirefoxでの表示" /></p>
<p>%で指定された font-size は，最終的にpxに変換され，端数処理して整数値になったものが表示されます。IEの場合，11.5px以上12px未満になるところは，本来12pxで表示されるはずですが，13pxになっています。9.5px以上11.5px未満のところは，すべて12pxで表示されています。</p>
<p>emで指定した場合も同様の結果になりました。</p>
<p>フォントサイズを11px以下にすることの是非も少々気になりますが...。</p>
<h4>解決法1：UTF-8にしない</h4>
<p>まず，<em>文字コードを<code>UTF-8</code>以外の日本語コード，<code>Shift_JIS</code>や<code>EUC-JP</code>にする</em>ことで解決します。</p>
<pre class="xhtml"><code>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=Shift_JIS&quot; /&gt;</code></pre>
<p>しかし，XHTMLでXML宣言を省略する場合（文字コードが<code>UTF-8</code>なら省略可）もあるし，最近は<code>UTF-8</code>が主流になりつつある状況を考えると，あまり好ましい方法とは言えません。</p>
<h4>解決法2：日本語フォントを指定する</h4>
<p><em>font-family で<strong>最初に</strong>日本語フォントを指定する</em>ことでも解決します。（英字フォントの後に日本語フォントを指定した場合は解決しないようです）</p>
<p>個人的には，特別な事情がない限り，font-family に特定のフォントを指定するのは「余計なお世話」という感じもします。11px以下になるところにだけ，次のように指定するのがよいかもしれません。</p>
<pre class="css"><code>div#footer ul.nav {
  font-size: 71%;
}

* html div#footer ul.nav {
  font-family: 'ＭＳ Ｐゴシック', sans-serif;
}

*:first-child+html div#footer ul.nav {
  font-family: 'メイリオ', sans-serif;
}</code></pre>
<p>12pxで表示したいときは，pxに変換したとき12px以上12.5px未満になる値を指定しておけば大丈夫です。</p>
<h4>参考</h4>
<p>font-size指定については，以下も参考にしてください。</p>
<ul class="link-list">
  <li><a href="http://blog.d-spica.com/entry/070310fontsize.html">font-size指定</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>すぐに使えそうなネガティブマージン</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080515margin.html" />
    <id>tag:blog.d-spica.com,2008://1.43</id>

    <published>2008-05-15T14:40:55Z</published>
    <updated>2008-06-20T14:34:27Z</updated>

    <summary> margin にはマイナスの値を入れることができます。マイナスの値を持つ margin を「ネガティブマージン」と言ったりします。 あまりむずかしくなく，すぐに使えそうなネガティブマージンを紹介してみましょう。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="margin" label="margin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>margin にはマイナスの値を入れることができます。マイナスの値を持つ margin を「ネガティブマージン」と言ったりします。</p>
<p>あまりむずかしくなく，すぐに使えそうなネガティブマージンを紹介してみましょう。</p>
</div>]]>
        <![CDATA[<h4>見出しにネガティブマージン</h4>
<p>本文の左に見出しよりも大きな余白をとりたいというとき。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-1.gif" alt="sample：見出しにネガティブマージン1" /></p>
<pre class="xhtml"><code>&lt;div class=&quot;section&quot;&gt;
  &lt;h3&gt;<span class="second">見出し</span>&lt;/h3&gt;
  &lt;p&gt;テキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト。...&lt;/p&gt;
  &lt;p&gt;テキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト。...&lt;/p&gt;
&lt;/div&gt;</code></pre>
<pre class="css"><code>div.section {
  padding-left: <strong>15px</strong>;
}

div.section h3 {
  <strong>margin-left: -15px;</strong>
  padding: 5px 10px;
  background: #999;
  color: #FFF;
}</code></pre>
<p>通常は横方向の margin をとると，余白ができた分，ボックスが中に縮まるのですが，ネガティブマージをとると，外に広がったようになります。</p>
<p>まず親要素となる div.section に padding-left をとり，左側に余白をとります。h3 にネガティブマージンをとって左側に広げます。</p>
<p>見出しを除いた本文のところを改めて div で囲い margin-left や padding-left をとったり，p. ul, ol, dl, blockquote, pre, table, ...といったそれぞれの要素に margin-left や padding-left をとるということをしなくても，左に余白が入れられます。</p>
<p>上と同じXHTMLでこんなふうにもなります。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-2.gif" alt="sample：見出しにネガティブマージン2" /></p>
<pre class="css"><code>div.section {
  padding: 0 <strong>15px</strong> 10px;
  border: solid 1px #666;
}

div.section h3 {
  <strong>margin:</strong> 0 <strong>-15px</strong>;
  padding: 5px 10px;
  background: #999;
  border-bottom: solid 1px #666;
  color: #FFF;
}</code></pre>
<p>こちらは，左右の padding をネガティブマージンで解消しています。</p>
<h4>ネガティブマージンで前の要素の横に続ける</h4>
<p>フッターなどで。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-3.gif" alt="sample：ネガティブマージンで前の要素の横に続ける1" /></p>
<pre class="xhtml"><code>&lt;div id=&quot;footer&quot;&gt;
  &lt;p&gt;&lt;a href=&quot;http:www.d-spica.com/&quot;&gt;d-spica home&lt;/a&gt; | &lt;a href=&quot;http:blog.d-spica.com/&quot;&gt;d-spica blog&lt;/a&gt;&lt;/p&gt;
  &lt;p class=&quot;credit&quot;&gt;Copyright&amp;copy; d-spica.&lt;/p&gt;
&lt;/div&gt;</code></pre>
<pre class="css"><code>div#footer {
  border-top: solid 2px #999;
  padding: 20px 5px;
  line-height: <strong>1.5</strong>;
}

div#footer p {
  margin: 0;
}

div#footer p.credit {
  <strong>margin-top: -1.5em;</strong>
  text-align: right;
}</code></pre>
<p>縦方向の margin は，ボックスの上下の間隔を作りますが，ネガティブマージをとると，間隔が詰まることになります。</p>
<p>後のほうの p.credit を，ネガティブマージンでちょうど1行分上にあげて（詰めて）います。</p>
<p>前回，<a href="http://blog.d-spica.com/entry/080512dtfloat.html">dtをfloatする場合の注意点</a> で紹介した，dt と dd を横並びにするのも，ネガティブマージンできます。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-4.gif" alt="sample：ネガティブマージンで前の要素の横に続ける2" /></p>
<pre class="xhtml"><code>&lt;dl&gt;
  &lt;dt&gt;2008-05-12&lt;/dt&gt;
  &lt;dd&gt;ページ5を更新しました。テキストテキストテキスト。&lt;/dd&gt;
  &lt;dt&gt;2008-05-10&lt;/dt&gt;
  &lt;dd&gt;ページ4を更新しました。テキストテキストテキスト。&lt;/dd&gt;
  &lt;dt&gt;2008-05-07&lt;/dt&gt;
  &lt;dd&gt;ページ3を更新しました。テキストテキストテキスト...。&lt;/dd&gt;
  &lt;dt&gt;2008-05-06&lt;/dt&gt;
  &lt;dd&gt;ページ2を更新しました。テキストテキストテキスト...。&lt;/dd&gt;
  &lt;dt&gt;2008-05-04&lt;/dt&gt;
  &lt;dd&gt;ページ1を更新しました。テキストテキストテキスト。&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<pre class="css"><code>dl {
  line-height: <strong>1.5</strong>;
}

dl dt {
  width: 7em;
}

dl dd {
  <strong>margin: -1.5em</strong> 0 10px 7em;
  margin-bottom: 10px;
}</code></pre>
<p>floatして横並びにするよりも便利な場合が多々あります。</p>
<h4>IEでのネガティブマージン</h4>
<p>本来なら，このように表示されるはずなのですが...。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-6.gif" alt="sample：左右にネガティブマージン" /></p>
<pre class="xhtml"><code>&lt;div class=&quot;section&quot;&gt;
  &lt;p class=&quot;first&quot;&gt;12345678901234567890&lt;br /&gt;
    12345678901234567890&lt;/p&gt;
  &lt;p class=&quot;second&quot;&gt;12345678901234567890&lt;br /&gt;
    12345678901234567890&lt;/p&gt;
  &lt;p class=&quot;third&quot;&gt;12345678901234567890&lt;br /&gt;
    12345678901234567890&lt;/p&gt;
  &lt;p class=&quot;fourth&quot;&gt;12345678901234567890&lt;br /&gt;
    12345678901234567890&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
<pre class="css"><code>div.section {
  margin: 10px;
  border: solid 10px #CCC;
  padding: 10px;
  <strong>width: 372px;</strong>
}

div.section p {
  padding: 5px;
  border: solid 1px #666;
  background: #F3F3F3;
}

div.section p.first {
  margin: 10px -10px;
}

div.section p.second {
  margin: 10px -20px;
}

div.section p.third {
  margin: 10px -30px;
}

div.section p.fourth {
  margin: 10px -40px;
}</code></pre>
<p>IE6では，ネガティブマージンをとった要素を包含する祖先要素に <em>width が明示的に指定してあると，その祖先要素の padding辺を越えた部分が表示されなくなります</em>。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-5.gif" alt="sample：祖先要素にwidthを指定した場合のIE6での表示" /></p>
<p>IE7では，左側は表示されますが，右側が表示されなくなります。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/negative-margin-7.gif" alt="sample：祖先要素にwidthを指定した場合のIE7での表示" /></p>
<h4>参考</h4>
<p>各ブラウザでの表示を確認できるように，以下に同じ内容をまとめておきましたので，参考にしてください。</p>
<ul class="link-list">
<li><a href="http://www.d-spica.com/try/negative-margin.html">CSS - ネガティブマージン | Try | d-spica</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>dtをfloatする場合の注意点</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080512dtfloat.html" />
    <id>tag:blog.d-spica.com,2008://1.42</id>

    <published>2008-05-12T09:03:58Z</published>
    <updated>2008-06-20T14:35:24Z</updated>

    <summary> dl の定義リストで，dt を float させることがよくあります。このとき注意したい点をまとめておきます。 新着情報のようなところで，更新日を dt で，更新内容を dd でマークアップした場合を想定してみましょう。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dl" label="dl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="float" label="float" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>dl の定義リストで，dt を float させることがよくあります。このとき注意したい点をまとめておきます。</p>
<p>新着情報のようなところで，更新日を dt で，更新内容を dd でマークアップした場合を想定してみましょう。</p>
</div>]]>
        <![CDATA[<p>まず，XHTMLでのマークアップは次のような感じです。</p>
<pre class="xhtml"><code>&lt;dl class=&quot;recent&quot;&gt;
  &lt;dt&gt;2008-05-12&lt;/dt&gt;
  &lt;dd&gt;ページ5を更新しました。テキストテキストテキスト。&lt;/dd&gt;
  &lt;dt&gt;2008-05-10&lt;/dt&gt;
  &lt;dd&gt;ページ4を更新しました。テキストテキストテキスト。&lt;/dd&gt;
  &lt;dt&gt;2008-05-07&lt;/dt&gt;
  &lt;dd&gt;ページ3を更新しました。テキストテキストテキスト...。&lt;/dd&gt;
  &lt;dt&gt;2008-05-06&lt;/dt&gt;
  &lt;dd&gt;ページ2を更新しました。テキストテキストテキスト...。&lt;/dd&gt;
  &lt;dt&gt;2008-05-04&lt;/dt&gt;
  &lt;dd&gt;ページ1を更新しました。テキストテキストテキスト。&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<h4>基本形</h4>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-0.gif" alt="sample：基本形" /></p>
<pre class="css"><code>dl.recent dt {
  clear: left;
  float: left;
  width: 7em;
}

dl.recent dd {
  margin-left: 7em;
}</code></pre>
<p>次の点に注意してください。</p>
<ul>
  <li>dt で前の float を clear します。</li>
  <li>表示フォントサイズを大きくしても折り返さないように，dt の width は <em>em</em> で。</li>
  <li>同様に dd の margin も <em>em</em> で。</li>
  <li>基本的に横方向の margin, padding, width を <em>em</em> で指定しておくとよいでしょう。</li>
</ul>
<h4>縦方向の間隔をとる</h4>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-1.gif" alt="sample：縦方向の間隔をとる（ddにmargin）" /></p>
<pre class="css"><code>dl.recent dt {
  clear: left;
  float: left;
  width: 7em;
}

dl.recent dd {
  margin-left: 7em;
  margin-bottom: 10px;
}</code></pre>
<p>dd に<code>margin-bottom: 10px;</code>をとります。dt に縦方向の margin をとると，IE以外のブラウザでズレが出ます。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-3.gif" alt="sample：dtにmarginをとる（IE以外）" /></p>
<pre class="css"><code>dl.recent dt {
  clear: left;
  float: left;
  width: 7em;
  margin-bottom: 10px;
}

dl.recent dd {
  margin-left: 7em;
}</code></pre>
<p>このズレを出さないためには，</p>
<ul>
  <li>縦方向の margin, padding, border, height の総計が，dd のほうが（dt よりも）高くなるようにします。</li>
</ul>
<p>IE6, 7 では，このズレは出ません。</p>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-2.gif" alt="sample：dtにmarginをとる（IE）" /></p>
<h4>dtの横に隣り合う部分がIE6で3px右にずれる</h4>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-4.gif" alt="sample：IE6でddの1行目が右にずれる" /></p>
<p>IE6では，floatした dt の横に隣り合う部分，dd の1行目が右にずれます。</p>
<p>dd のほうに zoom: 1; をあてることでズレは一応解消します。しかし，この方法は，他のところで支障がでる場合があるので，注意して使ってください。</p>
<pre class="css"><code>dl.recent dt {
  clear: left;
  float: left;
  width: 7em;
}

dl.recent dd {
  margin-left: 7em;
  margin-bottom: 10px;
  zoom: 1;
}</code></pre>
<h4>dtにborderを入れる</h4>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-5.gif" alt="sample：dtにborderを入れる" /></p>
<pre class="css"><code>dl.recent dt {
  clear: left;
  float: left;
  width: 7em;
  padding: 2px 0.5em;
  border-left: solid 0.5em #CCC;
  border-top: solid 1px #CCC;
}

dl.recent dd {
  margin-left: 8.5em;
  margin-bottom: 10px;
  padding: 3px 0;
}</code></pre>
<p> border-width も左右は em で指定し，</p>
<ul>
  <li>dtのwidth + dtの左右のpadding + dtの左右のborder-width = ddの左のmargin</li>
</ul>
<p>となるようにしています。</p>
<p>縦方向の margin, padding, border も dt と dd で位置が合うように，また dt が dd より高くならないように調整します。</p>
<h4>dt, ddを通してborderを入れる</h4>
<p class="sample"><img src="http://blog.d-spica.com/illust/dt-float-6.gif" alt="sample：dt, ddを通してborderを入れる" /></p>
<pre class="css"><code>dl.recent dt {
  clear: left;
  float: left;
  width: 7em;
  padding: 10px 0.5em;
}

dl.recent dd {
  margin-left: 0;
  padding: 10px 0.5em 10px 8em;
  border-bottom: solid 1px #CCC;
}</code></pre>
<p> dd の左の余白を margin ではなく padding にすることによって，左隅から border が引かれます。</p>
<p> この場合 dd に zoom: 1; をあてると，dd がさらに 8em（borderも含めて）右に寄ってしまうので注意してください。</p>
<h4>表示フォントサイズの変更に対応するには</h4>
<p>dt を float した場合，ブラウザの表示フォントサイズを大きくすると，レイアウトが崩れることがよくあります。</p>
<p>横方向の長さを <em>em</em> で指定することで，表示フォントサイズの変更にある程度まで対応できるでしょう。</p>
<p>また，dt と dd の line-height や font-size を同じにしておくと，dt が dd より高くなってずれるというトラブルも起きにくくなります。</p>
<h4>参考</h4>
<p>各ブラウザでの表示を確認できるように，以下に同じ内容をまとめておきましたので，参考にしてください。</p>
<ul class="link-list">
<li><a href="http://www.d-spica.com/try/dt-float.html">CSS - dtをfloatする場合の注意点 | Try | d-spica</a></li>
</ul>]]>
    </content>
</entry>

<entry>
    <title>HTML 5 の構造を表現する新要素</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080509html5.html" />
    <id>tag:blog.d-spica.com,2008://1.41</id>

    <published>2008-05-09T04:08:35Z</published>
    <updated>2008-07-01T11:59:11Z</updated>

    <summary> idの命名に迷ったら このエントリで XHTML の Role属性モジュールについて書きました。似たような考え方は HTML 5 にもあります。マークアップ言語の「構造を表現する力をアップさせる」という方向性です。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="html" label="HTML" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-web.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<ul class="link-list">
<li><a href="http://blog.d-spica.com/entry/071019role.html">idの命名に迷ったら</a></li>
</ul>
<p>このエントリで XHTML の Role属性モジュールについて書きました。似たような考え方は HTML 5 にもあります。マークアップ言語の「構造を表現する力をアップさせる」という方向性です。</p>
</div>]]>
        <![CDATA[<h4>HTML 5 の新要素</h4>
<p>HTML 5 は，現在<abbr title="World Wide Web Consortium">W3C</abbr>で策定中の段階にあります。Web上に公開されている情報も「草案（Working Draft）」で，今後変更される箇所も出てくると思います。</p>
<p>さて，その HTML 5 で新たに追加される「構造を示すための要素」をいくつか紹介してみましょう。</p>
<blockquote cite="http://standards.mitsue.co.jp/resources/w3c/TR/2008/WD-html5-diff-20080122/#new-elements">
<ul class="link-list">
<li><a href="http://standards.mitsue.co.jp/resources/w3c/TR/2008/WD-html5-diff-20080122/#new-elements">HTML 5 における HTML 4 からの変更点：3.1. 新しい要素</a> より</li>
</ul>
<p>文書のより良い構造化のため、次の要素が新しく追加されました。</p>
<dl>
  <dt>section</dt>
  <dd>要素は文書やアプリケーションにおける一般的なセクションを表します。h1-h6 と共に用いることで、文書構造を示唆することができます。</dd>
  <dt>article</dt>
  <dd>要素は blog エントリや新聞記事など、文書の中で独立した一片の内容を表します。</dd>
  <dt>aside</dt>
  <dd>要素はページのほかの部分とわずかにのみ関係する一片の内容を表します。</dd>
  <dt>header</dt>
  <dd>要素はヘッダにあたるセクションを表します。</dd>
  <dt>footer</dt>
  <dd>要素はフッタにあたるセクションを表します。フッタには作者に関する情報、著作権に関する情報などを含むことができます。</dd>
  <dt>nav</dt>
  <dd>要素はナビゲーションを目的とした、一つのセクションを表します。 </dd>  
</dl>
<p>... 略 ...</p>
</blockquote>
<p>HTML 5 で新たに追加される要素については以下も参考になると思います。</p>
<ul class="link-list">
<li><a href="http://www.ibm.com/developerworks/jp/xml/library/x-html5/index.html">HTML 5 の新要素</a></li>
</ul>
<h4>同じ要素でも，どこにあるかによって意味合いが違ってくる</h4>
<p>たとえば，サイドナビにある<code>&lt;h2&gt;Navigation&lt;/h2&gt;</code>という見出しと，メインとなる文書の中にある<code>&lt;h2&gt;Navigation&lt;/h2&gt;</code>という見出しは，その役割や重みが違ってきます。サイドナビにあるほうは「ここがナビゲーションですよ」という意味で，この後に，各ページへのリンクなどが並ぶことになります。メインの文書にあるほうは「ナビゲーションについて書きますよ」という意味で，この後にナビゲーションについての説明なり論考なりが書かれることになります。</p>
<p>見出しだけでなく，<code>strong</code>や<code>em</code>，<code>ul</code>や<code>dl</code>といったリストも，サイドナビにあるものと，メインの文書にあるものとでは意味合いが違ってくるでしょう。</p>
<p><strong><code>aside，article</code></strong>という要素を使うことによって，こうした違いをはっきりと示すことができます。</p>
<h4>構造を明確にしたマークアップが果たす目的</h4>
<p>検索をするような場合，article要素の中に「Navigation」というキーワードがあったほうが，asideにあるときよりも，より「Navigation」について詳しく書かれていると予想できるでしょう。</p>
<p>article要素の中にあるheading（見出し）要素や，storong，em要素を抽出して，そのページの内容を示すということもできるでしょう。</p>
<p>XHTML の Role属性や HTML 5 のこうした新要素を使うことによって，ノイズ（本来必要でない情報）をできるだけ除去してページの内容を解析・処理できるようになるでしょう。余計な情報で探しづらくなったり，判断しにくくなったりといったことも少なくなります。</p>
<p>構造をきちんと表現したマークアップは，快適に，便利にWebを活用できる環境を作っていくことになります。</p>
<h4>id，classの命名の参考に</h4>
<p>各ブラウザの HTML 5 への完全な対応は，しばらく先になると思いますが，現在，id や class の命名でお悩みの方は，XHTML の Role属性とあわせ，これらの新要素を参考にするのもよいかもしれません。</p>]]>
    </content>
</entry>

<entry>
    <title>Webと紙モノが近くなる？</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080502print.html" />
    <id>tag:blog.d-spica.com,2008://1.40</id>

    <published>2008-05-02T12:14:18Z</published>
    <updated>2008-07-29T02:29:11Z</updated>

    <summary> ある資料をPDF版とHTML版で作成することになりした。まず作ったのは，HTML版。サーバーにアップしておけば，関係する皆さんに確認していただき，その都度ご意見や修正点をお知らせいただけます。作成・修正作業もスムーズに進むでしょう。内容がほぼ確定したところでPDF版を作ることにしました。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="Design" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="webstandards" label="webstandards" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-design.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>ある資料をPDF版とHTML版で作成することになりした。まず作ったのは，HTML版。サーバーにアップしておけば，関係する皆さんに確認していただき，その都度ご意見や修正点をお知らせいただけます。作成・修正作業もスムーズに進むでしょう。内容がほぼ確定したところでPDF版を作ることにしました。</p>
</div>]]>
        <![CDATA[<h4>HTMLからPDFに落とす</h4>
<p>さて，このPDF版，MS Word とか <a href="http://www.apple.com/jp/iwork/pages/">iWorkのPages</a> で作ったり，ちゃんとしたものだったら <a href="http://www.adobe.com/jp/products/indesign/">InDesign</a> や <a href="http://www.adobe.com/jp/products/illustrator/">Illustrator</a> で作るという手もあるのですが，せっかくHTML版ができているのだから，これを使うことにしました。</p>
<p>印刷用のCSSをあてて，印刷するかわりにPDFで保存します。こうしておけば，しばらくして内容を更新したりする場合も，HTML版の修正だけで済みます。</p>
<p>印刷用のCSSをあてても，ブラウザによって幅や背景画像など異なる点がいくつか出てきます。今回はPDFファイルに落とすことが目的なので，クロスブラウザということは考慮せず，<a href="http://www.apple.com/jp/safari/">Safari</a> に特化したCSSをあてました。（Firefoxだと背景画像がきれいに入らないんです）</p>
<p class="sample-block"><img src="http://blog.d-spica.com/illust/print-css.jpg" alt="figure：PDF版の一部" width="200" height="180" class="sample" />画像の解像度にちょっと問題はありますが，用途が内部資料という位置づけなら十分な出来映えです。</p>
<h4>HTML+CSSで印刷</h4>
<p>Webと紙モノは，見せ方も違うし解像度も違うし，それぞれ別のデータを作る...というのが当たり前でした。しかし，CSSでいろいろな見せ方ができるようになると，同じHTMLをディスプレイで見せたり，印刷したりと，CSSの対応だけで，データのかなりの部分が共有できるはずです。</p>
<p>CSSの印刷関連のプロパティがもう少し充実して，それを実装したブラウザが登場すると，HTML+CSSで見栄えもきれいな資料や小冊子が印刷できるようになるでしょう。もしかすると，HTML+CSSでのデータ入稿を受け付けてくれるような印刷屋さんも出てくるかもしれません。</p>]]>
    </content>
</entry>

<entry>
    <title>Re: CSSによるデザインワークと相性のよいHTMLって？</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080423friendlyhtml.html" />
    <id>tag:blog.d-spica.com,2008://1.39</id>

    <published>2008-04-23T07:48:32Z</published>
    <updated>2008-06-20T14:38:05Z</updated>

    <summary> CSSを充てやすいHTMLと，そうでないHTMLがあることは確かです。 ウノウラボ Unoh Labs : CSSによるデザインワークと相性のよいHTMLって？ id，class のつけ方など大変参考になるので，ぜひご一読ください。 さて，ではぼくはどうしているか，ということで，yamazakiさんと少々違う点を書いておきます。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html" label="HTML" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xhtml" label="XHTML" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>CSSを充てやすいHTMLと，そうでないHTMLがあることは確かです。</p>
<ul class="link-list">
<li><a href="http://labs.unoh.net/2008/04/csshtml.html">ウノウラボ Unoh Labs : CSSによるデザインワークと相性のよいHTMLって？</a></li>
</ul>
<p>id，class のつけ方など大変参考になるので，ぜひご一読ください。</p>
<p>さて，ではぼくはどうしているか，ということで，yamazakiさんと少々違う点を書いておきます。</p>
</div>]]>
        <![CDATA[<h4>idやclassが無闇に増えていくのは好ましくない</h4>
<p>CSSでデザインを施すために id や class が無闇に増えていくのは，あまり好ましくないと思っています。たとえば，ナビゲーション。</p>
<ul>
  <li>ヘッダーにあるグローバルナビゲーション</li>
  <li>フッターにある補助的なナビゲーション</li>
  <li>サイドバーにあるナビゲーション</li>
  <li>メインコンテンツにあるページ内のナビゲーション</li>
</ul>
<p> などは，ひとつひとつに異なる id または class をふらなくても</p>
<ul>
  <li><code>div#header ul.navigation</code></li>
  <li><code>div#footer ul.navigation</code></li>
  <li><code>div#footer p.navigation</code></li>
  <li><code>div#sub ul.navigation</code></li>
  <li><code>div#main ul.navigation</code></li>
  <li><code>div#main p.navigation</code></li>
</ul>
<p>という方法で，それぞれ特定できます。最低限，navigation という class がひとつあれば足りるということになります。それぞれのナビゲーションの働きを明確にするために，それぞれ異なる id または class をふることを否定するものではありませんが，必要以上に細分化しなくても大丈夫でしょう。</p>
<h4>id，class は大きなブロックからふり，細部にはふらない</h4>
<p>基本的に，id，class は大きなブロック（祖先要素）からふり，細部（子孫要素）にはふらない，という方針でやっています。</p>
<p>ページの更新や修正の作業は，リストアイテムをひとつ増やすとか，段落をひとつ足すとか，表に1行挿入するといった細部に関わるもの多く，一度決まった大枠を変更することはあまりありません。</p>
<p>更新のたびに，こうした細かいところに id，class をふっていくのは，あまり賢いやり方ではないように思うからです。コーディングした人とは別の人が更新するような場合は特に，ミスの原因になりやすいところです。</p>
<h4>将来を見通して</h4>
<p>IE6が疑似要素 first-child に対応していないために li に
  class=&quot;first&quot; や class=&quot;last&quot; をふる必要が出てくることもあります。しかし，アイテムをひとつ追加したいというとき，それが first より前だったり，last より後ろだったら，この属性を書き換えなければならなくなります。</p>
<p>IE6のユーザが減少していけば，この class はいずれ要らなくなるものでしょう。あれば，かえってメンテナンス性が悪くなります。</p>
<p>場合によっては，こうした事情を説明した上で class=&quot;first&quot; を必要としないデザインに変更する，というのもひとつの方法だと思っています。</p>
<p>table の tr ごとに class=&quot;odd&quot;，class=&quot;even&quot; というのも同様で，もし，途中に1行だけ挿入するときは，それ以降の tr要素にある class を書き換えなければならなくなります。こちらも <a href="http://www.w3.org/TR/css3-selectors/#structural-pseudos">nth-child</a> という疑似クラスが各ブラウザに実装されれば，class をふる必要はなくなります。</p>
<h4>body要素に id と class をふる </h4>
<p>body要素に id と class をふるようにしています。だいたい，id にはページ名，class にはカテゴリ名を入れます。</p>
<p>こうしておくと，あるページ（カテゴリ）のある要素を特定してデザインを施すことができます。FAQのカテゴリの各ページの見出しだけ，他のカテゴリとは違うデザインにしたいとか，求人情報のページの dl だけ，他の dl とは別にしたいというときに，</p>
<ul>
  <li><code>body.faq div#main h3</code></li>
  <li><code>body#recruit div#main dl dt</code></li>
  <li><code>body#recruit div#main dl dd</code></li>
</ul>
<p>とセレクタを記述します。</p>
<p>これで，HTMLファイル内に style要素や style属性でCSSを書くということや，特にその要素だけ別の id や class をふるといったことをせずにすみます。カテゴリごとに異なる色を使いたいときなども，CSSでの対応が楽になります。</p>
<h4>コーディングの流儀は様々だけど</h4>
<p>こうしたことを考えるうえで基準となっているのが次のようなことです。</p>
<ul>
  <li>structure（構造）とpresentation（見栄え）がHTMLとCSSに分離できているか。</li>
  <li>変更が面倒にならないか。メンテナンス性が低下しないか。</li>
  <li>他の人が見ても分かりやすいか。</li>
</ul>
<p>おそらくこれらは，コーディングの流儀や好みによって，様々な方法があるのだと思います。何が良い・悪いということでなく，そういうやり方もある，とご理解いただくのがよいと思います。</p>
<p>が，HTMLやCSSをいじる（書く）人たちの間で統一したルールがあるということが重要...という点は間違いありません。</p>]]>
    </content>
</entry>

<entry>
    <title>flaotを解除する3つの方法</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080418clear.html" />
    <id>tag:blog.d-spica.com,2008://1.38</id>

    <published>2008-04-18T12:33:21Z</published>
    <updated>2008-06-20T14:44:30Z</updated>

    <summary> 以前，clearfix を紹介するエントリを書きました。 clearfixでfloatを解除 float を解除しないと，float した要素を含む親要素の border や background が途中で切れてしまうことがあります。 ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="float" label="float" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>以前，clearfix を紹介するエントリを書きました。</p>
<ul class="link-list">
<li><a href="http://blog.d-spica.com/entry/070307clearfix.html">clearfixでfloatを解除</a></li>
</ul>
<p>float を解除しないと，float した要素を含む親要素の border や background が途中で切れてしまうことがあります。</p>
</div>]]>
        <![CDATA[<h4>clearfix</h4>
<p>float とは文字通り「浮動」させることで，概念上は浮動した要素は親要素に入っていないことになります。 </p>
<p><img src="http://blog.d-spica.com/illust/float-1.gif" alt="figure : floatした要素の高さは親要素の高さに反映されない" width="370" height="140" /></p>
<p>clear すると，clear した要素のところまで親要素の高さが出てきます。</p>
<p><img src="http://blog.d-spica.com/illust/float-2.gif" alt="figure : clearした要素のところまで親要素の高さが出る" width="392" height="161" /></p>
<p>これをCSS上で処理するのが clearfix です。</p>
<h4>overflow: hidden;</h4>
<p>しかし，clearfix を使わなくても，</p>
<pre class="css">div.parent {
  overflow: hidden;
  width: 540px;
}</pre>
<p>という記述で，親要素の border や background を下まで表示させることができ，回り込みを終了できます。</p>
<p> <abbr title="InternetExplorer">IE</abbr>以外のモダンブラウザは，<code>overflow: hidden;</code>とすることで，float した要素の高さが，それを含む親要素にも反映されるようになります。</p>
<p> IEでは，親要素の width か height を明示的に指定すると，float した子要素の高さが反映されるようになります。</p>
<p>このあたりの詳細は次のページを参考にしてください。</p>
<ul class="link-list">
<li><a href="http://gyauza.egoism.jp/clip/archives/2007/06/070602-overflow-hidden-clear/">overflow:hiddenでfloatをclear - とその理由 | Takazudo Clipping*</a></li>
</ul>
<h4>flaotを解除する3つの方法 </h4>
<p>float を解除し，float した要素の高さを含むように親要素の高さを決める方法として，3つの方法があるわけです。使用の優先順を付けるとすると...。</p>
<dl>
  <dt>1. 適当な要素で clear</dt>
  <dd>これがもっとも確実で，問題が少ないな方法でしょう。しかし，clear する適当な要素が入れられない場合もあります。</dd>
  <dt>2. 親要素に<code>overflow: hidden;</code> と width または height を明示</dt>
  <dd>clearfix のような仰々しい記述をしなくて済むので，手軽に使えます。しかし，<code>overflow: hidden;</code>を充てると困る場合，width や height を指定しない方がよい場合もあります。</dd>
  <dt>3. clearfix</dt>
  <dd>上記2つが使えない場合のとっておきとして，用意しておくのがよさそうです。</dd>
</dl>
<div id="footnote">
  <p><code>overflow: hidden;</code>による方法は厳密には float を clear したことにはなっていません。十分な高さが確保されたため，後続する要素が下にまわったというだけのことです。また，この方法では Netscape7.1 で内容が表示されなくなります。</p>
</div>]]>
    </content>
</entry>

<entry>
    <title>カレンダーをリストでマークアップ</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/080214calender.html" />
    <id>tag:blog.d-spica.com,2008://1.37</id>

    <published>2008-02-14T10:11:28Z</published>
    <updated>2008-07-03T15:00:45Z</updated>

    <summary> 先月，カレンダーをリストでマークアップするという記事をコリスさんのところで読みました。 [CSS]テーブル要素を使用しないで制作するカレンダー | コリス 元記事はこちら。 pixelspread : Tableless Calendar In Use ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xhtml" label="XHTML" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>先月，カレンダーをリストでマークアップするという記事をコリスさんのところで読みました。</p>
<ul class="link-list">
<li><a href="http://coliss.com/articles/build-websites/operation/css/736.html">[CSS]テーブル要素を使用しないで制作するカレンダー | コリス</a></li>
</ul>
<p>元記事はこちら。</p>
<ul class="link-list">
<li><a href="http://pixelspread.com/blog/317/tableless-calendar-in-use">pixelspread : Tableless Calendar In Use</a></li>
</ul>
</div>]]>
        <![CDATA[<h4>カレンダーはtableでなければならないか</h4>
<p>ぼくも最初は「カレンダーをリストでマークアップってどうなの？」と思ったのです。脱<code>table</code>レイアウトと言っても，<code>table</code>を使うべきところはある。曜日を<code>th</code>に入れて，それぞれの日を曜日に関連づけることができる。<code>ul</code>や<code>ol</code>にしたらそれはわからなくなる。なんて安易に考えていたのです。</p>
<p>しかし，我的春秋のゆうさんの記事を読んで，目からウロコ！でした。</p>
<ul class="link-list">
<li><a href="http://wd.dsp.co.jp/web/idea/2463.html">一歩先のWeb標準 ♯10 | Webデザイナー・クリエイター > アイデアノート | withD</a></li>
</ul>
<p>前半部分は，カレンダーを<code>ul</code>でマークアップすることへの反響が簡単にまとめられています。</p>
<p>中盤あたりにこんなことが書いてありました。</p>
<blockquote cite="http://wd.dsp.co.jp/web/idea/2463.html">
<h5>時間の概念構造は不変、見せ方は可変</h5>
<p>ご承知の通り、現在のカレンダーには年月日と曜日という概念があります。これは不変です。なのに、ちまたにある紙媒体のカレンダーには、表形式、リスト形式、年表形式、日めくり式など、さまざまなデザインがありますよね？　逆にいえば、見た目のデザインは全然違うのに、背景にある時間概念は同じです。</p>
<p>これは同じ年月日と曜日を表すのにも、どの要素を重視するかでデザインが変わってくるということを意味しています。年月や時間の論理構造や意味は、不変（普遍）。でも見せ方は、目的に応じて可変。</p>
</blockquote>
<p>確かに，カレンダーにはいろんなデザインがあります。ぼくはマークアップするとき「<em>カレンダー ＝ 七曜表</em>」という概念にとらわれていたということですね。七曜表だから<code>table</code>だったんです。</p>
<p> <code>table</code>にしないことで，カレンダーはいろいろな見せ方ができるんですね。</p>
<h4>ulでカレンダーを作ってみる</h4>
<p>ゆうさんのサンプルでは，<code>ol, li</code>で日付の 1, 2, 3, 4, ... がマークアップされていました。</p>
<ul class="link-list">
<li ><a href="http://my-chunqiu.cocolog-nifty.com/html/calendar-test.html">リストからテーブル型カレンダーを表示</a></li>
</ul>
<p>ここでふと，「せっかく<code>ol</code>を使うなら，1, 2, 3, 4, ... は<code>list-style-type: decimal;</code>で表示させてもいいんじゃないか。1, 2, 3, 4, ... を366日分入れて，曜日の<code>class</code>を366日分入れて，という作業はしんどいぞ！」などと，根性なしのぼくは思ったのです。</p>
<p><code>ol</code>なら，何番目の月の何番目の日かは，すでにマークアップによって示されている。曜日も<code>li</code>の<code>class</code>属性に入れてある。<code>li</code>要素の内容には違うものを入れて，月日を表す数字は入れずにやってみよう。</p>
<pre class="xhtml">&nbsp;     &lt;li class=&quot;sun&quot;&gt;&amp;nbsp;&lt;/li&gt;
      &lt;li class=&quot;mon&quot;&gt;&amp;nbsp;&lt;/li&gt;
      &lt;li class=&quot;tue&quot;&gt;&amp;nbsp;&lt;/li&gt;
      &lt;li class=&quot;wed&quot;&gt;&amp;nbsp;&lt;/li&gt;
      &lt;li class=&quot;thu&quot;&gt;&amp;nbsp;&lt;/li&gt;
      &lt;li class=&quot;fri&quot;&gt;&amp;nbsp;&lt;/li&gt;
      &lt;li class=&quot;sat&quot;&gt;&amp;nbsp;&lt;/li&gt;</pre>
<p> を53回コピペで入れて，月の区切りに</p>
<pre class="xhtml">    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;February
    &lt;ol&gt;</pre>
<p>を入れて，最初と最後を<code>&lt;ol&gt;</code>と<code>&lt;/ol&gt;</code>でくくればカレンダーの枠は完成。今回は，要素の内容として（<code>&amp;nbsp;</code>のところに）六曜を入れてみました。</p>
<p> そうやって作ったのがこれ。</p>
<ul class="link-list">
<li><a href="http://www.d-spica.com/try/calender/">表示切り替えカレンダー</a></li>
</ul>
<p> マークアップはこんな感じです。</p>
<pre class="xhtml">&lt;div class=&quot;calender&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;jan&quot;&gt;&lt;span lang=&quot;en&quot;&gt;January&lt;/span&gt;&lt;span lang=&quot;ja&quot;&gt;睦月&lt;/span&gt;
      &lt;ol&gt;
        &lt;li class=&quot;tue hol&quot;&gt;先負　&lt;em&gt;元旦&lt;/em&gt;&lt;/li&gt;
        &lt;li class=&quot;wed&quot;&gt;仏滅&lt;/li&gt;
        &lt;li class=&quot;thu&quot;&gt;大安&lt;/li&gt;
        &lt;li class=&quot;fri&quot;&gt;赤口&lt;/li&gt;
        &lt;li class=&quot;sat&quot;&gt;先勝&lt;/li&gt;
        &lt;li class=&quot;sun&quot;&gt;友引&lt;/li&gt;
        &lt;li class=&quot;mon&quot;&gt;先負（11/29）&lt;/li&gt;
        &lt;li class=&quot;tue saku&quot;&gt;赤口（12/01）&lt;/li&gt;
        &lt;li class=&quot;wed&quot;&gt;先勝&lt;/li&gt;
        ......
        &lt;li class=&quot;thu&quot;&gt;大安&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li id=&quot;feb&quot;&gt;&lt;span lang=&quot;en&quot;&gt;February&lt;/span&gt;&lt;span lang=&quot;ja&quot;&gt;如月&lt;/span&gt;
      &lt;ol&gt;
        &lt;li class=&quot;fri&quot;&gt;赤口&lt;/li&gt;
        ......
        &lt;li class=&quot;wed&quot;&gt;仏滅&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/li&gt; 
  &lt;/ol&gt;
 &lt;/div&gt;</pre>
<h4>CSSを切り替えていろんなパターンで</h4>
<p>さらに，マークアップしたXHTMLはそのままに，CSSを切り替えて</p>
<ul>
  <li> 一日1行</li>
  <li>数ヶ月ずつ横に並べて</li>
  <li>日曜日があたま</li>
  <li>月曜日があたま</li>
  <li>六曜表</li>
</ul>
<p> の5つのパーターンで表示できるようにしてみました。（IEには対応していません。たぶんひどいことになると思います）</p>
<p>7日を周期とするという概念をちょっとゆるめるために，六曜表も入れてみました。先勝，友引，先負，仏滅，大安，赤口の6日を周期とするものです。</p>
<p>ファイルは一式ダウンロードできますので，そちらでご覧いただいても，お好きにお使いいただいても結構です。</p>
<ul class="download">
<li><a href="http://www.d-spica.com/try/calender/calender.zip">calender.zip</a></li>
</ul>
<h4>CSSのツボ</h4>
<p>構造としては，日に対応する<code>li</code>要素を，1ヶ月分<code>ol</code>に入れて，月に対応する<code>li</code>要素にネストする。というふうになっています。この<em>月の<code>li</code>要素</em>と，<em>日の<code>li</code>要素</em>の幅を変えたり，<code>float</code>させたりすることでカレンダーの形を決めています。</p>
<dl>
  <dt>一日1行</dt>
  <dd> ふつうにリスト表示したものにちょっと飾りがついた程度です。</dd>
  <dt>数ヶ月ずつ横に並べて</dt>
  <dd> 月の<code>li</code>を<code>float: left;</code><br />
    31日までない月は<code>padding-bottom</code>で下に余白を入れてあります。<br />
    ウインドウを広げると，横に並ぶ月の数も増えます。お好みに合わせて。</dd>
  <dt>日曜日があたま</dt>
  <dd> 月の<code>li</code>の幅を固定して日の<code>li</code>が7日分入るようにします。<br />
    日の<code>li</code>を<code>float: left;</code><br />
    <code>li:first-child</code>セレクタで<code>magin-left: 201px;</code>とやって月のはじまりの位置を決めます。7日分並ぶと次は下に落ちていきます。</dd>
  <dt>月曜日があたま</dt>
  <dd> 日曜があたまのパターンから，月のはじまりの位置を一日分左にずらします。</dd>
  <dt>六曜表</dt>
  <dd> 月の<code>li</code>の幅を固定して日の<code>li</code>が6日分入るようにします。<br />
    あとは，七曜表と同じ。ただし，六曜は旧暦の月の初日で一度リセットされるので，旧暦の1日の位置も<code>margin-left</code>で指定します。</dd>
  </dl>
<p>まさに「構造（structure）は固定，見栄え（prasentation）はいろいろ」ということですね。<code>table</code>でマークアップすると，この柔軟性は得られません。</p>]]>
    </content>
</entry>

<entry>
    <title>IE6, 7 そして 8</title>
    <link rel="alternate" type="text/html" href="http://blog.d-spica.com/entry/071227ie.html" />
    <id>tag:blog.d-spica.com,2007://1.36</id>

    <published>2007-12-27T09:01:50Z</published>
    <updated>2008-07-06T09:57:08Z</updated>

    <summary> 今，InternetExplorer6, 7を無視したサイトを作っています。Webデザインについて，ぼくが今までに得た知識や経験をまとめて講座風にしたものです。（時間があるときに少しずつ書いているので，公開はしばらく先になりますが） ...</summary>
    <author>
        <name>麦</name>
        
    </author>
    
        <category term="XHTML/CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webstandards" label="webstandards" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.d-spica.com/">
        <![CDATA[<div class="lead">
<p><img src="http://blog.d-spica.com/img/base/ec-xhtml-css.jpg" alt="" width="120" height="120" class="eyecatch" /></p>
<p>今，InternetExplorer6, 7を無視したサイトを作っています。Webデザインについて，ぼくが今までに得た知識や経験をまとめて講座風にしたものです。（時間があるときに少しずつ書いているので，公開はしばらく先になりますが）</p>
</div>]]>
        <![CDATA[<h4>IEをターゲットブラウザから外す</h4>
<p>IE6, 7をターゲットブラウザから外したのは，Web標準を理解してもらう際にいくつか弊害があるからです。IE6, 7は，FirefoxやOperaなど他のブラウザと比べてCSSの実装が遅れていたり，レンダリングが特殊でバグ（？）が多く，これを解決するために余分な記述やCSSハックを入れたりしなければなりません。Web標準のよさを体現しにくいブラウザです。</p>
<p>読んでもらう人たちも，FirefoxやOpera，Safariを利用しているか，またはこれらのブラウザに乗り換えるのにあまり困難を伴わない人たちだろうと判断しました。</p>
<p>IEを無視してしまうと気持ちいいですね。IEが未対応のために今までためらっていたことも，どんどんできます。IEのための余分な記述やハックも必要なくなりました。訳のわからない挙動に悩まされることもありません。</p>
<h4><code>:after</code>疑似要素</h4>
<p>疑似要素の<code>:after</code>を使って本文中のリンクに「<code>&raquo;</code>」を入れてみました。</p>
<pre class="css"><code>div#main div.section a:after {
  content: &quot; &quot; &quot;\bb&quot;;
} </code></pre>
<h4>属性セレクタ</h4>
<p>ナビゲーションメニューには執筆予定のすべてのページのタイトルを列挙してあるのですが，未作成のページは「writing-now.html」にリンクさせています。属性セレクタでこのリンクの色を変えてみました。</p>
<pre class="css"><code>div#navigation ul li a {
  border-bottom: solid 1px #039;
  color: #039;
}

div#navigation ul li a[href=&quot;writing-now.html&quot;] {
  border-bottom: solid 1px #999;
  color: #999;
}
 
div#navigation ul li a:hover {
  background: #9CF;
}

div#navigation ul li a[href=&quot;writing-now.html&quot;]:hover {
  background: #CCC;
}</code></pre>
<p>IE6で見ると「<code>&raquo;</code>」が入らない，リンクの色が変わらないというだけのことなんですが...。IE7は上のような属性セレクタに対応していますが，<code>:after</code>疑似要素のほうは未対応です。</p>
<h4>そしてEI8</h4>
<p>開発中のIE8がAcid2のテストに合格したようです。</p>
<ul>
  <li ><a href="http://internet.watch.impress.co.jp/cda/news/2007/12/20/17952.html">IE8がAcid2テストに"合格"、2008年前半にはベータ版を公開予定 - INTERNET Watch</a></li>
  <li ><a href="http://japan.cnet.com/news/media/story/0,2000056023,20363754,00.htm">IE8、ウェブ標準準拠テストAcid 2に合格の見通し:ニュース - CNET Japan</a></li>
  <li ><a href="http://www.itmedia.co.jp/news/articles/0712/20/news029.html">IE 8のβ版は2008年前半にリリース - ITmedia News</a></li>
</ul>
<p>IEのための余分な記述やハックから解放されるなら，こんな喜ばしいことはありません。CSSの記述が同じなら，どのブラウザでも同じに表示される。このきわめてふつうの期待がやっと実現される。</p>
<p>でも，あと数年はIE6, 7がかなりのシェアを保つはずですから，完全な解決はまだ当分先でしょうね。</p>
<h4>後方互換性</h4>
<p>Microsoft側ではWeb標準に準拠することと同時に，後方互換性を強調しているようです。W3Cの示す仕様に沿って書かれたCSSも，その仕様に沿っていなかった過去のIE用に書かれたCSSも，ともに矛盾なくレンダリングするためにどんな方法をとるのか，とても気になるところです。</p>]]>
    </content>
</entry>

</feed>
