javascript - 菜单关闭 Canvas 错误移动

标签 javascript jquery html css twitter-bootstrap

我不知道这是否真的是一个错误,但会发生什么: 我在移动设备上并激活我的 Canvas 菜单,如果我向下滚动到页面底部,菜单被剪切,当滚动完成时他恢复正常,我认为这是因为我使用的是固定位置,我是把我拍的照片放在手机上。我的测试服务器是 http://tiagotestes.esy.es/portfolio (PS:那里用的图不是我的,我只是用来测试的)我真的不知道怎么解决,看起来是渲染问题...

打印:

enter image description here

HTML:

<nav class="off-canvas" id="offcanvas">
         <ul class="itens">
            <a href="#banner" id="offlinkbanner">
               <li class="off-item">
                  <h2>Inicio</h2>
               </li>
            </a>
            <a href="#sobremim">
               <li class="off-item">
                  <h2>Sobre Mim</h2>
               </li>
            </a>
            <a href="#habilidades">
               <li class="off-item">
                  <h2>Habilidades</h2>
               </li>
            </a>
            <a href="#portfolio">
               <li class="off-item">
                  <h2>Portfólio</h2>
               </li>
            </a>
            <a href="#contato">
               <li class="off-item">
                  <h2>Contato</h2>
               </li>
            </a>
         </ul>
      </nav>

CSS:

.off-canvas{
  transition: all .4s linear;
  -webkit-transition: all .4s linear;
  -moz-transition: all .4s linear;
  -o-transition: all .4s linear;
  padding-top: 50px;
  left: -300px;
  background-color: #292929;
  height: 100%;
  width: 250px;
  position: fixed;
  text-align: left;
  z-index: 9;

}

创造奇迹的Js:

function mostraCanvas(offcanvas, toggle, expand) {
    offcanvas.css("left", "0");
   // expand.css("display", "inline");
   // toggle.css("display", "none");
}

最佳答案

如果我对您的理解正确的话,我认为您应该更改代码。

场景 1:

您希望 offcanvas 菜单在打开时覆盖整个屏幕宽度。为此,您需要进行以下更改。

@media only 屏幕和 (max-width: 1021px) .off-canvas CSS 类中:

  1. width:250px; 更改为 width:100vw;
  2. 添加 min-width:250px;
  3. height:100%; 更改为 height:100vh;

在scripts.js文件中,函数escondeCanvas(offcanvas, toggle, expand),修改offcanvas.css("left", "-300px");offcanvas.css("left", "-100vw");

上述更改将使菜单覆盖整个屏幕的宽度和高度。

场景 2:

加载后第一次在移动设备中滚动时。菜单似乎转移到顶部并在底部留下一个空白区域,当滚动停止时空白区域被灰色背景填充。

我认为这是因为当您在任何网页上向上滚动时,地址栏在移动设备中消失了。在 @media only 屏幕和 (max-width: 1021px) .off-canvas CSS 类中,将 height:100%; 更改为 height:100vh;。为了确保,添加 padding-bottom: 50px;

场景 1 和 2 答案的详细信息:vw 和 vh 是视口(viewport)单位。它们考虑了设备的全屏尺寸,没有任何元素或属性影响它。例如。 100% 单位只能使用它设置的元素内的空间,其中 100vh 或 100vw 分别是加载页面的设备的全屏高度或宽度。

场景 3: 您希望将宽度和高度保持为默认值,即但是当您在菜单打开的情况下向下滚动时,顶部灰色菜单层将背景颜色切换为透明并基于顶部滚动显示返回,这应该只在菜单不显示时显示打开。

您需要更改脚本文件中的函数 trocaNav(navbar, imgtoggle, topo, posicao, itensmenu) 以检查并将 topo div 的背景颜色从透明更改为仅灰色如果菜单打开。检查打开菜单的示例逻辑,您可以在 off-canvas 左边距上放置条件。如果 left 为 0 则菜单打开,如果 left 为 -300px 或 undefined 则菜单关闭。

希望这对您有所帮助。

关于javascript - 菜单关闭 Canvas 错误移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034136/

相关文章:

javascript - 如何使 overflow hidden 的div中的内容可移动

javascript - AngularJS json 数据未显示在文本区域上

php - 如何在javascript中读取字符串的php数组

javascript - Bootstrap .dropdown() "Uncaught TypeError: undefined is not a function"

javascript - 是否可以从 HTML5 音频元素获取 Icecast 元数据?

html - 悬停框颜色和图像不透明度

javascript - 接下来的 JS 构建仅生成服务器端页面

javascript - IBM BPM - Javascript 触发延迟

jquery - 如何仅启动一个又一个 jQuery 动画就完全完成了

jquery - CSS/Jquery - 响应悬停