14時の間食

CakePHPの記事を中心にWeb制作について

【CSS】3カラムレイアウト-左右は固定幅、中央は残りの幅目一杯に広がるレイアウト

CSS

    簡単に出来そうで、あれ…?

    リキッドレイアウトでページを作っていたら意外にも悩んでしまったのでメモ。
    floatでボックスを3つ横に並べる時、左右のボックスは固定幅にし、真ん中のボックスは残った幅いっぱいに広がってほしい時のCSS。

    例:http://blog.material-being.com/examplehtml/3columnliquid.html
    表示してウィンドウの幅を変えてみて下さい。

    作り方

    HTMLはこんな感じ。中央のボックス(=つまり残りの幅いっぱいに広げたいボックス)を1個余分に囲ってやるのがポイント

    HTML

    <div id="wrapper">
        <div id="main">
            <div id="content">#content</div>
        </div>
        <div id="left">#left</div>
        <div id="right">#right</div>
    </div>
    

    CSS

    #wrapper {
        height: 500px;
        min-width: 600px;
    }
    #main {
        height: 500px;
        width: 100%;//+
        float: left;//+
    }
    #content {
        background-color: #F60;
        margin-right: 200px;//+
        margin-left: 150px;//+
        height: 500px;
    }
    #left {
        background-color: #09F;
        float: left;//+
        margin-left: -100%;//+
        width: 150px;//+
        height: 500px;
    }
    #right {
        background-color: #0C3;
        float: left;//+
        margin-left: -200px;//+
        width: 200px;//+
        height: 500px;
    }
    

    抑えておく指定

    大事なのは明滅している部分です。

    • 3つのボックス全てにfloat: left;を指定
    • #mainはwidth: 100%;
    • #contentは左右のボックスの幅だけmarginを指定
    • 左側のボックスはwidthとmargin-left: -100%;を指定
    • 右側のボックスはwidthを指定し、widthと同じpx数をmargin-leftにマイナス値(=ネガティブマージン)で指定

    カテゴリー

    最近の記事

    Author

    • ささきち-このブログを書いてる人
      s3make@ささきち
      多摩川沿いに住むフリーのWebデザイナーです。近所のイオンによく行きます。