2010-10-27 7 views
0

J'ai une structure comme celle-CSS taille du contenu div question

<div id="first"> 
    <div id="second"> 
    <div id="third"> 
     <div id="fourth"> 
     text 
     </div> 
     <div id="fourth"> 
     text2 
     </div> 
    </div> 
    Some other stuff... 
    </div> 
</div 

Voici le css pour elle au moment:

#first { 
width:960; 
} 

#second { 
position:relative; 
} 

#third { 
position:relative; 
top:0; 
right:0; 
} 

#forth { 
position:relative; 
top:0; 
left:0; 
} 

Maintenant, je voudrais des quatrième éléments à rester dans une rangée et à partir du troisième élément de rester sur le côté droit de la deuxième div. Le second div a également une largeur de 960 comme le premier. Quel est le problème avec cela? pourquoi ça ne marche pas?

Répondre

1

Edité et devrait fonctionner (non testé):

<div id="first"> 
    <div id="second"> 
    <div id="third"> 
     <div class="fourth"> <!-- changed to class --> 
     text 
     </div> 
     <div class="fourth"> <!-- changed to class --> 
     text2 
     </div> 
    </div> 
    Some other stuff... 
    </div> 
</div> <!-- was missing closing bracket --> 

Et le style:

#first { 
width:960px; /* was missing px */ 
} 

#second { 
position:relative; 
} 

#third { 
float:right /* Makes the element float on the right side. Might want to clear in a later id/class to avoid quirks */ 
position:relative; 
/* Removed redundant top:0; and right:0; */ 
} 

.fourth { /* Changed to class and fixed spelling */ 
position:relative; 
/* Removed redundant top:0; and right:0; */ 
} 

ID de doit être utilisé pour des éléments qui ne seront utilisés qu'une seule fois. Les classes devraient être utilisées pour les éléments qui peuvent/seront utilisés plusieurs fois.

+0

Merci pour votre commentaire. Je pense que ce sera celui dont j'avais besoin. Aussi, je dois vous poser des questions sur la classe et ID. Id est utilisé une fois dans toute la page HTML ou dans un div? –

+0

Votre solution est bonne, mais les "quatrièmes" éléments sont sous l'autre, ils devraient être dans une ligne? S'il vous plaît pouvez-vous m'aider dans ce domaine? –

+0

Vous devez vous assurer que les éléments .quatrième ne sont pas trop larges pour s'adapter l'un à côté de l'autre. Tout ce que vous devez faire est d'ajouter display: inline; ou flotter: à gauche; à votre. quatrième classe. Chaque ID ne doit être utilisé qu'une seule fois dans tout le document html. Le positionnement par défaut est également relatif, de sorte que ces déclarations relatives sont vraiment redondantes. – Freyr

1

Tout d'abord, 960 n'est pas une largeur. Sans un spécificateur d'unités, c'est juste un nombre. 960px est une largeur.

Deuxièmement, ces autres div sont positionnés correctement, mais leurs largeurs sont 100% (la valeur par défaut), donc ils ont l'air d'être empilés. Le positionnement n'est pas perceptible à cause de cela. Editer: Vous avez également mal orthographié "#fourth" dans votre sélecteur CSS.

+0

Merci pour votre commentaire. Oui, il est en avant. Désolé pour cela. :) –

1

Pour la suite div, pourquoi ne pas utiliser inline-div? [Je ne suis pas sûr que cela fonctionne sur IE7 et ci-dessous] .. et je pense que le troisième peut être flotté vers la droite. De même, ne devriez-vous pas utiliser des classes plutôt que plusieurs éléments ayant le même identifiant?

#third { flotteur: droit; position: relative; en haut: 0; droite: 0; }

#forth { display: poste inline-block: relative; en haut: 0; gauche: 0; }

+0

Merci pour votre commentaire. –