- ベストアンサー
IE6/ブロック要素のliで入れ子がある場合に改行のような余計なマージンが入る
- 左側サイドにタブメニューを設置しようとしているのですが、IE6のみ、余計な改行のようなマージンが入ってしまいます。
- HTMLではブロック要素であるliを入れ子にしているため、IE6では不要な改行のようなマージンが発生してしまいます。
- この問題を解決するためには、CSSを使用してli要素の余計なマージンを取り除く必要があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ul#navi-block li { width:100%; vertical-align:bottom;} これを追加すると直ったりしませんか? バグみたいなものだと思いますが・・・
その他の回答 (3)
- karumakaruma
- ベストアンサー率65% (65/100)
visibility:hiddenは不可視ですので 表示領域は残ります。 ただし、position:absoluteによる絶対位置指定を 行った場合、表示領域が残らないという特徴があります。 #どちらにしろ絶対位置を指定していれば、表示領域が残っても #他に影響を与えないですが・・・ 今回の場合、IE6以外のブラウザは上記の動きをちゃんと 行えているようですが、IE6は行えていません。 これは、<li>の中に入れているのにposition:absolute;を 使い、かつ位置の指定もしていないからでは無いかと思います。 class="set"のdivをどこに表示させようとしているかで 変更内容が変わるとは思いますが、 メニュー名 メニュー名1 メニュー名2 という表示にしたい場合は、visibility:hiddenをdisplay:none; にして、position:absolute;を消せばいいと思います。 メニュー名 メニュー名1 メニュー名2 という様に右に表示したい場合は、<li>の外に出し position:absolute; top:**; left:**;と 位置を指定すればいいと思います。 visibility:hiddenはそのまま
お礼
karumakarumaさま お忙しい中、ご丁寧なご回答ありがとうございます。 そうなんです。絶対位置の指定だと、IE6での余計なマージンはでません。 アドバイス通りにやってみました。 ただ、今回は、ウィンドウの可変によって、 フレキシブルに対応できるメニューになるので、 .setのDIVをliの外に出してしまうと 親メニューと子メニューがうまく連動しなくなります。 したがって、親メニュー(position:relative)で 子メニューは(position:absolute)となり 子メニューDIVは、親メニューliの入れ子にしています。 また、以下に関しては、 == これは、<li>の中に入れているのにposition:absolute;を 使い、かつ位置の指定もしていないからでは無いかと思います。 == 位置の指定を下記のようにしました。 div#p0 {left:212px; top:169px;} それから、色々と検証してみて 親メニューのli aにdisplay:blockを入れるとIE6でのマージンが発生するようです。 重ねて、お忙しいところ、ご丁寧にご回答くださり 本当にありがとうございました。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
li li {list-style-type: inside} または li {list-style-type: inside} これを追加でどうでしょうか?
お礼
talooさま お礼が送れて申し訳ありません。 試してみたんですが、症状はかわりませんでした。 納期まで、もう少し時間があるのでがんばってみます。 本当にお忙しい中、貴重なアドバイスをいただき感謝しています。 ありがとうございました。
直接の回答ではないと思いますが最後の </div> </li> </div> は </div> </li> </ul> </div> にするべきかと。
お礼
metametamuさま 早速のアドバイスありがとうございました。 確かにそうでした。早速修正しておきました。
お礼
直りました!!! metametamuさま、本当にありがとうございました。 今回は、大変勉強になりました。 お忙しい中、貴重なアドバイスをいただき 心より感謝いたします。 重ねて、ありがとうございました!!