ふと、昔のサンプルを見て、今そんな組み方しないよ。とか思ってしまったので、最近もっぱらコレっていうのを書き書き。
コレに限らず、昔のエントリーを見てると、自分で無いな~使えねー!って突っ込みたくなるエントリーが多いっす・・・うぅ。
念じたら全部最近の書き方になおらないかな。
・・・
残念ながらなおらないと思うので、昔のエントリーを見る場合は、ちょっと気を付けたって下さい。
何気に大掛かりな計画は有るけれど、計画がでか過ぎて中々どうにもこうにも。
というかブログ書いてる暇有るなら、「お前アレやれよアレ。」ってお怒りの声が聞こえてきそうなので、アレに専念する為にまた大人しくしてるっぽいです。
---- こっから続き
最近フッターで区切りが有る場合は、:first-child疑似クラスを使って対応するケースが殆どです。
実際のサンプルも用意しました。
XHTMLはこんな感じ。
<div id="footer"> <ul> <li><a href="/">トップページ</a></li ><li><a href="/homepage/">ホームページ制作</a></li ><li><a href="/result/">実績紹介</a></li ><li><a href="/faq/">よくありそうな質問</a></li ><li><a href="/profile/">プロフィール</a></li ><li><a href="/contact/">お問い合わせ</a></li> </ul> <!-- / #footer --></div>
どっかのサイトのフッター部分をほぼそのまま持ってきました。
「>」を改行してるのは、inlineにした時の余白埋めるためです。
コメント使ってやるのと同じですね。
して、CSSは以下のようになっております。
#footer {
clear: both;
width: 830px;
margin-top: 20px;
padding: 15px;
background: #000;
}
#footer a {
color: #fff;
}
#footer a:hover {
color: #f0f;
}
#footer ul {
margin-bottom: 10px;
text-align: center;
}
#footer ul li {
display: inline;
margin-left: 10px;
padding-left: 10px;
border-left: 1px dotted #fff;
}
#footer ul li:first-child,
#footer ul li.firstChild {
margin-left: 0;
padding-left: 0;
border-left: 0;
}
デザイン指定部分も持ってきてるので若干ソースが長いですが、要はli要素に指定したのを、:first-child疑似クラスで一番最初のli要素だけ上書きします。
コレはIE6に対応していないので、対応させるためにjQuery使ってます。
最近常にjQueryは何らかの形で使うので。
では、IE6対応させるためのjQuery使ったやり方を。
まずは、head要素内でJSを読み込みます。
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">google.load("jquery", "1.3");</script>
<script src="./js/share.js" type="text/javascript" charset="utf-8"></script>
続いて、share.js(ファイル名は何でもいいですが)に以下を書き書きします。
$(document).ready(function() {
$('#footer ul li:first-child').addClass('firstChild');
});
これで、firstChildってクラス名が付くので、先ほどのCSSソースの最後の部分の指定がIE6で適応されます。
#footer ul li:first-child,
#footer ul li.firstChild {
margin-left: 0;
padding-left: 0;
border-left: 0;
}
ここの部分ですね。
当たり前ですが、JS使ってるので切ってる場合適用されませんが、IE6ユーザーでJS切っている人もレアだと思いますし、これから減っていくだけのブラウザですし、見た目としても有りえない崩れ方をする訳ではないので実用レベルかと思います。
まーコレも一つの「Progressive Enhancement」です。えぇ。
(横文字使ってみればイイと思ってるわけじゃないですよ)
とはいえ、どうしても嫌な場合普通にclass属性追加するしかないと思います。
Track Back [1]
今日のつぶやき from Twitter Log
Twitter / kanchi_206xtpのデイリーフィード – DailyFeed //////////////////////////...
by masak_k LOG|2009年08月08日(土)











comment [4]
1 - えど さん
なるほどー。.firstChild はよく使ってましたが、
jQueryを使ったほうが HTML はキレイに保てますね。
これくらいならJS切られてても問題なさそうですし。
今度からはこういう感じでコーディングしていきますw
P.S.
Googleアラートに載るなんてうらやましいッス。
URL|2009年7月 3日 13:07
2 - かんた さん
Firefox v3.0.13ですが、
#div p:nth-child(2n+1),
#div p.hogehoge {
color: #000;
}
疑似要素・クラスによっては、上記のようにまとめると、上手く表示できないみたいですね。
#div p:nth-child(2n+1) {
color: #000;
}
#div p.hogehoge {
color: #000;
}
と、分けると上手く動きます。
これはFirefox3.5では動くのかな?
2009年8月17日 15:10
3 - hirasawa さん
>かんたさん
Fx3.0では、:nth-child()疑似クラスには対応していなかったと思います。
なので、対応していないセレクタが有る場合、仕様的にその部分を無視するになるので、
カンマ区切りでグループ化した場合、クラスセレクタなど対応している方も無視されるのかなと。
3.5からは:nth-child()疑似クラスに対応しているので問題ないと思います。
URL|2009年8月18日 16:47
4 - かんた さん
ご回答ありがとうございます。
あっ、なるほどです。
:nth-child()疑似クラスが対応していないので、まんま無視されてたから動かなかったわけですね・・・!
2009年8月20日 15:36