[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

関連記事

[jQuery]背景画像にぼかしを入れるプラグイン

Blurrプラグインの紹介 BlurrはシンプルなjQueryのプラグインです。 そして、背景画

記事を読む

[jQuery] クリック時に波紋のような効果をつける

今回は、クリックした時に波紋のような効果をつけるjQueryプラグインの紹介です。 Ripple

記事を読む

[Dreamweaver] 不要な_notesを作成させない方法

みなさん、_notesで困ってませんか? Dreamweaverは、デフォルト設定で使用していると

記事を読む

[CSS] フォームや登録の進み具合をCSSだけで表現する方法

フォームや登録過程で、今どれくらい進んでいるのか利用者に対して表示する事はとても重要な事だと思います

記事を読む

[html5] おさらいがてらWordPressのテーマを作るためにHTML5で一から作るよ![第3回]

ブログの存在すら忘れてました、僕です。 完全放置プレイだったこの連載?を再開しなきゃと思い、重

記事を読む

[Dreamweaver] サイトタイトルを入力する枠を広げる!

デフォルトのままじゃ、狭い! DreamWeaverのタイトルを入力する枠があると思いますが、これ

記事を読む

[CSS] animationを使ってみる!

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

記事を読む

[Dreamweaver] テンプレート機能初級編!

まずはベースとなるHTMLを作成しましょう。 Dreamweaverのテンプレートを作るには、ベー

記事を読む

[CSS] 紙の様にふわっとしたエフェクトが全くつかえない!

寒くなってきて動きが鈍い僕です。こんにちわ。 さて、タイトルの件なのですが、たまに見か

記事を読む

[CSS] 今さらだけど、必ず覚えておきたいCSSセレクタ

CSSセレクタとは? CSSセレクタを意識する事はあまりないと思いますが、今回はおさらいがてら、C

記事を読む

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 ↑