GVKun编程网logo

css – Bootstrap 3多级菜单(bootstrap三级菜单选项卡)

8

如果您对css–Bootstrap3多级菜单感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于css–Bootstrap3多级菜单的详细内容,我们还将为您解答bootstrap

如果您对css – Bootstrap 3多级菜单感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于css – Bootstrap 3多级菜单的详细内容,我们还将为您解答bootstrap三级菜单选项卡的相关问题,并且为您提供关于AngularJS+Bootstrap3多级导航菜单、AngularJS+Bootstrap3多级导航菜单的实现代码、Bootstrap 3多级下拉菜单实例、Bootstrap 3的多级下拉菜单示例的有价值信息。

本文目录一览:

css – Bootstrap 3多级菜单(bootstrap三级菜单选项卡)

css – Bootstrap 3多级菜单(bootstrap三级菜单选项卡)

我在根菜单上添加悬停时遇到问题.所有子菜单显示在悬停第一个子菜单时.并且它在不到768px的情况下变得越来越多.我如何修复此问题,因此悬停在根菜单上工作,子窗口显示何时窗口较小?

http://jsfiddle.net/e2xEL/1/

HTML

<navrole="navigation">
  <!-- Brand and toggle get grouped for better mobile display -->
  <div>
    <button type="button"data-toggle="collapse" data-target=".navbar-ex1-collapse">
      <span>Toggle navigation</span>
      <span></span>
      <span></span>
      <span></span>
    </button>
    <ahref="#">Brand</a>
  </div>

  <!-- Collect the nav links,forms,and other content for toggling -->
  <div>
    <ul>
      <li><a href="#">Link</a></li>
      <li><a href="#">Link</a></li>
      <li>
        <a href="#"data-toggle="dropdown">Multi Level <b></b></a>
        <ul>
          <li><a href="#">Level 1</a></li>
          <li> <a tabindex="-1" href="#">More options</a>
              <ul>
                  <li><a tabindex="-1" href="#">Level 2</a>
                  </li>
                  <li> <a href="#">More..</a>
                      <ul>
                          <li><a href="#">Level 3</a>
                          </li>
                          <li><a href="#">Level 3</a>
                          </li>
                          <li> <a href="#">More..</a>
                              <ul>
                                  <li><a href="#">Level 4</a>
                                  </li>
                                  <li><a href="#">Level 4</a>
                                  </li>
                                  <li> <a href="#">More..</a>
                                      <ul>
                                          <li><a href="#">Level 5</a>
                                          </li>
                                          <li><a href="#">Level 5</a>
                                          </li>
                                      </ul>
                                  </li>

                              </ul>
                          </li>

                      </ul>
                  </li>
                  <li><a href="#">Level 2</a>
                  </li>
                  <li><a href="#">Level 2</a>
                  </li>
              </ul>
          </li>
          <li><a href="#">Level 1</a></li>
        </ul>
      </li>
    </ul>
  </div><!-- /.navbar-collapse -->
</nav>

CSS:

.dropdown-submenu{
    position:relative;
} 
.dropdown-submenu > .dropdown-menu
{
    top:0;
    left:100%;
    margin-top:-6px;
    margin-left:-1px;
    -webkit-border-radius:0 6px 6px 6px;
    -moz-border-radius:0 6px 6px 6px;
    border-radius:0 6px 6px 6px;
} 
.dropdown-submenu:hover > .dropdown-menu{
    display:block;
}

.dropdown-submenu > a:after{
    display:block;
    content:" ";
    float:right;
    width:0;
    height:0;
    border-color:transparent;
    border-style:solid;
    border-width:5px 0 5px 5px;
    border-left-color:#cccccc;
    margin-top:5px;
    margin-right:-10px;
}

.dropdown-submenu:hover > a:after{
    border-left-color:#ffffff;
}

.dropdown-submenu .pull-left{
    float:none;
}

.dropdown-submenu.pull-left > .dropdown-menu{
    left:-100%;
    margin-left:10px;
    -webkit-border-radius:6px 0 6px 6px;
    -moz-border-radius:6px 0 6px 6px;
    border-radius:6px 0 6px 6px;
}

.root:hover .dropdown-menu{
    display: block;
}

解决方法

已更新 DEMO

只需添加>在.root之间:hover .dropdown-menu {

.root:hover > .dropdown-menu{
    display: block;
}

AngularJS+Bootstrap3多级导航菜单

AngularJS+Bootstrap3多级导航菜单

AngularJS体验式编程系列文章,将介绍如何用AngularJS构建一个强大的web前端系统。angularjs是由Google团队开发的一款非常优秀web前端框架。在当前如此多的web框架下,angularjs能脱颖而出,从架构设计上就高人一等,双向数据绑定,依赖注入,指令,MVC,模板。Angular.js创新地把后台技术融入前端开发,扫去jQuery一度的光芒。用angularjs就像写后台代码,更规范,更结构化,更可控。

关于作者

  • 张丹(Conan),程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog:http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/bootstrap-multilevel-navbar/

前言

在上一篇文章中Angular结合Bootstrap3的导航菜单,我们看到直接用Bootstrap3的默认导航菜单只支持到二级的菜单,如果想做成多级导航菜单,那又要自己动手了。

本文将介绍如何实现多限级导航菜单。

目录

  1. 静态多级菜单实现
  2. 动态多级菜单实现

1. 静态多级菜单实现

要实现多级菜单,我们要分两步走,第一步就是把静态菜单的功能实现,通过纯静态的HTML代码完成。第二步,通过Angluarjs进行动态实现,最后把数据和程序分离,通过Ajax加载多级菜单数据。

我们先从静态多级菜单开始动手,一个六级导航菜单是什么样子呢?

如上图所示,我们定义一些功能需求。

  • 1级菜单是导航条上的文字。
  • 当1级菜单导航事件被触发,显示2级菜单导航,在1级菜单的正下方显示。
  • 当2级菜单导航事件被触发,显示3级菜单导航,在2级菜单的右方显示。
  • 当3级菜单导航事件被触发,显示4级菜单导航,在3级菜单的右方显示。
  • 以此类推,不考虑下级菜单显示出界问题。

继续上文中的项目环境,增加一个新HTML文件: page3.html

~ vi D:\workspace\javascript\angular-navbar\page3.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <title>多级导航菜单</title>
    <meta name="description" content="多级导航菜单">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta name="fragment" content="!" />

    <link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="/css/main.css">
</head>
<body ng-app="page2">

<div>
    <divng-controller="NavbarCtrl">
        <navrole="navigation">
            <div>
                <ahref="#">多级菜单导航</a>
            </div>

            <div>
                <ul>
                    <li><a href="#">Link</a></li>
                    <li><a href="#">Link</a></li>
                    <li>
                        <a href="#"data-toggle="dropdown">Multi Level <b></b></a>
                        <ul>
                            <li><a href="#">Level 1</a></li>
                            <li> <a tabindex="-1" href="#">More options</a>
                                <ul>
                                    <li><a tabindex="-1" href="#">Level 2</a>
                                    </li>
                                    <li> <a href="#">More..</a>
                                        <ul>
                                            <li><a href="#">Level 3</a>
                                            </li>
                                            <li><a href="#">Level 3</a>
                                            </li>
                                            <li> <a href="#">More..</a>
                                                <ul>
                                                    <li><a href="#">Level 4</a>
                                                    </li>
                                                    <li><a href="#">Level 4</a>
                                                    </li>
                                                    <li> <a href="#">More..</a>
                                                        <ul>
                                                            <li><a href="#">Level 5</a>
                                                            </li>
                                                            <li><a href="#">Level 5</a>
                                                            </li>
                                                        </ul>
                                                    </li>

                                                </ul>
                                            </li>

                                        </ul>
                                    </li>
                                    <li><a href="#">Level 2</a>
                                    </li>
                                    <li><a href="#">Level 2</a>
                                    </li>
                                </ul>
                            </li>
                            <li><a href="#">Level 1</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </nav>
    </div>
</div>

<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<script src="/bower_components/angular/angular.min.js"></script>
<script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="/bower_components/angular-route/angular-route.min.js"></script>
<script src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>

<script src="/js/app.js"></script>

</body>
</html>

新建一个css文件:main.css

~ vi D:\workspace\javascript\angular-navbar\css\main.css

.dropdown:hover .menu-top {
    display: block;
}

.dropdown-submenu{
    position:relative;
}

.dropdown-submenu > .dropdown-menu{
    top:0;
    left:100%;
    margin-top:-6px;
    margin-left:-1px;
    -webkit-border-radius:0 6px 6px 6px;
    -moz-border-radius:0 6px 6px 6px;
    border-radius:0 6px 6px 6px;
}

.dropdown-submenu:hover > .dropdown-menu{
    display:block;
}

.dropdown-submenu > a:after{
    display:block;
    content:" ";
    float:right;
    width:0;
    height:0;
    border-color:transparent;
    border-style:solid;
    border-width:5px 0 5px 5px;
    border-left-color:#cccccc;
    margin-top:5px;
    margin-right:-10px;
}

.dropdown-submenu:hover > a:after{
    border-left-color:#ffffff;
}

.dropdown-submenu .pull-left{
    float:none;
}

.dropdown-submenu.pull-left > .dropdown-menu{
    left:-100%;
    margin-left:10px;
    -webkit-border-radius:6px 0 6px 6px;
    -moz-border-radius:6px 0 6px 6px;
    border-radius:6px 0 6px 6px;
}

刷新一下网页,我们能就看到上面的截图的效果,代码参考:http://firdaus.grandexa.com/2013/09/twitter-bootstrap-3-multilevel-dropdown-menu/

通过HTML和CSS就实现了多级菜单的静态展示效果,如果导航菜单不是经常变化,那么用静态的方式,把代码写死就可以了。但有一些场景,菜单是需要动态生成,比如通过权限控制访问链接,每个用户的权限不一样,那么能看到的菜单选项也就不一样,这个时候就需要做成动态的,用程序去控制菜单的加载和展示。

2. 动态多级菜单实现

有了静态多级导航菜单的HTML代码结构,改写成动态的,其实也不太复杂。

我们需要做2件事:

  • 把导航菜单的数据结构化存储,比如 存放到文件 nav.json。
  • 用Angularjs的API加载nav.json数据,进行展示。

我们先定义一下导航菜单的数据格式,以JSON格式定义,每个菜单项都有3个属性字段

  • label: 导航菜单项显示的名字。
  • link: 导航菜单项的跳转链接,可以不定义。
  • children: 导航菜单项的子菜单,循环对象存储。
{
    "label": "levelA","link": "#","children": [
        {
            "label": "levelB","children": []
        }
    ]
}

下面我们用真实的数据定义导航菜单,以我的金融系统为例。

新建JSON数据文件:nav.json。

~ vi D:\workspace\javascript\angular-navbar\js\nav.json

[
    {
        "label": "债券","children": [
            {
                "label": "可转债","children": [
                    {"label": "可转债溢价率分析","link":"#"},{"label": "可转债NS定价",{"label": "可转债归因分析",{"label": "可转债套利实时监控","link":"#"}
                ]
            },{
                "label": "信用债","children": [
                    {"label": "交易所债券监控",{
                "label": "利率债","link":"#","children": []
            },{
                "label": "国债期货","children": [
                    {"label": "国债期货表现分析",{"label": "国债期货实时套利监控",{"label": "IRR历史时间序列查询",{"label": "IRR实时监控","link":"#"}
                ]
            }
        ]
    },{
        "label": "股票","children": [
            {
                "label": "基本面分析","children": [
                    {"label": "上市公司基本面数据查看",{
                "label": "量化选股策略","children": []
            }
        ]
    },{
        "label": "宏观","children": [
            {
                "label": "宏观数据","children": [
                    {"label": "宏观数据概览",{
                "label": "宏观经济预测",{
                "label": "宏观经济和大类资产表现","children": []
            }
        ]
    }
]

我们看到这个导航菜单的数据,有3级,“债券–>可转债–>可转债归因分析”,那么接下我们就直接实现对三级菜单的编程。创建HTML文件page4.html。

~ vi D:\workspace\javascript\angular-navbar\page4.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <title>多级动态导航菜单</title>
    <meta name="description" content="多级动态导航菜单">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta name="fragment" content="!" />

    <link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="/css/main.css">
</head>
<body ng-app="page4">

<div>
    <divng-controller="NavbarCtrl">
        <navrole="navigation">
            <div>
                <ahref="/">量化投资平台</a>
            </div>

            <div>
                <ul>
                    <li ng-repeat="a1 in navbar">
                        <a href="?{{ a1.label }}"data-toggle="dropdown">{{ a1.label }} <b></b></a>
                        <ul>
                            <li ng-repeat="a2 in a1.children">
                                <a tabindex="-1" href="?{{ a2.label }}">{{ a2.label }}</a>
                                <ul ng-show="a2.children.length>0">
                                    <li ng-repeat="a3 in a2.children">
                                        <a href="?{{ a3.label }}" ng-click="go(a3.link)">{{ a3.label }}</a>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
        </nav>
    </div>
</div>

<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<script src="/bower_components/angular/angular.min.js"></script>
<script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="/bower_components/angular-route/angular-route.min.js"></script>
<script src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>

<script src="/js/app.js"></script>

</body>
</html>

在Angularjs的控制器文件app.js文件中,增加page4的定义。

var page4 = angular.module('page4',['ui.bootstrap','ngRoute']);

page4.config(['$routeProvider','$locationProvider','$sceProvider',function ($routeProvider,$locationProvider,$sceProvider) {
    $routeProvider
        .when('/',{controller: 'DemoCtrl'})
        .otherwise({redirectTo: '/'});
    $locationProvider.html5Mode(true);
}]);

page4.controller('NavbarCtrl',function ($scope,$http,$location) {
    $http.get("/js/nav.json").success(function(json){
        $scope.navbar = json;
    });
});

page4.controller('DemoCtrl',function () {
    // nothing
});

查看一下显示效果,与上面的截图类似。

文章到这里就结束了,已经实现了我的功能需求。但这个话题还有很多可以优化的地方,比如实现无限级的导航菜单,菜单的展示样式替换,展示区间的控制,鼠标动作事件,封装成Angularjs的插件开源项目等。有兴趣的同学,可以我的程序的基础上继续努力,做出优秀的开源项目来。

代码已上传到github:https://github.com/bsspirit/angular-navbar,同学可以根据需要自行下载,也可以直接通过命令下载代码。

git clone https://github.com/bsspirit/angular-navbar.git
cd angular-navbar
bower install
anywhere
http://blog.fens.me/bootstrap-multilevel-navbar/

AngularJS+Bootstrap3多级导航菜单的实现代码

AngularJS+Bootstrap3多级导航菜单的实现代码

将介绍如何用AngularJS构建一个强大的web前端系统。angularjs是由Google团队开发的一款非常优秀web前端框架。在当前如此多的web框架下,AngularJS能脱颖而出,从架构设计上就高人一等,双向数据绑定,依赖注入,指令,MVC,模板。Angular.js创新地把后台技术融入前端开发,扫去jQuery一度的光芒。用angularjs就像写后台代码,更规范,更结构化,更可控。

本文将介绍如何实现多限级导航菜单。

目录

1.静态多级菜单实现

2.动态多级菜单实现

1. 静态多级菜单实现

要实现多级菜单,我们要分两步走,第一步就是把静态菜单的功能实现,通过纯静态的HTML代码完成。第二步,通过Angluarjs进行动态实现,最后把数据和程序分离,通过Ajax加载多级菜单数据。

我们先从静态多级菜单开始动手,一个六级导航菜单是什么样子呢?

如上图所示,我们定义一些功能需求。

1级菜单是导航条上的文字。

当1级菜单导航事件被触发,显示2级菜单导航,在1级菜单的正下方显示。

当2级菜单导航事件被触发,显示3级菜单导航,在2级菜单的右方显示。

当3级菜单导航事件被触发,显示4级菜单导航,在3级菜单的右方显示。

以此类推,不考虑下级菜单显示出界问题。

继续上文中的项目环境,增加一个新HTML文件: page3.html

rush:js;"> ~ vi D:\workspace\javascript\angular-navbar\page3.html <Meta charset="utf-8"> 多级导航<a href="https://www.jb51.cc/tag/caidan/" target="_blank">菜单</a> <Meta name="description" content="多级导航菜单"> <Meta http-equiv="X-UA-Compatible" content="IE=edge"> <Meta name="viewport" content="width=device-width,initial-scale=1.0"> 多级菜单导航
Link
  • Link
  • Level 1 More options Level 2 More.. Level 3
  • Level 3
  • More.. Level 4
  • Level 4
  • More.. Level 5
  • Level 5
  • Level 2
  • Level 2
  • Level 1
  • Bootstrap 3多级下拉菜单实例

    Bootstrap 3多级下拉菜单实例

    Bootstrap 虽好,但对于复杂的界面,还是有N多组件需要自己扩展,并且要往简洁、大气的Bootstrap界面上靠,着实要费一些功夫。下面分享一个Bootstrap 3的多级下拉菜单,无需第三方Js脚本,复制后直接可用。  

    【相关视频推荐:bootstrap教程

    <!DOCTYPE HTML> 
    <html lang="zh-CN"> 
    <head> 
      <meta charset="UTF-8"> 
      <title>Bootstrap 3 的多级下拉菜单示例</title> 
      <script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> 
      <link rel="stylesheet" href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css"/> 
      <script type="text/javascript" src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script> 
      <style type="text/css"> 
        .dropdown-submenu { 
          position: relative; 
        } 
        .dropdown-submenu > .dropdown-menu { 
          top: 0; 
          left: 100%; 
          margin-top: -6px; 
          margin-left: -1px; 
          -webkit-border-radius: 0 6px 6px 6px; 
          -moz-border-radius: 0 6px 6px; 
          border-radius: 0 6px 6px 6px; 
        } 
        .dropdown-submenu:hover > .dropdown-menu { 
          display: block; 
        } 
        .dropdown-submenu > a:after { 
          display: block; 
          content: " "; 
          float: right; 
          width: 0; 
          height: 0; 
          border-color: transparent; 
          border-style: solid; 
          border-width: 5px 0 5px 5px; 
          border-left-color: #ccc; 
          margin-top: 5px; 
          margin-right: -10px; 
        } 
        .dropdown-submenu:hover > a:after { 
          border-left-color: #fff; 
        } 
        .dropdown-submenu.pull-left { 
          float: none; 
        } 
        .dropdown-submenu.pull-left > .dropdown-menu { 
          left: -100%; 
          margin-left: 10px; 
          -webkit-border-radius: 6px 0 6px 6px; 
          -moz-border-radius: 6px 0 6px 6px; 
          border-radius: 6px 0 6px 6px; 
        } 
      </style> 
    </head> 
    <body> 
    <p> 
      <p> 
        <h2>Bootstrap 3多级下拉菜单</h2> 
        <hr> 
        <p> 
          <a id="dLabel" role="button" data-toggle="dropdown"data-target="#" 
            href="javascript:;"> 
            下拉多级菜单 <span></span> 
          </a> 
          <ulrole="menu" aria-labelledby="dropdownMenu"> 
            <li><a href="javascript:;">一级菜单</a></li> 
            <li><a href="javascript:;">一级菜单</a></li> 
            <li></li> 
            <li> 
              <a tabindex="-1" href="javascript:;">一级菜单</a> 
              <ul> 
                <li><a tabindex="-1" href="javascript:;">二级菜单</a></li> 
                <li></li> 
                <li> 
                  <a href="javascript:;">二级菜单</a> 
                  <ul> 
                    <li><a href="javascript:;">三级菜单</a></li> 
                  </ul> 
                </li> 
              </ul> 
            </li> 
          </ul> 
        </p> 
      </p> 
    </p> 
    </body> 
    </html>
    登录后复制

    相关推荐:

    用css3实现动画下拉菜单效果的实现步骤

    JS实现下拉菜单的显示与隐藏

    jQuery实现下拉菜单的功能实例代码

    以上就是Bootstrap 3多级下拉菜单实例的详细内容,更多请关注php中文网其它相关文章!

    Bootstrap 3的多级下拉菜单示例

    Bootstrap 3的多级下拉菜单示例

    总结

    以上是小编为你收集整理的Bootstrap 3的多级下拉菜单示例全部内容。

    如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

    关于css – Bootstrap 3多级菜单bootstrap三级菜单选项卡的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS+Bootstrap3多级导航菜单、AngularJS+Bootstrap3多级导航菜单的实现代码、Bootstrap 3多级下拉菜单实例、Bootstrap 3的多级下拉菜单示例等相关知识的信息别忘了在本站进行查找喔。

    本文标签:

    上一篇css – 为垂直HTML5范围输入设置样式(css实现垂直居中的方法)

    下一篇css – 转换比例:Firefox和IE中的第一个字母(mozilla css)