今日もCSS勉強&復習やってます。
CSSを勉強するにあたって、書籍を読みながら「そういえば、これってどうやるんだっけ?」がまだまだ無限に出てくるので、(ポジティブ思考で)ブログネタには困りません(・∀・)
そんわけで、今回はリストごとに引いたCSSプロパティの最後のリストだけlast-child擬似クラスを使って無効にするのと、使わないで無効にする方法の2パターンに挑戦です。

要は、この下のborderだけを取り除きたいんです。別でclassを指定すればいいことなんですけど、後々の事を考えるとclassを別で設けないほうがスマートかなと。
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8" /> リスト(li)の最後の線を消す-last-childを入れた場合- <h3>◆last-childを入れた場合</h3> <ul> <li>リスト項目何か文章、文章01</li> <li>リスト項目何か文章、文章02</li> <li>リスト項目何か文章、文章03</li> <li>リスト項目何か文章、文章04</li> <li>リスト項目何か文章、文章05</li> <li>リスト項目何か文章、文章06</li> <li>リスト項目何か文章、文章07</li> <li>リスト項目何か文章、文章08</li> <li>リスト項目何か文章、文章09</li> </ul>
ul{
border:1px dashed #ff6c6c;
background-color: #f5f8ed;
padding:10px 20px;
float: left;
}
ul h3{
margin:0 0 10px;
}
ul li{
list-style: none;
border-bottom: 1px solid #ff7979;
margin-bottom: 10px;
padding-right:10px;
}
ul li:last-child {
border:0;
}
※キモは<li>にかけてるlast-childです。最後の<li>だけborderを「0」にしろと言ってるんです。
※ちなみに<ul>に記述してるfloat:left;は外側のBoxがテキストの長さで止まってくれるために書いてます。
これで出来たサンプルがコレ!!
サンプル
キチッと、消えてくれてますね。
一つのコードであっさりできるので、とってもお手軽です。
横並びのBoxとかにも使えそうなので、覚えてて損ナシです(・∀・)
last-childとfirst-childはIE6では効かないらしいです。まぁ、IE6ですからいいかなぁとは思っちゃうんですけど・・・あわせて覚えときましょう。
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8" /> リスト(li)の最後の線を消す-IE6対応版- <div id="box"> <h3>IE6対応</h3> <ul> <li>リスト項目何か文章、文章01</li> <li>リスト項目何か文章、文章02</li> <li>リスト項目何か文章、文章03</li> <li>リスト項目何か文章、文章04</li> <li>リスト項目何か文章、文章05</li> <li>リスト項目何か文章、文章06</li> <li>リスト項目何か文章、文章07</li> <li>リスト項目何か文章、文章08</li> <li>リスト項目何か文章、文章09</li> </ul> </div>
先ほどと違うのは<ul>の外にもう一つ<div>で囲っている点です。
div#box {
border:1px dashed #ff6c6c;
background-color: #f5f8ed;
float:left;
padding:0 20px 10px;
}
div#box h3{
margin:10px 0 0;
}
ul {
overflow:hidden;
margin:0;
padding:0;
list-style-position:inside;
zoom:1;
}
ul li {
list-style: none;
border-bottom: 1px solid #ff7979;
margin-bottom:-1px;
margin-top:15px;
line-height: 100%;
padding:0 10px 5px 0;
}
さっきとちょっと違いますね。
<li>にborder-bottomを指定して、下線を表示させてmargin-bottom:-1px;(ネガティブマージン)で最後の下線が引かれている分の1pxを見えなくさせています。<ul>に指定しているzoom:1;はIE6のバグを回避するために記述しています。
これで出来たサンプルがコレ!!
サンプル
同じように消えましたね(・∀・)
けど、<li>にmargin-bottomを新たに記述するとネガティブマージンが無効になるので、下線は当然出てきます。
テキストと下線の幅を調整したい時はpaddingを指定すればOKです。
今回は、今までうやむやになってた部分を解消できたので、満足です。
早く頭の中の「これどうやるんだっけ?」が解消できればいいのですが、そんな簡単にできるわけではないので、一つずつ確実に潰していきます。それでは、本日はこの辺で。@Kc_fujiでしたm(_ _)m
Comment
分かりやすかったです!