css - 移动设备上 "fixed"元素的视口(viewport)宽度问题

标签 css touch fixed horizontal-scrolling

我遇到了一个与固定元素的宽度相关的问题。这是笔:

https://codepen.io/highfield/pen/PKpXGG

<body>
  <nav class="navbar">
    <div style="position:absolute; left:20px; top:12px">
      <a href="#">left</a>
    </div>
    <div style="position:absolute; right:20px; top:12px">
      <a href="#">right</a>
    </div>
  </nav>

  <div class="container">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sagittis, diam quis hendrerit bibendum, augue massa tempor neque, et dapibus risus ligula tempor nulla. Donec accumsan tortor eget lorem venenatis, ac tincidunt eros volutpat. Mauris
      tempus libero metus, in posuere velit scelerisque vel. Donec dapibus dolor eu tortor interdum tincidunt. Donec dignissim nisl eleifend mauris efficitur dignissim. Nullam bibendum felis a nibh maximus efficitur. Donec commodo est at maximus facilisis.
      Sed risus dui, ultricies non accumsan sit amet, volutpat sit amet dui. Sed blandit tempus feugiat. Aliquam quis felis at eros vehicula viverra in eget ante. Phasellus tempus blandit turpis, sed condimentum nisl rutrum eget. Pellentesque suscipit
      sem accumsan nunc dapibus, id volutpat eros molestie. Proin dolor nisi, sodales quis tempor sagittis, sodales non lorem. Sed porta et nisl vel scelerisque.</p>
    <p>Maecenas dapibus mattis sem. Nam suscipit urna nec massa maximus gravida. Aliquam nec arcu scelerisque, elementum orci at, dictum augue. Sed quis ex risus. Integer nec imperdiet nisi. Cras non pretium metus. In feugiat metus a ante tincidunt euismod.
      Nunc leo nisi, pellentesque non sem ut, posuere vulputate ante. Morbi elementum vel libero in egestas. Pellentesque convallis ullamcorper mi ut sagittis. Vivamus ut facilisis sapien, vel consequat ligula. Vestibulum quis vehicula dui, vitae finibus
      ante. Ut elementum suscipit nisl eu vestibulum. Integer semper aliquam metus.</p>
    <p>Proin sapien ligula, pharetra id magna sit amet, bibendum fermentum tortor. Donec ultricies ex vel iaculis mollis. Duis scelerisque tellus purus, eu eleifend arcu scelerisque ac. Curabitur varius velit nunc, sit amet sollicitudin nibh rhoncus a. Nam
      eu cursus sem, at tempor eros. Sed sodales, ante eu sagittis interdum, tortor dui feugiat diam, eu tempor mi justo sed risus. Ut non vulputate ligula, eu fermentum felis. Duis quis leo vel nulla ullamcorper viverra ut in leo. Suspendisse scelerisque,
      lorem commodo convallis consequat, ex nulla maximus nunc, ac faucibus augue risus quis arcu. Fusce porttitor, augue non malesuada consequat, odio tellus viverra diam, ut tempus mi tortor ac felis. Proin a pretium nibh, in volutpat ligula. Mauris
      non diam massa.</p>
    <p>Maecenas hendrerit tincidunt ultrices. Sed vel sem velit. Cras felis purus, commodo a velit sit amet, fringilla blandit quam. Mauris ac cursus libero. Proin volutpat ut justo ut porta. Nulla lacus arcu, hendrerit sit amet nisi sed, dictum fermentum
      erat. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p>
    <p>Donec nisl quam, efficitur non neque nec, vulputate rutrum lorem. Maecenas non finibus lectus. Nullam eu odio non leo mollis gravida. Aenean massa dolor, varius a hendrerit eu, molestie eu diam. Morbi lacus ipsum, ultrices et massa quis, viverra rutrum
      urna. Sed vehicula convallis massa, ac maximus diam maximus in. Aliquam non ultrices orci. Phasellus erat ante, iaculis a iaculis eget, porttitor ut nibh. Sed varius hendrerit semper. Phasellus cursus posuere semper. Curabitur pulvinar eget metus
      eget ultricies.</p>
  </div>

  <nav id="menu-left">
  </nav>

  <nav id="menu-right">
  </nav>

</body>

该片段模拟了一个双面菜单(不包括在内),其中“折叠的”侧边栏是 3D 转换的窗口。为简单起见,两个侧边栏(半透明的绿色和红色)仅根据它们自己的宽度进行了部分翻译。

通过在“桌面模式”下查看页面,一切正常。当您使用(几乎)任何移动设备查看该页面时,问题就变得很清楚了。该页面似乎可以水平滚动,但我看不出有任何原因,因为它比在桌面 View 中这样做。第一个“nav”元素显示其宽度大于文档:为什么?此外,我无法找到将其宽度限制为文档本身的方法。

简而言之,我希望翻译出视口(viewport)的元素应该保持不可见,移动设备上的滚动、平移、缩放或其他任何操作都不应显示它们。

enter image description here

最佳答案

找到了。

只需在元元素上添加“user-scalable=no”开关即可解决问题。

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

有用的链接:https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag

关于css - 移动设备上 "fixed"元素的视口(viewport)宽度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573496/

相关文章:

css - 请详细解释这部分YUI3 CSS Reset

iphone - 如何在触摸时获得像素颜色?

javascript - D3.js 网格和刻度问题

javascript - 如何让 touchEnd 的行为像 mouseUp 一样?

Android ACTION_MOVE 阈值

当我在某个点向下滚动或刷新时,css 固定位置 div 消失

css - 位置:固定在 CSS 媒体打印上似乎重复打印内容?

java - 我的 java 代码中的这个打印函数有什么问题?

jquery - 使用 jquery 更改工具提示 div 的 css

javascript - Accordion 列表的加/减图片