【问题标题】:Bootstrap 3 collapsible sidebarBootstrap 3 可折叠侧边栏
【发布时间】:2014-06-20 18:31:30
【问题描述】:

谁能告诉我什么是最简单和最干净的方式来完成与本网站完全相同的侧边栏导航:http://www.makerstudios.com/(但在左侧)

使用引导程序 3

谢谢。

【问题讨论】:

标签: css twitter-bootstrap-3


【解决方案1】:

这是一个非常有用的 Bootstrap 3 插件/附加组件。它被称为 Jasny Bootstrap,在众多功能中,一个是画布外导航。它的外观和感觉非常像 Bootstrap,所以如果这是您选择的框架(就像我一样),我强烈推荐这个。

我在每次点击后自动关闭侧边栏时遇到了一些问题在菜单中,因此解决方法(如果需要)是将data-autohide="false" 添加到打开面板的按钮中。这样,它会一直保持打开状态,直到用户单击“关闭”链接。

<a data-toggle="offcanvas" data-target=".navmenu" data-canvas="body" data-autohide="false">CLICK</a> 

【讨论】:

  • 完美!正是我想要的,谢谢哥们。
  • 我需要 jquery 吗?
  • @Shardul 是的,你需要 jquery
【解决方案2】:

我发现这个小提琴对你也有帮助Demo

HTML

<body>
    <nav class='sidebar sidebar-menu-collapsed'> <a href='#' id='justify-icon'>
        <span class='glyphicon glyphicon-align-justify'></span>
      </a>

        <ul class='level1'>
            <li class='active'> <a class='expandable' href='#' title='Dashboard'>
            <span class='glyphicon glyphicon-home collapsed-element'></span>
            <span class='expanded-element'>Dashboard</span>
          </a>

                <ul class='level2'>
                    <li> <a href='#' title='Traffic'>Traffic</a>

                    </li>
                    <li> <a href='#' title='Conversion rate'>Conversion rate</a>

                    </li>
                    <li> <a href='#' title='Purchases'>Purchases</a>

                    </li>
                </ul>
            </li>
            <li> <a class='expandable' href='#' title='APIs'>
            <span class='glyphicon glyphicon-wrench collapsed-element'></span>
            <span class='expanded-element'>APIs</span>
          </a>

            </li>
            <li> <a class='expandable' href='#' title='Settings'>
            <span class='glyphicon glyphicon-cog collapsed-element'></span>
            <span class='expanded-element'>Settings</span>
          </a>

            </li>
            <li> <a class='expandable' href='#' title='Account'>
            <span class='glyphicon glyphicon-user collapsed-element'></span>
            <span class='expanded-element'>Account</span>
          </a>

            </li>
        </ul> <a href='#' id='logout-icon' title='Logout'>
        <span class='glyphicon glyphicon-off'></span>
      </a>

    </nav>
</body>

css

@import url('http://getbootstrap.com/dist/css/bootstrap.css');
 @import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap-glyphicons.css");
 body {
    background: none repeat scroll 0 0 white;
}
nav.sidebar-menu-collapsed {
    width: 44px;
}
nav.sidebar-menu-expanded {
    width: auto;
}
nav.sidebar {
    position: fixed;
    top: 0px;
    left: 0px;
    height: 100%;
    background: none repeat scroll 0 0 #0099ff;
    color: white;
    padding: 20px 10px;
}
nav.sidebar a#justify-icon {
    outline: 0;
    color: white;
    font-size: 24px;
    font-style: normal;
}
nav.sidebar a#logout-icon {
    outline: 0;
    color: white;
    font-size: 24px;
    font-style: normal;
    position: absolute;
    bottom: 10px;
    left: 10px;
}
nav.sidebar ul.level1 {
    margin: 0;
    padding: 0;
    margin-top: 60px;
}
nav.sidebar ul.level1 li {
    margin: 0;
    padding: 0;
    margin-top: 20px;
    list-style-type: none;
}
nav.sidebar ul.level1 li a.expandable {
    outline: 0;
    display: block;
    position: relative;
    width: 100%;
    height: 30px;
    color: white;
    text-decoration: none;
    text-align: left;
    padding: 4px 4px 4px 0px;
    font-size: 20px;
}
nav.sidebar ul.level1 li a.expandable:hover {
    color: #bbbbbb;
}
nav.sidebar ul.level1 li a.expandable span.expanded-element {
    display: none;
    font-size: 11px;
    position: relative;
    bottom: 5px;
}
nav.sidebar ul.level1 li.active {
    margin-left: -4px;
}
nav.sidebar ul.level1 li.active a.expandable {
    background: none repeat scroll 0 0 black;
    border-radius: 4px;
    color: white !important;
    width: 30px;
    padding: 4px;
}
nav.sidebar ul.level1 li.active a.expandable:hover {
    color: white !important;
}
nav.sidebar ul.level1 ul.level2 {
    margin: 20px 6px 20px 30px;
    padding: 0;
    display: none;
}
nav.sidebar ul.level1 ul.level2 li {
    margin: 0;
    padding: 0;
    margin-top: 10px;
    padding-bottom: 10px;
    list-style-type: none;
    border-bottom: solid white 1px;
}
nav.sidebar ul.level1 ul.level2 li:last-child {
    border-bottom: none;
}
nav.sidebar ul.level1 ul.level2 li a {
    text-decoration: none;
    outline: 0;
    color: white;
    text-decoration: none;
    font-size: 11px;
}

jQuery

(function () {
    $(function () {
        var SideBAR;
        SideBAR = (function () {
            function SideBAR() {}

            SideBAR.prototype.expandMyMenu = function () {
                return $("nav.sidebar").removeClass("sidebar-menu-collapsed").addClass("sidebar-menu-expanded");
            };

            SideBAR.prototype.collapseMyMenu = function () {
                return $("nav.sidebar").removeClass("sidebar-menu-expanded").addClass("sidebar-menu-collapsed");
            };

            SideBAR.prototype.showMenuTexts = function () {
                return $("nav.sidebar ul a span.expanded-element").show();
            };

            SideBAR.prototype.hideMenuTexts = function () {
                return $("nav.sidebar ul a span.expanded-element").hide();
            };

            SideBAR.prototype.showActiveSubMenu = function () {
                $("li.active ul.level2").show();
                return $("li.active a.expandable").css({
                    width: "100%"
                });
            };

            SideBAR.prototype.hideActiveSubMenu = function () {
                return $("li.active ul.level2").hide();
            };

            SideBAR.prototype.adjustPaddingOnExpand = function () {
                $("ul.level1 li a.expandable").css({
                    padding: "1px 4px 4px 0px"
                });
                return $("ul.level1 li.active a.expandable").css({
                    padding: "1px 4px 4px 4px"
                });
            };

            SideBAR.prototype.resetOriginalPaddingOnCollapse = function () {
                $("ul.nbs-level1 li a.expandable").css({
                    padding: "4px 4px 4px 0px"
                });
                return $("ul.level1 li.active a.expandable").css({
                    padding: "4px"
                });
            };

            SideBAR.prototype.ignite = function () {
                return (function (instance) {
                    return $("#justify-icon").click(function (e) {
                        if ($(this).parent("nav.sidebar").hasClass("sidebar-menu-collapsed")) {
                            instance.adjustPaddingOnExpand();
                            instance.expandMyMenu();
                            instance.showMenuTexts();
                            instance.showActiveSubMenu();
                            $(this).css({
                                color: "#000"
                            });
                        } else if ($(this).parent("nav.sidebar").hasClass("sidebar-menu-expanded")) {
                            instance.resetOriginalPaddingOnCollapse();
                            instance.collapseMyMenu();
                            instance.hideMenuTexts();
                            instance.hideActiveSubMenu();
                            $(this).css({
                                color: "#FFF"
                            });
                        }
                        return false;
                    });
                })(this);
            };

            return SideBAR;

        })();
        return (new SideBAR).ignite();
    });

}).call(this);

【讨论】:

  • 感谢您的回答,但我会使用 no0ne 的插件。
  • @4dgaurav : jsfiddle 没有扩展 - 有什么想法吗? - 哦没关系 - 我开始了......
  • @Josey 我只是没有正确复制信息。无论如何,他在顶部都有一个工作版本的链接
【解决方案3】:

编辑:我为引导侧边栏添加了一个选项。

实际上,您可以通过三种方式制作 bootstrap 3 侧边栏。我试图让代码尽可能简单。

固定侧边栏

在这里你可以看到我开发的一个简单的固定侧边栏的demo,与页面高度相同

列中的侧边栏

我还开发了一个相当简单的列侧边栏,可以在容器内的两列或三列页面中使用。它占用最长列的长度。在这里你可以看到demo

仪表板

如果你google bootstrap dashboard,你可以找到多个合适的dashboard,比如this one。但是,它们中的大多数都需要大量编码。我开发了一个仪表板,无需额外的 javascript(在引导 javascript 旁边)即可工作。这是demo

对于所有三个示例,您当然必须包含 jquery、bootstrap css、js 和 theme.css 文件。

要使侧边栏可转置,您需要一个简单的 javascript 文件来转置所需的侧边栏,例如本页其他答案或here

滑动条

如果您希望侧边栏在按下按钮时隐藏,这也可以只使用一点 javascript。这里是 demo

【讨论】:

    【解决方案4】:

    此解决方案仅适用于使用 Angular 的人。使用Angular的ng-class,我们可以隐藏和显示侧边栏。

    http://jsfiddle.net/DVE4f/359/

    <div class="container" style="width:100%" ng-app ng-controller="AppCtrl">
    <div class="row">
        <div ng-class="showgraphSidebar ? 'col-xs-3' : 'hidden'" id="colPush" >
            Sidebar
        </div>
        <div ng-class="showgraphSidebar ? 'col-xs-9' : 'col-xs-12'"  id="colMain"  >
            <button  ng-click='toggle()' >Sidebar Toggle</a>
        </div>    
      </div>
    </div>
    

    .

    function AppCtrl($scope) {
        $scope.showgraphSidebar = false;
        $scope.toggle = function() {
            $scope.showgraphSidebar = !$scope.showgraphSidebar;
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2016-10-14
    • 2014-12-24
    • 2017-08-29
    • 2018-03-15
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多