1. ホーム
  2. html

[解決済み] Bootstrapのグリッドで、列の幅を強制的に固定し、他の列を流動的にする方法

2022-02-19 10:53:54

質問

Bootstrapを使っているのですが、以下の画像のようなグリッドレイアウトを作りたいのですが、可能でしょうか?

画面サイズに関係なく、330pxで固定されたサイドバーを持ち、すべてのものを #page-content 訪問者の画面の解像度に応じて、サイズを変更することができます。 <イグ

画像のようなレイアウトを実現するにはどうしたらよいですか?以下のようにすると

<div class="col-md-10" id="page-content">
   <div class="col-md-2">...</div>
   <div class="col-md-10">...</div>
</div>
<div class="col-md-2" id="sidebar">
   ...
</div>

の幅を固定するようにしてください。 #sidebarwidth="330px"; を使用すると、画面サイズが小さい場合、コンテンツが右側に移動して見えなくなります。Bootstrapは width: 16.66666667%;.col-md-2 ということは、上位のdivのグリッドシステムを取り除かなければならないようです。 #page-content#sidebar . しかし、それならどうすれば #page-conten の左側にある残りのスペースを埋める。 #sidebar .

解決方法は?

Bootstrapのグリッドは流動的であることを意図しているので、画面の大きさが変わると変化するようになっています。

希望のレイアウトを実現するためには display: flex または display:table の代わりに 私は display:table は、フレックスボックスよりもサポートが充実しているので、この例ではこの方法を採用しました。

のようなHTMLに変更する必要があります。

<div class="page">
  <div class="page-content">
    <div class="row">
      <div class="col-md-2">
        <div class="blue">test</div>
      </div>
      <div class="col-md-10">
        <div class="green">test</div>
      </div>
    </div>
  </div>
  <div class="sidebar">
    <div class="gold">test</div>
  </div>
</div>

そして、使用したCSSはこちらです。

.page {
  display: table;
  width: 100%;
}
.page-content,
.sidebar {
  display: table-cell;
}
.sidebar {
  width: 330px;
}
.blue,
.green,
.gold {
  height: 50px;
}

.blue {
  background-color: blue;
}
.green {
  background-color: green;
}
.gold {
  background-color: gold;
}

フィドルはこちらで確認できます。 https://jsfiddle.net/m0nk3y/qjutpze4/