|
|
第8回 「CSSによるデザインワークと相性のよいHTMLって?」に対する小林的提案
小林 信次
マークアップ・エンジニア
茨城県出身。1980年生まれ。専修大学経営学部卒業後,1年弱のニート生活を経て販売代理店の営業職を経験後,有限会社アイエイトワンに入社。主に,Webディレクション,マークアップを務める傍ら,講師活動・執筆活動を行う。allWebクリエイター塾ではCSS講習の講師。著書に「XHTML&CSSデザイン |基本原則,これだけ。」(共著,MdN発行)がある。
いつも良質なエントリでブックマークをたくさんもらっている「ウノウラボ Unoh Labs」というサイトがあります。少し前になりますが,そこで「CSSによるデザインワークと相性のよいHTMLって?」というエントリがありました。そこにはすでにたくさんのことが書かれていますが,今回は僕が実践していることを紹介します。 と,その前に,「CSSによるデザインワークと相性のよいHTML」についてちょっと説明しておきましょう。サイト作成の案件を進めていく過程では,「やっぱりこういう風にできないかな?」というデザイン変更に関するクライアントからの要望は必ずと言って良いほど出てきます。そんなとき,「CSSによるデザインワークと相性のよいHTML」でサイトを作成しておけば,CSSファイルにほんの数行の記述をするだけで対応できるケースがよくあります。 「Web標準」という概念には「文書構造と表現の分離」というキーワードが必ずと言って良いほど付いてきます。「マークアップを行う人がちょっと配慮してくれていたらできたのに…」ということが無いように,できる限り「CSSによるデザインワークと相性のよいHTML」を目指したいものです。 クラス属性に関する提案まずはウノウラボ「CSSによるデザインワークと相性のよいHTMLって?」の内容の概略から紹介しましょう。
小林的に思いつく,クラス属性に関する提案には
などがあります。 a要素の例ばかり示しましたが,例えばpdfへのリンクや外部リンクであれば,それらを明示するためのアイコンを背景画像として表示したいということがよくありますよね。こうしたスタイルへの対応にもクラス属性は役立ちます。 ほかにHTML作りにおける工夫もあります。HTMLの柔軟性を向上させるためのテクニックです。
h2・h3要素などが出現した場合ですので,以下のようなHTMLになります。
このようにしておけば,「装飾目的で左右にフロートさせた画像が,次のセクションに食い込むのがいやだ」という場合にCSS側で,
とでも記述すれば一括して解決できるわけです。 また,大見出し以下の内容には,「見た目的にも大見出しにぶら下がっている内容なんだよ」ということを明示するために,左側に20px程度の余白を指定してインデントを付けたいことがありますね。その場合
とすれば,やはり一括して管理することが可能となります。 上記の例では,「.section」に対して指定した内容を,さらに子要素の「.section」で打ち消すために,「.section .section」という子孫セレクタを利用しています。この記述をもっとスマートにしたいということであれば,「.section」に対して,見出しレベルに沿った連番を付けてあげると良いでしょう。 先のHTMLの例を,次のようにしておけば,「.section-lv3」のように,必要なdivをCSSで選択することが可能となります。
body要素へのID・クラス属性の指定も「CSSによるデザインワークと相性のよいHTML」作りの手段です。最近の僕のやり方ですが,IDとしては,ドメイン名を,クラス名にはディレクトリ名(やページ種別をあらわす名前)を付与するようにしています。 body要素へのID・クラス属性の指定により,CSSシグネチャが可能になります。つまり,「body.company ul { … }」などのセレクタを利用することで,属するカテゴリ内だけの何かをCSS側から選択できるようになるわけです。 最後に,これらのID・クラス名は必要・不必要にかかわらず一貫したルールに則って記述しておくことが大切です。デザイン案を実装するにあたり,これらのID・クラス名を必要としない場合でも記述することが必要,というわけです。 中村亨介さんが提供するJavaScriptライブラリ「yuga.js」を利用すると,tableのtrごとに「odd」「even」を割り振ったり,リスト系要素(ul,ol,dl)の最初と最後が特定できるようにしておいたりすることを,JavaScriptで制御できるようになります。マークアップを行う人にとっては,とても便利なライブラリですので,知らない方は一度チェックしてみてください。
連載新着連載目次へ >>
|