angularjs - 我必须使用 angular 和 bootstrap 创建侧边栏,但它不起作用,请检查我在这里做错了什么

标签 angularjs html css angular-ui-bootstrap jsfiddle

enter link description here我想实现这样的东西:

( Refer images )

使用 bootstrap 和 angular 侧边栏应该隐藏/显示的地方,当侧边栏隐藏时页面内容应该调整为全屏。

但代码无法正常工作,因为侧边栏的隐藏/显示不起作用。请让我知道我在这里缺少什么。

HTML:导航栏标题和侧边栏。

<!DOCTYPE html>
<html ng-app="app">
<head>
  <!-- Bootstrap homepage -->
  <title>Bootstrap Theme Simply Me</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!--
  <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css">
  <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstarp.min.css">
  <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">


   <script src="bootstrap/js/jquery-3.1.0.min.js"></script>
   <script src="bootstrap/js/bootstrap.min.js"></script>
   -->

   <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
     <link href="font-awesome-4.3.0/css/font-awesome.min.css" rel="stylesheet">
   <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.1.2/ui-bootstrap-tpls.js"></script>

  <link href="styles/style.css" rel="stylesheet">


</head>
 <script>

/* Code to make the sidebar hide/show  */
(function() {

var app = angular.module('app', []);

app.controller('SidebarController', function($scope) {

    $scope.state = false;

    $scope.toggleState = function() {
        $scope.state = !$scope.state;
    };

});

app.directive('sidebarDirective', function() {
    return {
        link : function(scope, element, attr) {
            scope.$watch(attr.sidebarDirective, function(newVal) {
                  if(newVal)
                  {
                    element.addClass('show'); 
                    return;
                  }
                  element.removeClass('show');
            });
        }
    };
});  


}())


</script>
<body ng-controller="SidebarController">

<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container-fluid">
         <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li>
                        <a href="#">HOME</a>
                    </li>
                    <li>
                        <a href="#">PRODUCT</a>
                    </li>
                    <li>
                        <a href="#">THEME</a>
                    </li>
                    <li>
                        <a href="#">PERSONA</a>
                    </li>
                </ul>
            </div>
            <!-- /.navbar-collapse -->
        </div>
        <!-- /.container -->
    </nav>

    <div id="wrapper">

        <!-- Sidebar -->
        <div id="sidebar-wrapper">
        <a href="#" id="navigation-toggle" ng-click="toggleState()">Navigation</a>
            <ul class="sidebar-nav">
                <li class="sidebar-brand">
                    <a href="#">
                        Start Bootstrap
                    </a>
                </li>
                <li>
                    <a href="#">Dashboard</a>
                </li>
                <li>
                    <a href="#">Shortcuts</a>
                </li>
                <li>
                    <a href="#">Overview</a>
                </li>
                <li>
                    <a href="#">Events</a>
                </li>
                <li>
                    <a href="#">About</a>
                </li>
                <li>
                    <a href="#">Services</a>
                </li>
                <li>
                    <a href="#">Contact</a>
                </li>
            </ul>
        </div>
        <!-- /#sidebar-wrapper -->



    </div>

    <!-- /#wrapper -->
</body>
</html>

页面的CSS:

body {
    background-color:#f5f5f5;
}

/* Side bar */
.navbar-fixed-top{
  height:60px;
  }

 .navbar-nav {
    text-align:center;
    float:none;
}
.navbar-nav  li {
    display:inline-block;
    float:none;

    margin:auto;
    vertical-align:middle;
}

.navbar-nav > li  a {
  font-family: 'Roboto', sans-serif;
  }



 #wrapper {
    padding-left: 0;
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;
}

#sidebar-wrapper {
    z-index: 1000;
    position: fixed;
    left: 250px;
    width: 0;
    left:280px;
    top:60px;
    height: 100%;
    margin-left: -250px;
    overflow-y: auto;
    background: #e7eaed;
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;
}


/* Sidebar Styles */

.sidebar-nav {
    position: absolute;
    top: 0;
    width: 250px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.sidebar-nav li {
    text-indent: 20px;
    line-height: 40px;
}

.sidebar-nav li a {
    display: block;
    text-decoration: none;
    color: #000;
}

 #navigation-toggle {
                    position : absolute;
                    left : 160px;
                    background : rgba(3,159,244,.95);
                    color : white;
                    text-decoration : none;
                    padding : 20px;
            }
.sidebar-nav li a:hover {
    text-decoration: none;
    color: #fff;
    background: rgba(255,255,255,0.2);
}

.sidebar-nav li a:active,
.sidebar-nav li a:focus {
    text-decoration: none;
}

.sidebar-nav > .sidebar-brand {
    height: 65px;
    font-size: 18px;
    line-height: 60px;
}

.sidebar-nav > .sidebar-brand a {
    color: #999999;
}

.sidebar-nav > .sidebar-brand a:hover {
    color: #fff;
    background: none;
}

@media(min-width:768px) {
    #wrapper {
        padding-left: 250px;
    }

    #sidebar-wrapper {
        width: 250px;
    }
     #navigation-toggle {
                    position : absolute;
                    left : 160px;
                    background : rgba(3,159,244,.95);
                    color : white;
                    text-decoration : none;
                    padding : 20px;
            }

}

最佳答案

您已将 http 链接添加到样式表。如果将其更改为 https,则 fiddle 会起作用。你可以看到工作 fiddle here

关于angularjs - 我必须使用 angular 和 bootstrap 创建侧边栏,但它不起作用,请检查我在这里做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39136686/

相关文章:

javascript - 根据用户输入显示或隐藏元素

jquery - CSS 和 jQuery 简单问题

javascript - Angular Promise 在 Controller 中解析后给出对象数组而不是数组

html - 为什么 li 比 a 子标签高

html - 旋转的文本溢出浏览器窗口

HTML/CSS Float Left and Top/Bottom without position absolute/fixed

css - SASS:calc() 与正常计算?

css - 是否有用于包含特定文本的元素的 CSS 选择器?

angularjs - 什么 "things"可以在 Angular.js 中注入(inject)其他人?

javascript - 如何使用 Angular ng-repeat 对数据进行分组?