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 相关文章推荐
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
jQuery插件ajaxFileUpload使用详解
Jan 10 Javascript
JavaScript编写九九乘法表(两种任选)
Feb 04 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
详解js 创建对象的几种方法
Mar 08 Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
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
php中error与exception的区别及应用
2014/07/28 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
javascript引导程序
2008/10/26 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
2016/11/09 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
使用tensorflow实现AlexNet
2017/11/20 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
python flask安装和命令详解
2019/04/02 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
大学毕业自我评价
2014/02/02 职场文书
采购意向书范本
2014/03/31 职场文书
捐资助学倡议书
2014/04/15 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
Redis Lua脚本实现ip限流示例
2022/07/15 Redis