为什么进行transform:translateX影响移动设备上固定元素的高度?

时间:2019-08-28 07:15:21

标签: html css

现在我遇到了一个奇怪的问题,我有一个height:100%的固定元素。一切正常,直到我打开Chrome Dev Tool并进入移动调试模式。我发现在移动调试模式中,固定元素的高度不会100%,而是有点高溢出。反复调试后,我发现同级的translateX属性会影响固定元素的高度。当我调整translateX属性的值时,固定元素的高度也会改变。 我将其简化为以下代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Fixed Element Height Not 100%</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      html,
      body {
        height: 100%;
        width: 100%;
      }
      body {
        overflow: hidden;
      }

      .a {
        transform: translateX(100px);
        width: 100%;
        height: 200px;
      }

      .b {
        position: fixed;
        height: 100%;
        width: 100%;
        top: 0;
        left: 0;
      }
    </style>
  </head>
  <body>
    <div class="a"></div>

    <div class="b"></div>
  </body>
</html> 

有人可以告诉我这是否是预期的吗?如果这是预期的,并且是什么原因造成的?

2 个答案:

答案 0 :(得分:2)

删除第二个body标签CSS(已溢出:隐藏)并将该属性添加到第一个body标签CSS,以下代码将为您提供帮助。

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

答案 1 :(得分:1)

不确定,但尝试使用vh代替%

认为这篇文章在这件事上也会很有趣:

https://css-tricks.com/the-trick-to-viewport-units-on-mobile/