kitak blog

Kみたいなエンジニアになりたいブログ

Twitter BootstrapのFluid Layoutのsidebarとcontentを逆に表示する

こんにちは.

Twitter Bootstrap, 便利ですよね!
この前,Fluid Layoutを使おうとして,sidebarとcontentを逆に表示したくなりました.
その方法をメモっときます. Bootstrapのバージョンは4.0です.

こんなかんじでHTMLを書くと

<!DOCTYPE HTML>
<html lang="jp">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="name" content="content">
    <link rel="stylesheet" type="text/css" href="bootstrap1.4.0/bootstrap.css" />
    <link rel="stylesheet" href="css/bootstrap-test.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
    <title>Bootstrap test</title>
</head>
<body>
    <div class="container-fluid">
        <div class="sidebar">
            <div class="well">
                <h5>Sidebar</h5>
            </div>
        </div>
        <div class="content">
            <div class="hero-unit">
                <h1>Content</h1>
            </div>
        </div>
    </div>
</body>
</html>

こんなかんじで表示されます.
f:id:kitak:20111116112856p:image:w640

これのsidebarとcontentを逆に表示する場合は,こんなかんじのCSSを書く(通常は上にバーを表示したりするのでその分の領域を確保するためにパディングを加えています).

body {
    padding-top: 60px;
}

.container-fluid > .sidebar {
    left: auto;
    right: 20px;
}

.container-fluid > .content {
    margin-left: 0px;
    margin-right: 240px;
}

すると,逆向きで表示されます.
f:id:kitak:20111116113643p:image:w640

注意! このCSSでうまくいくのはバージョン4.0です. 3.0では上手くいきません. なぜかというと3.0と4.0でレイアウトの実現方法が異なっているからです. バージョン3.0ではfloat, 4.0ではpositionを利用しています.

まー・・・こんなことするなら,CSSテンプレートなんて使わずに最初から書けっていう(ry