Slideout.js移动端触摸滑动侧边菜单插件

Slideout.js是一款轻量级的插件,特别适合制作移动端网页APP侧边栏的一种动画效果脚本,同时能支持点击和触摸时间,它没有依赖,自由搭配简单的标记,支持原生的滚动,您可以轻松地定制它。它支持不同的CSS3转换和过渡。

效果为:

参数说明:

'menu':document.getElementById('menu'),  //侧栏菜单区域

'panel':document.getElementById('main'), //body中的正文

'side':'right',   //右边侧栏滑动,默认是左侧

'padding':256, //滑动的总体宽度多宽

'tolerance':70

'duration':300

'fx':ease

特点

  • 完全免费使用,无需任何顾及
  • 使用简单的HTML代码实现
  • 支持本地滚动事件
  • 简单易于定制
  • 支持CSS的transforms和transitions
  • 轻量级的插件,压缩版本仅仅4KB

兼容性

  • Chrome (IOS, Android, desktop)
  • Firefox (Android, desktop)
  • Safari (IOS, Android, desktop)
  • Opera (desktop)
  • IE 10+ (desktop)

安装方法

1、通过软件包安装

$ npm install slideout
$ bower install https://github.com/mango/slideout.git
$ component install mango/slideout

2、你可以直接slideout.js访问的Github地址,下载得到slideout.js的源文件,然后在页面中引入

<script src="js/slideout.js"></script>

3、通过CDN

https://www.bootcdn.cn/slideout

使用方法

1、首先在你的网页中需要有一个菜单 (“#menu”)和内容 (“#panel”) 容器

<nav id="menu">
      <h2>Menu</h2>
    </nav>

    <main id="panel">
      <header>
        <button class="toggle-button"></button>
        <h2>Panel</h2>
      </header>
    </main>

 

2、添加一些样式到你样式表中,例如下面的代码

body {
  width: 100%;
  height: 100%;
}

.slideout-menu {
  position: fixed;
  top: 0;
  bottom: 0;
  width: 256px;
  min-height: 100vh;
  overflow-y: scroll;
  -webkit-overflow-scrolling: touch;
  z-index: 0;
  display: none;
}

.slideout-menu-left {
  left: 0;
}

.slideout-menu-right {
  right: 0;
}

.slideout-panel {
  position: relative;
  z-index: 1;
  will-change: transform;
  background-color: #FFF; /* A background-color is required */
  min-height: 100vh;
}

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

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

 

注意:插件不包含任何样式文件,这些你需要自己创建,不过插件提供了一些可选的样式,你可以试着修改这些样式,来满足你项目的要求。

3、初始化插件,然后传递插件的可选参数即可

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

  // Toggle button
  document.querySelector('.toggle-button').addEventListener('click', function() {
    slideout.toggle();
  });
</script>

git下载地址为:https://github.com/mango/slideout

Demo: https://codepen.io/pazguille/pen/mEdQvX

 

滑动时内容部分有黑色不透明图层效果

<nav id="menu">
  <header>
    <h2>Menu</h2>
  </header>
</nav>

<main id="panel">
  <header>
    <h2>Panel</h2>
  </header>
  <div id="carousel" data-slideout-ignore>
    <h2>Carousel</h2>
    ...
  </div>
</main>
.panel:before {
  content: '';
  display: block;
  background-color: rgba(0,0,0,0);
  transition: background-color 0.5s ease-in-out;
}

.panel-open:before {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
  background-color: rgba(0,0,0,.5);
  z-index: 99;
}
function close(eve) {
  eve.preventDefault();
  slideout.close();
}

slideout
  .on('beforeopen', function() {
    this.panel.classList.add('panel-open');
  })
  .on('open', function() {
    this.panel.addEventListener('click', close);
  })
  .on('beforeclose', function() {
    this.panel.classList.remove('panel-open');
    this.panel.removeEventListener('click', close);
  });

Demo: http://codepen.io/pazguille/pen/BQYRYK

posted @ 2019-05-15 09:59  Koidt  阅读(484)  评论(0)    收藏  举报