是什么导致这种奇怪的上边缘定位边缘情况?

时间:2012-01-12 03:03:22

标签: jquery html css

我似乎发现了一个奇怪的边缘情况,似乎子元素使用父宽度作为上边距百分比而不是高度。

它也发生在chrome和firefox上,这是预期的行为吗?如果是这样,为什么高度会从宽度中得出?

要查看错误,请将浏览器设置为高于宽度,然后打开下面的代码。

我希望儿童div不在屏幕上但不是。如果浏览器宽度超过它的高度,则div比屏幕更远。如果浏览器完全是正方形,它只在正确的位置。

<html>
<head>
  <title>Test</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
  <style type="text/css">
    body {
      padding: 0;
      margin: 0;
    }
    div.parent {
      position: absolute;
      width: 200%;
      height: 100%;
    }
    div.a {
      position: absolute;
      background-color: red;
      width: 50%;
      height: 100%;
    }
    div.child {
      background-color: orange;
      margin-top: -100%;
      width: 100%;
      height: 100%;
    }
  </style>
</head>
<body>
  <div class="parent">
    <div class="a">
      <div class="child">
      </div>
    </div>
  </div>
  <script type="text/javascript">
    why = $('.child').position().top + $('.child').height()
    console.log(why)
    what = $('.child').position().top + $('.child').width()
    console.log(what)
  </script>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

从CSS框模型规范:

  

8.3 Margin properties:&#39; margin-top&#39;,&#39; margin-right&#39;,&#39; margin-bottom&#39;,&#39; margin-left&# 39;和&#39; margin&#39;

     

...   百分比是根据生成的包含块的宽度计算的。请注意,对于&#39; margin-top&#39;和&#39; margin-bottom&#39;同样。

有点奇怪,但我确定他们有理由。