bootstrap自定义样式之bootstrap实现侧边导航栏功能


Posted in Javascript onSeptember 10, 2018

bootstrap自带的响应式导航栏是向下滑动的,有时满足不了个性化的需求,需要做一个类似于android drawerLayout 侧滑的菜单,这就是我要实现的bootstrap自定义侧滑菜单,参考了很多官网的侧滑,实现方法各有不同,优缺点也十分明显,有的官网首页为了仅仅实现一个侧滑的效果,用了owl.carousel滑屏的插件,个人觉得小题大做了。这个bootstrap侧滑菜单更专业的名字叫做手机导航栏。我也比较这个名字,更符合bootstrap的特性。所以我这篇文章介绍的更容易的一种做法,新手更容易接受。

bootstrap侧边导航栏实现原理

1.侧滑栏使用定位fixed
2.使用bootstrap响应式使用工具类 visible-sm visible-xs hidden-xs hidden-sm等对不同屏幕适配
3.侧滑栏的侧滑效果不使用jquery方法来实现,使用的是css3 transforms属性进行div的移动,侧滑的动画效果使用的是css属性transition
4.缺点:使用两套菜单,一套是pc端屏幕显示的菜单,一套是移动端显示的手机导航菜单,这个缺点比较明显,生成无关的标签,优点代码少,简单容易接受

效果图

bootstrap自定义样式之bootstrap实现侧边导航栏功能 

bootstrap自定义样式之bootstrap实现侧边导航栏功能

bootstrap侧边导航栏

bootstrap导航栏布局
  <!--手机导航栏-->
  <div id="mobile-menu" class="mobile-nav visible-xs visible-sm">
    <ul>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Java</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >SVN</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >iOS</a></li>
    </ul>
  </div>
  <!--pc导航栏-->
  <nav class="navbar-inverse visible-lg visible-md" role="navigation">
    <div class="container">
      <div class="navbar-header">
        <a class="navbar-brand" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >菜鸟教程</a>
      </div>
      <div>
        <ul class="nav navbar-nav">
          <li class="active"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >iOS</a></li>
          <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >SVN</a></li>
          <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="dropdown-toggle" data-toggle="dropdown">Java</a></li>
        </ul>
      </div>
    </div>
  </nav>
  <!--手机导航栏侧滑-->
  <div class="nav-btn visible-xs visible-sm">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="mobile-nav-taggle" id="mobile-nav-taggle">
      <span class="glyphicon glyphicon-align-justify"></span>
    </a>
  </div>

一个导航栏的布局,用了两个导航菜单,一个是pc端的,一个是手机端,利用bootstrap响应式使用工具类visible-xs visible-sm来实现pc端隐藏切换按钮; visible-lg visible-md 实现了pc端显示导航栏;visible-xs visible-sm实现手机端显示手机导航栏。
bootstrap响应式工具类详见:https://www.runoob.com/bootstrap/bootstrap-responsive-utilities.html

css实现布局和侧滑效果(侧滑的关键css3属性transform、transition)

代码不多,仅仅10行 

* {margin:0;padding:0;}
     #mobile-menu {position:fixed;top:0;left:0;width:220px;height:100%;background-color:#373737;z-index:9999;}
     a:hover ,a:focus{text-decoration:none}
    .mobile-nav ul li a {color:gray;display:block;padding:1em 5%;  border-top:1px solid #4f4f4f;border-bottom:1px solid #292929;transition:all 0.2s ease-out;cursor:pointer;#mobile-menu {position:fixed;top:0;left:0;width:220px;height:100%;background-color:#373737;z-index:9999;transition:all 0.3s ease-in;}}
    .mobile-nav ul li a:hover {background-color: #23A1F6;color: #ffffff;}
    .show-nav {transform:translateX(0);}
    .hide-nav {transform:translateX(-220px);} /*侧滑关键*/
    .mobile-nav-taggle {height:35px;line-height:35px;width:35px;background-color:#23A1F6;color:#ffffff;display:inline-block;text-align:center;cursor:pointer}
    .nav.avbar-inverse{position:relative;}
    .nav-btn {position:absolute;right:20px;top:20px;}

要值得注意的是css3的两个属性:

transform:旋转div,支持元素2D或3D旋转,属性值translateX(X)就是在X轴上移动Xpx的距离

以上所述是小编给大家介绍的bootstrap自定义样式之bootstrap实现侧边导航栏功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery 问答知识整理
Feb 11 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 Javascript
jQuery中:disabled选择器用法实例
Jan 04 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
Bootstrap企业网站实战项目4
Oct 14 Javascript
深入理解vue中的$set
Jun 01 Javascript
package.json文件配置详解
Jun 15 Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 Javascript
Vue组件化开发思考
Feb 02 Javascript
通过实例解析JavaScript常用排序算法
Sep 02 Javascript
vue弹窗组件的实现示例代码
Sep 10 #Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 #Javascript
vue插件实现v-model功能
Sep 10 #Javascript
在Angular中使用JWT认证方法示例
Sep 10 #Javascript
详解vue-router传参的两种方式
Sep 10 #Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 #Javascript
webuploader分片上传的实现代码(前后端分离)
Sep 10 #Javascript
You might like
建立动态的WML站点(三)
2006/10/09 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Python应用库大全总结
2018/05/30 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
python实现五子棋游戏
2019/06/18 Python
python elasticsearch环境搭建详解
2019/09/02 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
建议书怎么写
2014/03/12 职场文书
公司贷款承诺书
2014/05/30 职场文书
预备党员入党感言
2015/08/01 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技