1. ホーム
  2. html

[解決済み] 残りの幅を埋めるためにdivを展開する

2022-03-15 12:33:22

質問

2列のdivレイアウトを作りたいのですが、それぞれのdivの幅を変えることができます。

div {
  float: left;
}

.second {
  background: #ccc;
}
<div>Tree</div>
<div class="second">View</div>

ツリー」div が必要なスペースを満たした後、「ビュー」div が利用可能な全幅に拡大するようにしたい。

現在、私の「view」divは、それが含むコンテンツにリサイズされています。 また、両方のdivが全体の高さを占めるとよいでしょう。


免責事項が重複していない。

どのように解決するのですか?

この解決方法は、実はとても簡単なのですが、ではありません。 すべて は明白です。 ブロックフォーマットコンテキスト(BFC)と呼ばれるものを起動する必要があり、これは特定の方法でフロートと相互作用します。

2番目のdivからfloatを取り除き、次のようにします。 overflow:hidden 代わりに 可視以外のオーバーフロー値を設定すると、設定されたブロックはBFCになります。 BFCは子孫のfloatがそこから抜け出すことを許さず、兄弟や祖先のfloatがそこに入り込むことも許さない。 ここでの正味の効果は、float された div がその役割を果たし、2 番目の div が通常のブロックになり、利用可能なすべての幅を占有することです。 フロートが占有している部分を除く .

これは現在のすべてのブラウザで動作するはずですが、IE6と7ではhasLayoutを起動する必要があるかもしれません。 思い出せません。

デモを見る

div {
  float: left;
}

.second {
  background: #ccc;
  float: none;
  overflow: hidden;
}
<div>Tree</div>
<div class="second">View</div>