[CSS] clearfixの使い方を考える

公開日: : 最終更新日:2014/08/09 CSS, Web制作 , ,

現在の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

関連記事

[CSS] ベンダープレフィックスはどこまで必要か?

各ブラウザが独自に先行実装しているCSS3 CSS3が現在、各ブラウザでも対応状況が進み、だいぶ使

記事を読む

[CSS]印刷用CSSの設定方法

印刷用のCSSは、設定が簡単! 普通にサイトを作っていると、結構印刷用のCSSの設定もお願いされま

記事を読む

[jQuery] FlickerPlateを紹介します。

かっこいいプラグインで、フリックにも対応します。 Flickerplateは、シンプルでとても使い

記事を読む

[jQuery] フォーカスポイントを決めて、そこを中心に切り抜くプラグインFocusPoint

FocusPoint FocusPointは、レスポンシブにクロップ(切り抜き)するjQueryの

記事を読む

[jQuery] 背景画像を画面いっぱいにするプラグイン

背景に、画像をいっぱいに広げて表示したいときってありますよね。 ちょうど、そういう必要があったため

記事を読む

[CSS] animationを使ってみる!

色の変化をCSSのみで実装できる! CSS3のキーフレームアニメーションでは、JSで出来る、背景色

記事を読む

[CSS] リンク先やファイルタイプに合わせてアイコンを自動で付くようにする!

柔軟に対応出来るCSS リンク先やリンクしているファイルに合わせて、こういうファイルだよと一目でわ

記事を読む

[HTML]デザインは、やはり大切だった!

デザイン無しでのサイト制作には限界がある 見切り発車で、 おさらいがてらWordPressのテーマ

記事を読む

[WordPress] 自作プラグインの設定など

プラグインを自作してみる WordPressでプラグインを作成する際の設定(フック)などをまとめて

記事を読む

[javascript] Google Maps javascript API v3の使い方(基本編)

Google Maps javaScript API v3とは Google Maps API V

記事を読む

ad

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ad

[PHP] curl転送してみる(googleに)

curlでgoogle画像検索APIにアクセスしてみます。 cu

[PHP] PDOでMySQLの接続確認をする

PDO PHPでMySQLに接続する際には、mysql_connec

[PHP] ランダムな英数字を生成する

便利系メソッド 今回はPHPでランダムな英数字を作成してみます。

[Swift] プロパティリスト(plist)の値を取得

plistからデータを取得してみます。 こちらのエントリーも参考にし

[Swift] Asset Catalogについて

XCode5から追加されたAsset Catalog。 いままで標準

→もっと見る

  • 1978年の七夕生まれ。 25才でweb業界の門を叩き、28才でフリーランスに。 現在は、フリーランスでマークアップ中心に、wordpressのカスタマイズやデザインをしております。 また、iPhoneアプリの開発もしております。
PAGE TOP ↑