akkun_choi pediaの最新の日記
<< 前の日記へ 一覧を見る 次の日記へ >>

 

del.icio.usのタグ一覧を再現する

CSSでロールオーバーすると、オーバー時に読み込みを開始するため、一瞬真白になってしまう。JavaScriptを使えば事前に読み込ませることもできるけど、余計なファイルが増え、HTMLが汚くなるのであまり使いたくない。でもCSSでなとかやりたい。

それを実現するテクニックとして最近よく使われるのが背景画像の位置をずらすやり方です。Googleも節約のためにこの技使ってます。今回はdel.icio.usのタグ一覧が良いサンプルになりそうだったので、勉強がてら、再現してみました。


なの

direct_2008_09_15_名称未設定-1_r2_c2.jpg



まず素材をダウンロードします。自前で用意するの面倒なので、そのまま使っちゃいます。
http://l.yimg.com/hr/10331/img/del_sprite_tags.gif
見てのとおり、すべての画像が一枚に収められています。

画像指定のポイントはこれ。

a{
  background-image: url('del_sprite_tags.gif');
  background-position: 0px -159px;
}
a:hover{
  background-position: 0px -119px;
}

background-positionは背景画像の位置を指定します。bottomやrightなら結構使う機会もありますが、ピクセル単位でも指定できます。要素の左上位置からのoffsetを指定するっぽいです。正の値を入れるとど見えないところにいってしまうので負の値を入れます。これだけで画像の切り替えができます。

あとはブラウザのCSSをリセットして、paddingを適当に指定して揃えるとできあがり。複雑そうに見えて結構簡単です。

メリットは


デメリットは

  • background-positionで画像を指定するため、CSSが読みづらくなる


ってところでしょうか。画像とpositionの対応表さえあれば難なく使えそうな気はします。

del.icio.usのこのデザインはパンくずリストにも使えそうですね。

サンプル

全ソース

<html>
<head>
<style type="text/css">
*{
  margin:0px;
  padding:0px;
  line-height: 1;
}
ul{
  margin: 20px;
}
li{
  display:inline;
}
span{
  background-color: #6C6C6C;
  padding-right: 10px;
  font-size: 13px;
  padding-top: 4px;
  padding-left: 4px;
  padding-bottom: 2px;
}
a{
  background-image: url('del_sprite_tags.gif');
  background-position: 0px -159px;
  background-repeat: no-repeat;
  padding-bottom: 2px;
  padding-top: 1px;
  padding-left: 8px;
  text-decoration: none;
  color: #FFF;
  margin-left: -10px;
}
a:hover span{
  background-color: #8F8F8F;
}
a:hover{
  background-position: 0px -119px;
}

</style>
</head>
<body>
<ul>
 <li><a href=""><span>hoge</span></a></li>
 <li><a href=""><span>hoge</span></a></li>
 <li><a href=""><span>hoge</span></a></li>
 <li><a href=""><span>hoge</span></a></li>
</ul>
</body>
</html>

コメント

西小倉パンデイロ 2008-09-15 11:35:36

たしかにスマート!

コメントできません (ログインするとコメントできます)