ホームへ

CSS flexで残りの幅を指定する方法【100% - ○px は可能!】

2020年02月24日

2列のボックスを作り、ある1方には幅を指定し、もう1方には残りの幅を指定したいときありますよね。

そんな「CSS flexで残りの幅を指定する方法」を説明します。

方法1. 1方の幅が決まっているときはcalcを使う

1方の幅が決まっているとき、残りの幅は「calc」を使いましょう。
calcとは数値を計算式で指定できるCSSです。
違う単位のものを計算できるのがミソです。

実証

まずdisplay:flexを使って2列のボックスをつくります。

左メニュー
右本文

html

<div class="flex-wrap">
    <div class="left-column">左メニュー</div>
    <div class="right-column">右本文</div>
</div>

CSS

.flex-wrap{
    display: flex;
    border: 1px solid #999;
    padding: 5px;
}
.left-column,.right-column{
    border: 1px solid #999;
}

この状態では右列も左列も左寄りなのでそれぞれに幅を指定したいところです。

左列は横幅固定にします。

.left-column{
    width: 150px;
}

ここからが本題です。
右列はcalcを使い、「全体(100%)-左列(150px)」を指定します。

.right-column{
    width: calc(100% - 150px);
}

完成形がこちら
ブラウザ幅を変えて確かめてみてください。
右列がレスポンシブになっているのがわかると思います。

左メニュー
右本文

完成CSS(htmlは同じ)

.flex-wrap{
    display: flex;
    border: 1px solid #999;
    padding: 5px;
}
.left-column,.right-column{
    border: 1px solid #999;
}

.left-column{
    width: 150px;
}
.right-column{
    width: calc(100% - 150px);
}

calcがうまくいかないときはこちらの記事をごらんください。

CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。

↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓

↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。

方法2. 1方の幅が決まっていないときは100%にする

左の列が中の文字量に応じて可変させ、右は残りの幅にしたいときです。

  1. display:flexで横に並べ2段にならないようにします。
  2. 左はwhite-space: nowrapで改行されないようにします。
  3. 右をwidth: 100%にします。

完成イメージ

左メニュー
右本文

html

<div class="flex-wrap2">
    <div class="left-column2">左メニュー</div>
    <div class="right-column2">右本文</div>
</div>

CSS

.flex-wrap2{
    display: flex;
    border: 1px solid #999;
    padding: 5px;
}
.left-column2{
    white-space: nowrap;
    border: 1px solid #999;
}
.right-column2{
    width: 100%;
    border: 1px solid #999;
}

上の一例だとたまたまな可能性があるのでいくつか例を挙げます。

左メニュー左メニュー
右本文
左メニュー
右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文
左メニュー左メニュー左メニュー
右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文右本文

まとめ

方法1. 1方の幅が決まっているときはcalcを使う

方法2. 1方の幅が決まっていないときは100%にする

以上、CSSで残りの幅を指定する方法の説明でした。

「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。

CSSやhtmlをマンガで学ぶ