【问题标题】:Bootstrap Left and Right sidebar issuesBootstrap 左右侧边栏问题
【发布时间】:2014-10-15 17:41:02
【问题描述】:

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

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

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

骨架是bootyply 或fiddle

【问题讨论】:

  • 不确定是不是只有我一个人,但我无法访问你的 bootply?

标签: twitter-bootstrap sidebar collapse


【解决方案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>

脚本:

 $(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");
            }
        }

【讨论】:

  • 这真是令人印象深刻!在那里,我正忙着尝试在 BootStrap 行行为中完成这一切……然后繁荣……只需几行 jscript!我编辑了下面的 jscript 以获得我正在寻找的内容......
  • 一个后续问题:如果目标 div 有多个类,有没有办法删除一个符合模式的类,然后添加一个替换类?即``$("#DivMainContent").removeClass("col-md-[wildcard]").addClass("col-md-12");
  • 是的,这是个好主意,为了满足您的要求,只有我这样做了
【解决方案2】:

@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");
        }
    }

【讨论】:

  • Ok sakvan 我会更改我的代码 :) 如果您的问题已解决,请勾选我的答案
猜你喜欢
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多