2009-07-22 7 views
0

J'ai ces deux divs, l'un dans l'autre, et j'ai les styles définis. L'encapsulation est relative et l'enfant est absolu.Pourquoi ma position enfant absolue est-elle placée par rapport à la fenêtre du navigateur au lieu de sa position parent relative?

L'enfant n'est-il pas censé être positionné en fonction du coin supérieur gauche de la div externe, #RightSection?

Au lieu de cela, il le fait en fonction de la fenêtre du navigateur, des prospects?

 <div id="RightSection"> 
      <div id="Panels"> 

      </div> 
     </div> 

#RightSection 
{ 
    position: relative; 
} 

#Panels 
{ 
    position: absolute; 
    background-color: Blue; 
    width: 100px; 
    height: 100px; 
    z-index: 9000; 
} 
+0

J'ai eu ce problème récemment et j'ai trouvé que la solution était de mettre à gauche: 0px; top: 0px; dans un style distinct = "" attribut sur chaque balise div, en plus du style défini par l'ID de la div. Je me demande si quelqu'un pourrait expliquer pourquoi c'est. – Kai

Répondre

1

Le positionnement absolu à l'intérieur des éléments relatifs est supposé faire ce que vous décrivez, mais ce comportement n'est pas toujours pris en charge. Quel navigateur utilisez-vous et quelle DTD utilisez-vous? Pour plus de détails, voir http://www.brainjar.com/css/positioning/default4.asp pour plus de détails. Il a également une démo du positionnement afin que vous puissiez vérifier qu'il fonctionne ou non dans votre navigateur.

Je peux confirmer que cela ne fonctionne pas dans IE6. Cependant, je ne peux pas garantir d'autres navigateurs pendant que je suis au travail. Une brève recherche en ligne me porte à croire que ce problème existe aussi dans IE7, et pourrait être un problème dans IE8 tant qu'il est en mode IE7.

+0

Des moyens relatifs positionnés par rapport à sa position de rendu normale. Absolue signifie qu'il est positionné par rapport à son bloc conteneur. http://www.w3schools.com/css/pr_class_position.asp – tj111

1

J'ai également trouvé que si je ne déclare pas les paramètres CSS haut et à gauche pour les éléments absolument positionnés, il semble ignorer un parent au-dessus de lui et juste sauter au corps de la page.

Essayez tout en lui donnant les paramètres haut et à gauche, voir si elle aide,

#Panels 
{ 
    position: absolute; 
    top: 0; 
    left: 0; 
    background-color: Blue; 
    width: 100px; 
    height: 100px; 
    z-index: 9000; 
} 

Il devrait ressembler très bien une fois que vous ajoutez à ces paramètres par défaut.

+0

De plus, sans définir les paramètres haut et gauche, après avoir testé il y a une minute, il semble que l'objet positionné absolument va où il le ferait s'il était positionné statiquement - sauf sur son propre couche au-dessus de tout le reste, donc l'ajout d'un div statique ci-dessous ferait juste les deux se chevauchent. Vous avez donc besoin des paramètres haut et gauche pour savoir où aller, sinon il agit comme une zone statique simple. En tant que test, essayez de donner à votre div #RightSection une hauteur et un bourrage de padding, sans paramètres sur le div interne, il devrait apparaître sous ce div #RightSection –

+0

* pas sous, mais à l'intérieur du div externe. Donc donner à la div extérieure 50px de rembourrage fera apparaître l'intérieur 50px vers le bas sur la page –

Questions connexes