Проблема с абсолютной позицией в ie7, div перемещается на 10px вправо - PullRequest
8 голосов
/ 24 февраля 2011

У меня проблема с абсолютным свойством позиции в IE7. Мой div перемещается на 10 пикселей вправо. Ниже мой код. IE8 и 9 работают отлично. Идентификатор меню - это div, на который я ссылаюсь.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body{margin: 0 0 0 0; padding: 0 0 0 0;}
#holder{width: 400px; height: 500px; margin: 0 auto;}
#left{float: left; width: 50px; height: 500px; background-color: red;}
#center{float: left; width: 300px; height: 500px; background-color: green;}
#right{float: left; width: 50px; height: 500px; background-color: red;}
#header{width: 300px; height: 70px; background-color: yellow;}
#gal-holder{width: 280px; height: 70px; margin: 0 auto;}
#gallery{width: 280px; height: 410px; background-color: orange;}
#button{width: 400px; height: 45px; background-color: red; margin: 0 auto;}
#menu{width: 300px; height: 45px; background-color: pink; position: absolute; z-index: 1000; top: 100px;}
#content{width: 380px; height: 200px; margin: 0 auto; background-color: blue; padding: 10px; color: #fff;}
#clear{height: 10px;}
</style>
</head>
<body>
<div id="holder">
    <div id="left"></div>
    <div id="center">
        <div id="header"></div>
        <div id="menu"></div>
        <div id="gal-holder">
            <div id="clear"></div>
            <div id="gallery"></div>
            <div id="clear"></div>
        </div>
    </div>
    <div id="right"></div>
</div>
<div id="button"></div>
<div id="content">Sample text</div>
</body>
</html>

Ответы [ 2 ]

18 голосов
/ 24 февраля 2011

Добавьте position:relative к #center, а затем left:0px к #menu.

Абсолютно позиционированные элементы располагаются относительно их ближайшего расположенного родителя.Лучше дать элементам, которые вы хотите расположить, координаты влево / вправо и сверху / снизу, чтобы предотвратить странные результаты, такие как тот, который вы нашли.

7 голосов
/ 24 февраля 2011

Вы должны указать верхнюю и левую позиции и добавить position:relative к непосредственному родителю:

#center {
    float: left;
    width: 300px;
    height: 500px;
    background-color: green;
    position:relative;
}
#menu { 
    width: 300px;
    height: 45px;
    background-color: pink;
    position: absolute;
    z-index: 1000;
    top: 100px;
    left: 0;
}

И живой пример: http://jsfiddle.net/ambiguous/vRJMd/

По умолчанию left равно auto, и это более или менее означает, что браузер может делать все, что он считает разумным. Кроме того, абсолютно позиционированные элементы располагаются относительно ближайшего предка с позицией, которая не является static (что, вероятно, <body> в вашем случае).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...