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

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

先看下运行效果:

一、准备资料

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

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

小图标:

1)menu.png


2)happy.png

二、实现代码

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这么多细节呀,出来效果不就行了么~~

前端

时间: 2024-12-27 05:43:50

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

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

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

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

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

基于原生js和flex布局开发侧边栏

css: 1 body{ 2 padding: 0 10%; 3 } 4 ul,li{ 5 margin: 0; 6 padding: 0; 7 list-style: none; 8 } 9 .flex-box{ 10 display: flex; 11 border: 1px solid; 12 } 13 .flex-left{ 14 width: 200px; 15 text-align: center; 16 background: peru; 17 } 18 .flex-right{

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

https://github.com/NetEase/pomelo/wiki/Home-in-Chinese

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

Mint UI GitHub:github.com/ElemeFE/mint 项目主页:mint-ui.github.io/# Demo:elemefe.github.io/mint- 文档:mint-ui.github.io/docs/# 由饿了么前端团队推出的 Mint UI 是一个基于 Vue.js 的移动端组件库.自 6 月初开源以来,根据社区和团队内部的反馈,修复了一些 bug 并新增了部分组件,于本周发布了 0.2.0 版本.本文介绍如何从零开始构建一个使用 Mint UI 的 Vu

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

这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运行http服务,手机端直接运行http://ip:8000/mpegts.html 即可看到推流过来的视频 新起一个终端运行 npm run ws-server,服务启动后,即可以通过ffmpeg进行推流. 推流过程如下: 推流视频文件: ffmpeg -re -i E:\2.mp4   -code

基于Node.js + socket.io实现WebSocket的聊天DEMO

原文摘自我的前端博客,欢迎大家来访问 http://hacke2.github.io 简介 最近看Node.js和HTML5,练手了一个简易版的聊天DEMO,娱乐一下 为什么需要socket.io? node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一, 为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验, 于是socket.io诞生. 简答来说socket.io具体以下特点: 1.socket.io设计的目标是支持任何的浏览器

《基于Node.js实现简易聊天室系列之详细设计》

一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次不是很清楚,索性这一章将所有的过程(前后端以及数据库)做一个介绍,下一章写完总结就OK了吧. (1)前端部分 涉及到的技术:html.css.bootstrap.jquery.jquery UI 登录/注册界面使用的是bootstrap响应式布局,即支持不同尺寸的客户端,以此提高用户的体验.在这之前

基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)

高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+ThinkJS+MySQL 计划添加基于Vue.js的后台管理系统.PC版.Wap版 GitHub: https://github.com/tumobi/nideshop-mini-program 项目截图 首页 专题 分类 商品列表 商品详情 购物车 订单中心 功能列表 首页 分类首页.分类商品.新品首发.