[CSS] clearfixの使い方を考える
Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/users/1/juny/web/hidef/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524
現在の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] FlickerPlateを紹介します。
かっこいいプラグインで、フリックにも対応します。 Flickerplateは、シンプルでとても使い
-
-
[WordPress] 自作プラグインの設定など
プラグインを自作してみる WordPressでプラグインを作成する際の設定(フック)などをまとめて
-
-
[jQuery] Block Scrollプラグイン
今回は、ブロック毎にスクロールするjQueryプラグインのご紹介です。 Block Scroll
-
-
[CSS] メディアクエリ(Media Queries)を考える
Media Queriesとは Media Queriesとは、画面環境に応じてCSSの適用範囲を
-
-
[Dreamweaver] コーディングを早くする5つの方法
コーディングは、早くなる! 普段、Dreamweaverを使っている人で、SassやZenコーディ
-
-
[WordPress] 管理画面にテーブル(WP_List_Table)を表示する
WP_List_Table 管理画面で標準テーブルを表示したい場合は、WP_List_Tableを
-
-
[CSS] 紙の様にふわっとしたエフェクトが全くつかえない!
寒くなってきて動きが鈍い僕です。こんにちわ。 さて、タイトルの件なのですが、たまに見か
-
-
[jQuery] フォーカスポイントを決めて、そこを中心に切り抜くプラグインFocusPoint
FocusPoint FocusPointは、レスポンシブにクロップ(切り抜き)するjQueryの
-
-
[CSS] 複数のbackground-imageの設定方法
マルチBackground-imageを使ってみる CSS3では、背景画像を指定する際に複数の画像
-
-
[CSS]印刷用CSSの設定方法
印刷用のCSSは、設定が簡単! 普通にサイトを作っていると、結構印刷用のCSSの設定もお願いされま