[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
関連記事
-
-
[CSS] CSS3のtransitionを使ってみよう!
CSS3のTransitionは、そんなに難しくない! CSS3では、CSSのマークアップだけでア
-
-
[jQuery] Block Scrollプラグイン
今回は、ブロック毎にスクロールするjQueryプラグインのご紹介です。 Block Scroll
-
-
[CSS] メディアクエリ(Media Queries)を考える
Media Queriesとは Media Queriesとは、画面環境に応じてCSSの適用範囲を
-
-
[CSS]印刷用CSSの設定方法
印刷用のCSSは、設定が簡単! 普通にサイトを作っていると、結構印刷用のCSSの設定もお願いされま
-
-
[jQuery] OSX風のスクロールバーにするプラグイン!
trackpad-scroll-emulator trackpad-scroll-emulator
-
-
[CSS] リンク先やファイルタイプに合わせてアイコンを自動で付くようにする!
柔軟に対応出来るCSS リンク先やリンクしているファイルに合わせて、こういうファイルだよと一目でわ
-
-
[Dreamweaver] テンプレート機能初級編!
まずはベースとなるHTMLを作成しましょう。 Dreamweaverのテンプレートを作るには、ベー
-
-
[CSS] 今さらだけど、必ず覚えておきたいCSSセレクタ
CSSセレクタとは? CSSセレクタを意識する事はあまりないと思いますが、今回はおさらいがてら、C
-
-
[CSS] 複数のbackground-imageの設定方法
マルチBackground-imageを使ってみる CSS3では、背景画像を指定する際に複数の画像
-
-
[javascript] Google Maps javaScript API v3の使い方(応用編:マーカーを変更する)
いろんなことが出来るようになったv3 昨日、基本編を書きましたが、今回は応用編です。 v3に