リモートロールオーバーを CSS だけでやってみるのサンプル

この文書は、Lucky bag::blogのエントリー「リモートロールオーバーを CSS だけでやってみる」のサンプルです。

CSS のコードは下記の通り。背景画像は、幅 120px 縦 160px のものを、カラーとモノクロを縦に並べて一つにしたものを使用。(つまり幅 120px 高さ 320px)


#rollover {
        margin-bottom: 12em;    /* これを指定しておかないと、それ以降の要素が重なってきてしまう。*/
}
#rollover ul {
        position:relative;
        margin: 0;
        padding: 0;
        height:160px;        /*背景画像と同じ高さ。指定しないとIE ではテキストが右によってしまう*/
}

/*リストをブロック化して横に並べる。*/

#rollover li {
        float: left;
        display: block;
        width: 120px;        /*背景画像と同じ幅*/
        height: 160px;       /*背景画像と同じ高さ*/
        margin: 0;
        padding: 0;
        list-style-type:none;
}

/*リスト内の a 要素に対して一括して指定*/

#rollover li a {
        display: block;
        width: 120px;        /*背景画像と同じ幅*/
        height: 160px;       /*背景画像と同じ高さ*/
        text-decoration:none;
        color: #666;
        background-position: 0 0;
        background-repeat: no-repeat;
}

/*リスト内の a 要素に対して背景画像を個別指定*/

#rollover li#food a {
        background-image: url(001.jpg);
}
#rollover #sneaker a {
        background-image: url(002.jpg);
}
#rollover #beer a {
        background-image: url(003.jpg);
}
#rollover #coffee a {
        background-image: url(004.jpg);
}
#rollover #cat a {
        background-image: url(005.jpg);
}

/*リスト内の a:hover に対して共通指定*/

#rollover li a:hover {
        background-position: 0 -160px;
}

/* em 内のテキストを下へ移動させる*/

#rollover li a em {
        position: absolute;
        top: 200px;
        left: 0;
        font-style: normal;
        diplay: block;      /* ブロック化しないと IE で崩れる。*/
        width: 16em;        /* 一応、文字幅に合わせているけど、やり方は考える余地あり。*/
}
#rollover li a:hover em {
        color: #2b0;
        text-decoration: underline;
        cursor: pointer;        /* IE のために、カーソルをポインタに指定*/
}

/* em 内テキストの縦のアキを広げる。これを指定しないとテキストが全て重なってしまう。*/

#rollover #sneaker a em {
        margin-top: 1.5em;
}
#rollover #beer a em {
        margin-top: 3em;
}
#rollover #coffee a em {
        margin-top: 4.5em;
}
#rollover #cat a em {
        margin-top: 6em;
}