- ベストアンサー
liにスタイルシートが上手くいかない
こんにちは。 次のコードが上手く表示されず困っています。 <ul> <li style="border:1px solid red">aaa</li> <ul> <li>bbb</li> </ul> </ul> この場合aaaにのみ赤い罫線がひかれると思うのですが、bbbまでくくった形で罫線がひかれます。 liはhtmlで省略可能なためこのようになるのでしょうか。それとも書き方を間違っているのでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
書き方が間違っていると思います。 ul要素に直接配置できるのはli要素のみです。 この書き方では、ul要素に直接ul要素が書かれています。 そのため、IEの場合は恐らく、aaaの直後にある</li>をゴミとして無視してしまっているものと思われます。 <ul> <li style="border:1px solid red">aaa</li> <li> <ul> <li>bbb</li> </ul> </li> </ul> 或いは、 <ul> <li><div style="border:1px solid red">aaa</div> <ul> <li>bbb</li> </ul> </li> </ul> と書けば(divは任意の要素に置き換え可)、解決すると思います。
その他の回答 (6)
- LLLuna
- ベストアンサー率35% (13/37)
6氏の案は、文法的にアウトです。 dt要素に配置できるのはインライン要素に限られるからです。これを行うと、ブラウザによっては不可解なレンダリングがされます。(経験済み) あと、HTMLは文書に意味づけを行うものですから、見かけだけで組み合わせてはいけません。(必ずしも同じ見かけになるとは限りません)
- yambejp
- ベストアンサー率51% (3827/7415)
<dl> <dt><ul><li style="border:1px solid red">aaa</ul> <dd><ul><li>bbb</ul> </dl> でいいんじゃないですか?
- pi8027
- ベストアンサー率11% (6/53)
ul要素の直下にはli要素しか書けません。リストを入れ子にしたい人は度々ul要素の直下にul/ol要素を記述しますが、それは「不可」です。入れ子にしたい場合は、li要素の直下に書く必要があります。
IEのせいみたい。 オペラとファイアフォックスとネスケだったら質問者さんの意図するみたいに表示されました。 でもIEでも、 <ul> <li style="border:1px solid red">aaa</li> <li>bbb</li> <li>ccc</li> <ul> <li>ddd</li> <li>eee</li> </ul> </ul> みたいにしてあったら一番最初のaaaのみが囲われてくれるみたいですよ。 質問文みたいにaaaとbbbが一個ずつしかないんだったらdivタグとかでmargin指定にしてしまったほうが手っ取り早い気もしますけど。
- rusya
- ベストアンサー率51% (73/143)
<dl> <dt style="border:1px solid red">aaa <dd> <ul> <li type="circle">bbb </ul> </dl> ↑こんな感じでしょうか。文章のインデントを下げるだけなら、その段落に style="margin-left:○px" と指定する方法もありますが。
<ul> <li style="border:1px solid red">aaa</li> <li>bbb</li> </ul> これだけじゃだめなの?
補足
bbbは階層を下げたいので、<ul>でくくりたいと思っています。
お礼
<ul>の下には<ul>を入れれるものと勘違いしていたようです。ありがとうございました。