2009-11-05 4 views
1

J'ai le balisage suivant en utilisant 2 divs. le div #child a défini la position: absolute;jquery: auto-size absolu positionné enfant div

+------------------------------+ 
| +----------+    | 
| | #child |    | 
| +----------+    | 
|        | 
|        | 
|        | 
+------------------------------+ 

je veux changer la taille de l'enfant par code afin qu'il toujours auto-tailles à son récipient comme celui-ci:

+------------------------------+ 
| +----------+    | 
| | #child |    | 
| |   |    | 
| |   |    | 
| |   |    | 
| +----------+    | 
+------------------------------+ 

est-il une fonction par défaut pour elle? thx

+0

jquery n'est pas nécessaire pour cela. Pure CSS peut le faire. Vois ma réponse. – cletus

+0

seul problème avec css est que 100% hauteur sur les éléments ne fonctionne pas dans tous les navigateurs –

+0

100% hauteur de la page a des problèmes sur certaines versions de IE. Autre que CSS est préférable à Javascript pour cela et se traduira par une * beaucoup * meilleure expérience utilisateur. Si quelque chose vous devriez utiliser CSS où vous le pouvez et Javascript/jQuery dans les rares cas où CSS ne fonctionnera pas (que vous pouvez détecter). – cletus

Répondre

0

essayer;

$('#child').height($('#child').parent().height()); 

Ceci suppose que vous n'avez aucun remplissage et bordures sur votre div externe. Si vous le faites, vous devrez les enlever de la hauteur dans certains navigateurs pour vous assurer que cela correspond.

0
<div id="parent"> 
    <div id="child"></div> 
</div> 

avec:

#parent { position: relative; background: red; height: 500px; width: 700px; } 
#child { position: absolute; background: yellow; height: 80%; top: 10%; bottom: 10; left: 100px; width: 300px; } 

Note: la hauteur de l'enfant est relative (80%) à la hauteur du parent donc peu importe ce que vous définissez la hauteur du parent ou de redimensionner dynamiquement à, ça va changer la hauteur de l'enfant mais le parent doit avoir une hauteur explicitement définie (même si c'est 100%) ou ça ne marchera pas.

0

Essayez quelque chose comme ça (approximation grossière, adapter à vos besoins)

$('#child').css('left', '20%').css('top','10%').css('height','80%').css('width', '30%'); 
+0

Cela aurait pour effet de diviser le div enfant par rapport à la taille de la page, pas la div parente. –

+0

@ James Goodwin: euh? cela placerait l'enfant par rapport à la div parente, pas à la page. –

+0

Désolé je pensais pour une raison quelconque parce que c'était absolu il utiliserait la hauteur de la page à la place, mais en fait vous avez raison! :) –

0

Puisque vous marqués avec jQuery Je vais vous donner une solution de style jQuery aussi:

$("#child").height($("#parent").height()*0.8); 
Questions connexes