HTML5现在本领太大了,PC端已经无法满足它的胃口了,它将强势攻入移动端,所以移动端中各种特效也得基于HTML5实现,看看我们将要介绍的slideout.js,能帮我们实现怎么样的侧边栏滑动特效呢~~

先看下运行效果:

一、准备资料

只需要准备slideout.js库即可:

https://github.com/Mango/slideout/blob/master/dist/slideout.js

小图标:

1)menu.png


2)happy.png

二、实现代码

HTML代码:

  1. <!doctype html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>适合移动手机的侧边栏滑动代码 - 站长素材</title>
  8. <link rel="stylesheet" href="css/styles.css">
  9. </head>
  10. <body>
  11. <nav id="menu" class="menu">
  12. <a href="#" target="_blank">
  13. <header class="menu-header">
  14. <span class="menu-header-title">主题</span>
  15. </header>
  16. </a>
  17. <section class="menu-section">
  18. <h3 class="menu-section-title">脚本代码</h3>
  19. <ul class="menu-section-list">
  20. <li><a href="#" target="_blank">jQuery</a></li>
  21. <li><a href="#" target="_blank">CSS3</a></li>
  22. <li><a href="#" target="_blank">HTML5</a></li>
  23. <li><a href="#" target="_blank">动画效果</a></li>
  24. </ul>
  25. </section>
  26. <section class="menu-section">
  27. <h3 class="menu-section-title">flash动画</h3>
  28. <ul class="menu-section-list">
  29. <li><a href="#" target="_blank">节日动画</a></li>
  30. <li><a href="#" target="_blank">flash植物</a></li>
  31. <li><a href="#">flash动物</a></li>
  32. </ul>
  33. </section>
  34. <section class="menu-section">
  35. <h3 class="menu-section-title">音效下载</h3>
  36. <ul class="menu-section-list">
  37. <li><a href="#" target="_blank">鸟叫声</a></li>
  38. <li><a href="#" target="_blank">狗叫声</a></li>
  39. </ul>
  40. </section>
  41. </nav>
  42. <main id="main" class="panel">
  43. <button class="btn-hamburger js-slideout-toggle">
  44. <span class="tooltip">点击打开</span>
  45. </button>
  46. </main>
  47. <script type="text/javascript" src="js/slideout.min.js"></script>
  48. <script type="text/javascript">
  49. var slideout = new Slideout({
  50. 'panel': document.getElementById('main'),
  51. 'menu': document.getElementById('menu'),
  52. 'padding': 256,
  53. 'tolerance': 70
  54. });
  55. document.querySelector('.js-slideout-toggle').addEventListener('click', function() {
  56. slideout.toggle();
  57. });
  58. document.querySelector('.menu').addEventListener('click', function(eve) {
  59. if (eve.target.nodeName === 'A') { slideout.close(); }
  60. });
  61. </script>
  62. </body>
  63. </html>

结构代码一项简单,主要注意一下slideout的用法,它传的几个参数:

panel:是指主要面板,指整个内容展示区域

menu:是指被隐藏的左侧菜单栏区域

padding:指点击按钮后,向右滑动的距离

CSS代码:

  1. html,
  2. body {
  3. width: 100%;
  4. height: 100%;
  5. font: 100%/1.4em 'Calibre Light', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  6. margin: 0 auto;
  7. color: #222;
  8. -webkit-text-size-adjust: none;
  9. -webkit-font-smoothing: antialiased;
  10. }
  11. pre {
  12. margin: 0;
  13. font-size: 14px;
  14. }
  15. body,
  16. .panel {
  17. background-color: #fff;
  18. }
  19. .menu {
  20. background-color: #1D1F20;
  21. background-image: linear-gradient(145deg, #1D1F20, #404348);
  22. }
  23. a {
  24. color: #4B5;
  25. text-decoration: none;
  26. }
  27. .menu a {
  28. color: #fff;
  29. }
  30. .menu a:hover {
  31. text-decoration: underline;
  32. }
  33. .menu-header {
  34. border-bottom: 1px solid #2a2d2f;
  35. padding: 20px 0 20px 60px;
  36. background: url('../images/github.png') no-repeat 15px 15px;
  37. background-size: 32px;
  38. }
  39. .menu-header-title {
  40. font-weight: 400;
  41. letter-spacing: 0.5px;
  42. margin: 0;
  43. }
  44. .menu-section {
  45. margin: 25px 0;
  46. }
  47. .menu-section-title {
  48. text-transform: uppercase;
  49. color: #85888d;
  50. font-weight: 200;
  51. font-size: 13px;
  52. letter-spacing: 1px;
  53. padding: 0 20px;
  54. margin:0;
  55. }
  56. .menu-section-list {
  57. padding:0;
  58. margin: 10px 0;
  59. list-style:none;
  60. }
  61. .menu-section-list a {
  62. display: block;
  63. padding: 10px 20px;
  64. }
  65. .menu-section-list a:hover {
  66. background-color: rgba(255, 255, 255, 0.1);
  67. text-decoration: none;
  68. }
  69. .panel {
  70. text-align: center;
  71. padding-top: 5px;
  72. min-height: 100%;
  73. }
  74. /**
  75. * hamburger
  76. */
  77. .btn-hamburger {
  78. border: none;
  79. position: absolute;
  80. top: 12px;
  81. left: 12px;
  82. outline:none;
  83. background: url('../images/menu.png') no-repeat left center;
  84. }
  85. .tooltip {
  86. font-size: 20px;
  87. line-height: 19px;
  88. display: inline-block;
  89. background: #4B5 url('../images/happy.png') no-repeat 135px 15px;
  90. color: #fff;
  91. padding: 10px 45px 10px 20px;
  92. border-radius: 4px;
  93. position: relative;
  94. left: 50px;
  95. }
  96. /**
  97. * Medium Screens
  98. */
  99. @media all and (min-width:40em) {
  100. .btn-hamburger {
  101. top: 20px;
  102. left: 30px;
  103. }
  104. .panel-header {
  105. margin-top: 40px;
  106. width: 455px;
  107. }
  108. .title {
  109. font-size: 4.2em;
  110. }
  111. .subtitle {
  112. font-size: 1.8em;
  113. }
  114. .btn-download {
  115. margin-right: 20px;
  116. }
  117. .btn-fork {
  118. margin-left: 20px;
  119. }
  120. }
  121. .menu,
  122. .slideout-menu {
  123. position: fixed;
  124. left: 0;
  125. top: 0;
  126. bottom: 0;
  127. right: 0;
  128. z-index: 0;
  129. width: 256px;
  130. overflow-y: scroll;
  131. -webkit-overflow-scrolling: touch;
  132. display: none;
  133. }
  134. .panel,
  135. .slideout-panel {
  136. position: relative;
  137. z-index: 1;
  138. }
  139. .slideout-open,
  140. .slideout-open body {
  141. overflow: hidden;
  142. }
  143. .slideout-open .slideout-menu {
  144. display: block;
  145. }

上面css代码可能有些有点多余,但是我们没必要care这么多细节呀,出来效果不就行了么~~

前端

基于slideout.js实现的移动端侧边栏滑动特效的更多相关文章

  1. Pomelo:网易开源基于 Node.js 的游戏服务端框架

    Pomelo:网易开源基于 Node.js 的游戏服务端框架 https://github.com/NetEase/pomelo/wiki/Home-in-Chinese

  2. 基于three.js实现特定Div容器的粒子特效封装

    本文基于three.js实现特定容器的粒子特效效果,支持用户传入特定的dom对象以及粒子颜色. 效果图 移入库 <script src="jquery-1.11.3.min.js&qu ...

  3. 微信小程序侧边栏滑动特效(左右滑动)

    侧边栏滑动是很常见的功能,但是小程序出来不久,很多特效还没有成熟案例,只能原生重写,所以今天为大家带来4个漂亮的侧边栏特效~~ 侧边栏特效一 先看效果: wxml: <!--page/one/i ...

  4. 基于React.js网页版弹窗|react pc端自定义对话框组件RLayer

    基于React.js实现PC桌面端自定义弹窗组件RLayer. 前几天有分享一个Vue网页版弹框组件,今天分享一个最新开发的React PC桌面端自定义对话框组件. RLayer 一款基于react. ...

  5. Vue 爬坑之路(十一)—— 基于 Nuxt.js 实现服务端渲染(SSR)

    直接使用 Vue 构建前端单页面应用,页面源码时只有简单的几行 html,这并不利于网站的 SEO,这时候就需要服务端渲染 2016 年 10 月 25 日,zeit.co 背后的团队对外发布了一个 ...

  6. 基于VUE.JS的移动端框架Mint UI

    Mint UI GitHub:github.com/ElemeFE/mint 项目主页:mint-ui.github.io/# Demo:elemefe.github.io/mint- 文档:mint ...

  7. 基于node.js 的 websocket的移动端H5直播开发

    这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...

  8. 基于Vue.js PC桌面端弹出框组件|vue自定义弹层组件|vue模态框

    vue.js构建的轻量级PC网页端交互式弹层组件VLayer. 前段时间有分享过一个vue移动端弹窗组件,今天给大家分享一个最近开发的vue pc端弹出层组件. VLayer 一款集Alert.Dia ...

  9. [译]基于Vue.js的10个最佳UI框架,用于构建移动应用程序

    原文查看10 Best Vue.js based UI Frameworks for Building Mobile Apps 如果您期待使用Vue.js构建移动应用程序,那么您可以选择许多可用的UI ...

随机推荐

  1. Debussy与modelsim联仿时 do 文件脚本

    quit -sim set PATH1 D:/Program/modelsim/vivado_lib set PATH2 D:/Program/Vivado/Vivado/2014.4/data/ve ...

  2. ASP.NET ZERO Core Application 学习笔记

    地址:https://www.aspnetzero.com/Documents/Development-Guide-Core 1.恢复数据库 MIGRATOR CONSOLE APPLICATION ...

  3. adb通信原理分析

    关于这个问题,自己研究了一下,没有研究出来 在网络上搜罗了一下,基本上关于ADB的原理用了两张图表示:        我表示没有看懂这两个图, 又开始查阅一些一些资料: 首先知道adb的通信有Sock ...

  4. zabbix网络发现

    zabbix的网络自动发现是一个非常强大的功能,该功能可以完成以下工作 •快速发现并添加主机. •简单的管理. •随着环境的改变而快速搭建监控系统. 网络发现基于以下信息 •ip地址段 •基于服务的F ...

  5. cocos2d-x源码分析(1)

    class CC_DLL CCCopying { public: virtual CCObject* copyWithZone(CCZone* pZone); }; class CC_DLL CCZo ...

  6. 重载new和delete

    当我们创建一个new表达式时,会发生两件事.首先使用operator new()分配内存,然后调用构造函数.在delete表达式里,调用了析构函数,然后使用operator delete()释放内存. ...

  7. ooad单例模式-Singleton

                                                单例模式Singleton 主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 比如建立目录 ...

  8. SQL语言和DML相关操作以及相应的运算符

    SQL 1.结构化查询语言 2.特点 a.第四代编程语言,更接近自然语言 b必须有数据库系统解释执行 c.对象名,关键字不区分大小写 d.字符串必须要用单引号引起来,不能用双引号 e.每条语句最后用分 ...

  9. Qt 5.7 版本+2013VS环境配置

    原本是使用MSVC5.5.1的版本,碍于习惯,之前一直使用creator,后面才转向VS,因为它的调试实在是太棒了,小程序还是creator调试(比如抽出大程序中的小模块之类的) 不知道是版本问题还是 ...

  10. IE9 不F12打开控制台,代码不执行。打开后正常

    对每个前端er来说,提起来ie就是头大,各种兼容性的问题,让人头大.前两天就在ie9下遇到一个比较少见的问题. 具体情况是这样的: ie9下,js不执行,各种绑定事件不起作用.其他浏览器都6得飞起.当 ...