基于slideout.js实现移动端侧边栏滑动特效


Posted in Javascript onNovember 28, 2016

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

先看下运行效果:

基于slideout.js实现移动端侧边栏滑动特效

一、准备资料

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

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

小图标:

基于slideout.js实现移动端侧边栏滑动特效

二、实现代码

HTML代码:

<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>适合移动手机的侧边栏滑动代码 - 站长素材</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<nav id="menu" class="menu">
 <a href="#" target="_blank">
 <header class="menu-header">
 <span class="menu-header-title">主题</span>
 </header>
 </a>

 <section class="menu-section">
 <h3 class="menu-section-title">脚本代码</h3>
 <ul class="menu-section-list">
 <li><a href="#" target="_blank">jQuery</a></li>
 <li><a href="#" target="_blank">CSS3</a></li>
 <li><a href="#" target="_blank">HTML5</a></li>
 <li><a href="#" target="_blank">动画效果</a></li>
 </ul>
 </section>

 <section class="menu-section">
 <h3 class="menu-section-title">flash动画</h3>
 <ul class="menu-section-list">
 <li><a href="#" target="_blank">节日动画</a></li>
 <li><a href="#" target="_blank">flash植物</a></li>
 <li><a href="#">flash动物</a></li>
 </ul>
 </section>

 <section class="menu-section">
 <h3 class="menu-section-title">音效下载</h3>
 <ul class="menu-section-list">
 <li><a href="#" target="_blank">鸟叫声</a></li>
 <li><a href="#" target="_blank">狗叫声</a></li>
 </ul>
 </section>
</nav>
<main id="main" class="panel">
 <button class="btn-hamburger js-slideout-toggle">
 <span class="tooltip">点击打开</span>
 </button>
</main>

<script type="text/javascript" src="js/slideout.min.js"></script>
<script type="text/javascript">
 var slideout = new Slideout({
 'panel': document.getElementById('main'),
 'menu': document.getElementById('menu'),
 'padding': 256,
 'tolerance': 70
 });

 document.querySelector('.js-slideout-toggle').addEventListener('click', function() {
 slideout.toggle();
 });

 document.querySelector('.menu').addEventListener('click', function(eve) {
 if (eve.target.nodeName === 'A') { slideout.close(); }
 });

</script>

</body>
</html>

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

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

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

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

CSS代码:

html,
body {
 width: 100%;
 height: 100%;
 font: 100%/1.4em 'Calibre Light', 'Helvetica Neue', Helvetica, Arial, sans-serif;
 margin: 0 auto;
 color: #222;
 -webkit-text-size-adjust: none;
 -webkit-font-smoothing: antialiased;
}

pre {
 margin: 0;
 font-size: 14px;
}

body,
.panel {
 background-color: #fff;
}

.menu {
 background-color: #1D1F20;
 background-image: linear-gradient(145deg, #1D1F20, #404348);
}

a {
 color: #4B5;
 text-decoration: none;
}

.menu a {
 color: #fff;
}

.menu a:hover {
 text-decoration: underline;
}

.menu-header {
 border-bottom: 1px solid #2a2d2f;
 padding: 20px 0 20px 60px;
 background: url('../images/github.png') no-repeat 15px 15px;
 background-size: 32px;
}

.menu-header-title {
 font-weight: 400;
 letter-spacing: 0.5px;
 margin: 0;
}

.menu-section {
 margin: 25px 0;
}

.menu-section-title {
 text-transform: uppercase;
 color: #85888d;
 font-weight: 200;
 font-size: 13px;
 letter-spacing: 1px;
 padding: 0 20px;
 margin:0;
}

.menu-section-list {
 padding:0;
 margin: 10px 0;
 list-style:none;
}

.menu-section-list a {
 display: block;
 padding: 10px 20px;
}

.menu-section-list a:hover {
 background-color: rgba(255, 255, 255, 0.1);
 text-decoration: none;
}

.panel {
 text-align: center;
 padding-top: 5px;
 min-height: 100%;
}



/**
 * hamburger
 */
.btn-hamburger {
 border: none;
 position: absolute;
 top: 12px;
 left: 12px;
 outline:none;
 background: url('../images/menu.png') no-repeat left center;
}

.tooltip {
 font-size: 20px;
 line-height: 19px;
 display: inline-block;
 background: #4B5 url('../images/happy.png') no-repeat 135px 15px;
 color: #fff;
 padding: 10px 45px 10px 20px;
 border-radius: 4px;
 position: relative;
 left: 50px;
}



/**
 * Medium Screens
 */
@media all and (min-width:40em) {

 .btn-hamburger {
 top: 20px;
 left: 30px;
 }

 .panel-header {
 margin-top: 40px;
 width: 455px;
 }

 .title {
 font-size: 4.2em;
 }

 .subtitle {
 font-size: 1.8em;
 }

 .btn-download {
 margin-right: 20px;
 }

 .btn-fork {
 margin-left: 20px;
 }

}

.menu,
.slideout-menu {
 position: fixed;
 left: 0;
 top: 0;
 bottom: 0;
 right: 0;
 z-index: 0;
 width: 256px;
 overflow-y: scroll;
 -webkit-overflow-scrolling: touch;
 display: none;
}

.panel,
.slideout-panel {
 position: relative;
 z-index: 1;
}

.slideout-open,
.slideout-open body {
 overflow: hidden;
}

.slideout-open .slideout-menu {
 display: block;
}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过判断JavaScript的版本实现执行不同的代码
May 11 Javascript
在JavaScript中typeof的用途介绍
Apr 11 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
js使用setTimeout实现定时炸弹的方法
Apr 10 Javascript
jQuery右下角旋转环状菜单特效代码
Aug 10 Javascript
编写高性能Javascript代码的N条建议
Oct 12 Javascript
AngularJS入门教程之双向绑定详解
Aug 18 Javascript
解析预加载显示图片艺术
Dec 05 Javascript
jQuery中Datatables增加跳转到指定页功能
Feb 08 Javascript
Javascript获取某个月的天数
May 30 Javascript
js代码规范之Eslint安装与配置详解
Sep 08 Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 13 Javascript
js实现右键菜单功能
Nov 28 #Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 #Javascript
详解JS-- 浮点数运算处理
Nov 28 #Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 #Javascript
javascript实现无法关闭的弹框
Nov 27 #Javascript
js格式化时间的简单实例
Nov 27 #Javascript
浅谈jquery页面初始化的4种方式
Nov 27 #Javascript
You might like
Php+SqlServer实现分页显示
2006/10/09 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
php explode函数实例代码
2012/02/27 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
python 图片验证码代码
2008/12/07 Python
python使用socket连接远程服务器的方法
2015/04/29 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python实现大文件分割与合并
2019/07/22 Python
python批量修改ssh密码的实现
2019/08/08 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
成品仓管员工作职责
2013/12/29 职场文书
护理专业求职信
2014/06/15 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
查摆剖析材料范文
2014/09/30 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
劳模先进事迹材料
2014/12/24 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android