Bootstrap左右侧边栏问题

时间:2014-08-21 23:09:54

标签: twitter-bootstrap sidebar collapse

我正在尝试创建一个具有以下功能的页面:

  1. 左侧边栏。可以使用按钮打开或关闭此侧栏。
  2. 有一个右侧边栏。可以使用按钮打开或关闭此侧栏。
  3. 有一个主要内容区域。当隐藏一个或多个侧边栏时,主要内容区域扩展以填充空白。当两个侧边栏都打开时,它看起来像这样:
  4. ----------------------------------------------------
    |   Sidebar-Left  |  Content      |  Sidebar-right |
    ----------------------------------------------------
    
    • 作为额外的皱纹,主要内容区域实际上由3列组成 - 左,右,右。当显示其中一个或两个侧边栏时,左侧和右侧内容区域被隐藏,主要内容区域扩展以填充空白。因此,“内容”列的内容如下所示:
    ---------------------------------------------------------
    |   Left-Content  |  Main-Content      |  Right-Content |
    ---------------------------------------------------------
    
    • 最后,打开/关闭按钮将在整个物体上方的导航栏中左右拉动,它将是一个流体容器 - 列之间没有填充物。

    无论我做什么 - 我都无法接近工作。

    骨架为bootyplyfiddle

2 个答案:

答案 0 :(得分:1)

试试这个:

LIVE_DEMO

CSS:

    div {
        border:2px solid;
    }

HTML:

                              
    <div class="row">
        <div id="DivLeft" class="col-md-3">
            left Side bar
        </div>
        <div id="DivMain" class="col-md-6">
            <div id="DivLeftContent" class="col-md-4">
                Left Content
            </div>
            <div id="DivMainContent" class="col-md-4">
                Main Content
            </div>
            <div id="DivRightContent" class="col-md-4">
                Right Content
            </div>
        </div>
        <div id="DivRight" class="col-md-3 ">
           right Side bar 
        </div>
    </div>

SCRIPT:

 $(document).ready(function () {
            MainDiv();
        });

        var right = 0, left = 0;
        $("#BtnRight").click(function () {
            if (right == 0) {
                $("#DivRight").hide();
                right = 1;
                if (left == 0) {
                    $("#DivMain").removeClass().addClass("col-md-9");
                } else {
                    $("#DivMain").removeClass().addClass("col-md-12");
                }
            } else {
                $("#DivRight").show();
                right = 0;
                if (left == 0) {
                    $("#DivMain").removeClass().addClass("col-md-6");
                } else {
                    $("#DivMain").removeClass().addClass("col-md-9");
                }
            }
            MainDiv();
        });
        $("#BtnLeft").click(function () {
            if (left == 0) {
                $("#DivLeft").hide();
                left = 1;
                if (right == 0) {
                    $("#DivMain").removeClass().addClass("col-md-9");
                } else {
                    $("#DivMain").removeClass().addClass("col-md-12");
                }
            } else {
                $("#DivLeft").show();
                left = 0;
                if (right == 0) {
                    $("#DivMain").removeClass().addClass("col-md-6");
                } else {
                    $("#DivMain").removeClass().addClass("col-md-9");
                }
            }
            MainDiv();
        });

        function MainDiv() {
            if (left == 1 && right == 1) {
                $("#DivLeftContent,#DivRightContent").hide();
                $("#DivMainContent").removeClass().addClass("col-md-12");
            } else {
                $("#DivLeftContent,#DivRightContent").show();
                $("#DivMainContent").removeClass().addClass("col-md-4");
            }
        }

答案 1 :(得分:0)

@ Jake745,很棒的方法。谢谢。只需对MainDiv函数进行一些更改即可获得我正在寻找的确切行为:

function MainDiv() {
        if (left == 1 && right == 1) {
            $("#DivLeftContent,#DivRightContent").show();
            $("#DivMainContent").removeClass().addClass("col-md-4");
        } else {
            $("#DivLeftContent,#DivRightContent").hide();
            $("#DivMainContent").removeClass().addClass("col-md-12");
        }
    }