如何在调整浏览器大小时将元素保持在相同位置?

时间:2013-06-13 03:40:10

标签: html css html5 css3 positioning

我有以下html:

<body>
    <h1>Something</h1>
    <img id="myid" src='images/bigimage.png'/>
    <div id="container">
      <div id="fast-back">
        <p class="big-font">SOMETHING</p>
        <p class="small-font">SOMEThiNG ELSE</p>
      </div>
    </div>
</body> 

它的CCS是:

html {
        overflow-x: hidden;
      }

      body {
        margin: 0;
        padding: 0;
        background: url(images/body-background.png) top no-repeat;
        min-height: 860px;
        height: 860px;
      }

      h1 {
        margin: 0;
        padding: 0;
        position: absolute;
        color: white;
        visibility: hidden;
      }
#container {
        margin: 0 auto;
        padding: 0;
        position: relative;
        min-width: 1336px;
        height: 860px;
        width: 1336px;
      }
#myid{
        position: absolute;
        left: 50%;
        right: 50%;
        margin-left: -1280px;
        margin-right: -1280px;
        z-index: 1004;
      }
#fast-back {
        position: relative;
        margin-left: 15%;  /*it moves even using pixel*/
        top: 272px;
        z-index: 99999;
        text-align: center;
        width: 126px;
      }

但是,当我调整浏览器窗口大小时,“快退”div会向右移动。

如何防止此行为?

谢谢!

1 个答案:

答案 0 :(得分:0)

查看#fastback CSS规则,您在margin-left上使用百分比而不是像素。将其更改为像素作为度量单位。

如果您使用百分比作为度量单位,则元素的左边距将根据视口移动。

另一方面,如果您使用像素,即使调整了浏览器的大小,边距也会保留在同一位置。

更新

解决方法是移除#container的宽度。请参阅以下链接。

http://jsfiddle.net/jlratwil/LB8rf/1/

第一个解决方案不起作用的原因是因为容器的宽度设置为1336像素并且通过margin: 0 auto居中对齐。如果在调整大小期间浏览器视口宽度超过1336像素,则#fastback元素将移动。