div で残りの水平スペースを埋めるにはどうすればいいですか? 質問する

div で残りの水平スペースを埋めるにはどうすればいいですか? 質問する

2 つの div があります。1つはページの左側に、もう 1 つは右側にあります。左側の div は幅が固定されており、右側の div で残りのスペースを埋めたいと考えています。

#search {
  width: 160px;
  height: 25px;
  float: left;
  background-color: #ffffff;
}

#navigation {
  width: 780px;
  float: left;
  background-color: #A53030;
}
<div id="search">Text</div>
<div id="navigation">Navigation</div>

ベストアンサー1

Boushley の回答で私が見つけた問題は、右の列が左の列より長い場合、左の列を折り返してスペース全体を埋め続けることです。これは私が探していた動作ではありません。多くの「解決策」を検索した後、3 列のページを作成するチュートリアル (現在はリンクが無効) を見つけました。

著者は、固定幅、3 つの可変列、外側の列が固定で中央の幅が可変の 3 つの異なる方法を提供しています。私が見つけた他の例よりもはるかにエレガントで効果的です。CSS レイアウトの理解が大幅に向上しました。

基本的に、上記の単純なケースでは、最初の列を左にフロートし、固定幅を指定します。次に、右側の列に最初の列より少し広い左余白を指定します。これで完了です。Ala Boushley のコード:

スタックスニペットのデモはこちらです。jsFiddle

#left {
  float: left;
  width: 180px;
}

#right {
  margin-left: 180px;
}

/* just to highlight divs for example*/
#left { background-color: pink; }
#right { background-color: lightgreen;}
<div id="left">  left  </div>
<div id="right"> right </div>

Boushley の例では、左の列が右の列を支えています。左の列が終了するとすぐに、右の列が再びスペース全体を埋め始めます。ここでは、右の列は単にページのさらに奥に配置され、左の列は大きな余白を占めています。フローの相互作用は必要ありません。

おすすめ記事