Slideout.js菜单不流畅

时间:2018-10-31 15:43:36

标签: javascript css menu sidebar

我一直在尝试使slideout.js在我的网站上正常工作。

问题在于,当打开菜单时,文本会在完全打开之前显示,而当菜单关闭时,文本会在菜单关闭后消失。

我查看了CSS,并确保菜单有背景并且正确设置了高度。

演示(以移动设备查看)-http://stefan.admark.co.uk/gates/index.php

JS:

      window.onload = function() {
        var slideout = new Slideout({
          'panel': document.getElementById('main'),
          'menu': document.getElementById('menu'),
          'side': 'right',
          'padding': 256,
  'tolerance': 70
        });

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

      };

CSS:

.slideout-menu {
  position: fixed;
  top: 80px;
  bottom: 0;
  width: 256px;
  /* min-height: 100vh; */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  z-index: 999;
  display: none;
  padding-left:20px;
}

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

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

.slideout-panel {
  position: relative;
  z-index: 1;
  will-change: transform;
  background-color: #ffffff; /* A background-color is required */
  min-height: 100%;
  -webkit-box-shadow: 6px 0px 5px 0px rgba(0,0,0,0.1);
-moz-box-shadow: 6px 0px 5px 0px rgba(0,0,0,0.1);
box-shadow: 6px 0px 5px 0px rgba(0,0,0,0.1);
}

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

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

@media screen and (min-width: 1000px) {
  .slideout-panel {
    /* margin-left: 256px; */
  }

  .slideout-menu {
    display: none;
  }

}

.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;
}

1 个答案:

答案 0 :(得分:1)

页面上的<nav>元素似乎没有任何过渡CSS。

例如,您的<main>元素已应用了以下转换:

transition: -webkit-transform 300ms ease 0s; transform: translateX(-256px)

无论您触发了<main>元素转换的任何JavaScript,如果将其应用于<nav>,都将导致文本和<nav>中的所有内容也正确转换。