[CSS] clearfixの使い方を考える
現在のclearfix
以前は、IE6に対応させるためにソースがちょっと多かったですが、現在はかなりシンプルです。
.clearfix:after { content: ""; clear: both; display: block; }
これだけです。
これで、IE7以上の全てのブラウザに有効です。
clearfixの使い方
たまに、依頼先のソースが変だから修正してって依頼が舞い込んできたりします。
そういうときによくみかけるのが、floatさせた要素の下に空のdivでclass=”clearfix”っていうのがあります。
僕は個人的にこういうソースは大嫌いです。
floatを解除するために空のdivを置く意味がわかりません。
こういうことをすると、ソースが見にくくなり、修正もしにくくなります。
例えば下記のような感じです。
<div class="ul_left"> <ul class="float ns redarrow padl30"> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> </ul> <ul class="float ns redarrow padl30"> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> </ul> </div> <div class="clear"> clear both </div>
いかがですか?違和感がありませんか?
これは、実際にあった案件のソースです。
この場合、<div class=”clear”>の中にあるclear bothという文字はtext-indentで隠していました。
これを見た時は、さすがにがっくしきました。
全くサイトに関係ない文言を勝手に置き、それを見えなくしているのは制作サイドの手前勝手な都合でしかありません。
こういう場合、最悪のソースとしては下記の様になります。
<ul class="float ns redarrow padl30 clearfix"> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> </ul> <ul class="float ns redarrow padl30 clearfix"> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> </ul>
これでfloatは解除されています。
最悪、これで十分です。
もっとスマートに!
僕は基本的にclassをたくさんつけるのが好きではありません。
多くても、2〜3個です。
書籍などでは、パーツとして部品化して、それを組み合わせることで、目的のレイアウトにすることを推奨もしていますが、あまりなじめません。
大体使うパーツが決まっているわけだから、最初からそれに合わせて作ってしまう方が理にかなっていると思います。
部品化してしまうと、個別に対応するのにどんどんclassが増えていきます。
さて、先ほどのソース、僕のやり方だとこうなります。
<ul class="float_list"> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> <li><a href="#">横並びリンク</a> </li> </ul>
シンプルでしょ?
これだけで十分だと思っています。
必要なpaddingだとか、marginだとかは、このclassにしっかり設定してしまえばいいんです。
そして、clearfixは僕の場合、一個一個clearfixのところに追加していってます。
だから、clearfix部分だけは、ソースがごちゃごちゃになっている印象です。
実際、下記のようになっています。
.clearfix:after, .float_list:after { content: ""; clear: both; display: block; }
これは、例えなので2個しかありませんが、実際の案件では20近くはあります。
各classで改行しているので、そこまでぐちゃぐちゃというわけではありませんが、それぞれに:afterが付いているので、見にくいといえば見にくいです。
そのかわり、htmlのソースがシンプルになっているので、実際の修正とかは全然ラクです。
まとめ
マークアップは個人の自由なので、どのような方法でもいいですが、なるべく余計なものはなくしたいですね。
あまり人のものを批判したくないですが、たまーに、ほんとにたまーに、なんでこんなことしてんの?っていうソースに出会っちゃうんです。
そういう時は、シンプルにしているのも悪くないなと思いながら、修正してますw
clearfixなんて取り上げても、既にいろんなところで紹介されていますし、誰も見ないだろうけど、こうやるとclassを追加しなくてもいいんだよっていう事も覚えておいて損はないです。
ad
関連記事
-
-
[javascript] Google Maps javaScript API v3の使い方(応用編:Mapの色を変更する)
まだまだあるぞ!Google Maps javaScript API v3 さて、2回にわたって紹
-
-
[jQuery] 背景画像を画面いっぱいにするプラグイン
背景に、画像をいっぱいに広げて表示したいときってありますよね。 ちょうど、そういう必要があったため
-
-
[HTML] 初心者を脱却するためのHTMLの心構え!
デザインを見たら、まずレイアウトの方法をイメージしよう 僕は、基本的にデザインを頂いたときに、すぐ
-
-
[CSS] リンク先やファイルタイプに合わせてアイコンを自動で付くようにする!
柔軟に対応出来るCSS リンク先やリンクしているファイルに合わせて、こういうファイルだよと一目でわ
-
-
[HTML]デザインは、やはり大切だった!
デザイン無しでのサイト制作には限界がある 見切り発車で、 おさらいがてらWordPressのテーマ
-
-
[CSS] メディアクエリ(Media Queries)を考える
Media Queriesとは Media Queriesとは、画面環境に応じてCSSの適用範囲を
-
-
[Dreamweaver] テンプレート機能を使う!初級〜中級編
まだまだある便利機能! 既に、上級編まで紹介してしまってますが、抜けていたので、すこし簡単です。
-
-
[Dreamweaver] テンプレートの入れ子
テンプレートは入れ子に出来る! Dreamweaverのテンプレートは、ベースを作り、さらにそのベ
-
-
[CSS] 今さらだけど、覚えておきたい疑似クラス・疑似要素
さて、前回は、CSSのセレクタをおさらいしました。 そして、属性セレクタを取り上げている記事も合わ
-
-
[html5] おさらいがてらWordPressのテーマを作るためにHTML5で一から作るよ![第4回]
完全に放置してました、僕です。 別に忘れていた訳じゃないんですが、時間がありませんでした。