2009-12-02 9 views
1

Existe-t-il un moyen de réunir trois divs ensemble?Astuce Css pour conjoindre divs

Hello 
<div class="mainContainer"> 
    <div class="LeftDiv"></div> 
    <div class="CenterDiv"> 
     <input id="txtTest" type="text"/> 
    </div> 
    <div class="RightDiv"></div> 
</div> 
World! 

ce que nous avons besoin est de présenter le code de cette façon:

Hello<*LeftDiv*><*CenterDiv with the textbox*><*RightDiv*>World

J'ai essayé d'utiliser float: left sur LeftDiv, CenterDiv et RightDiv mais affecte également le css mainContainer. J'ai aussi besoin de régler la hauteur et la largeur de LeftDiv et RightDiv sur le CSS mais je ne peux pas le faire sans le flotteur.

Merci d'avance.

Editer: Ajout d'une question - quand LeftDiv, CenterDiv et RightDiv sont flottants - à gauche, pourquoi MainContainer est-il affecté? Je veux juste avoir les trois divs internes siamoises sans affecter le comportement de div parent ...


divs avec affichage: inline-block ne fonctionnent pas comme prévu. Mais les travées font.

Hello 
<span class="mainContainer"> 
    <span class="LeftDiv"></span><span class="CenterDiv"> 
     <input id="txtTest" type="text"/> 
    </span><span class="RightDiv"></span> 
</span> 
World! 

Et les travées ne devraient pas avoir un espace entre eux parce que la plupart des navigateurs ne les rendre avec un espace blanc entre ... =)

(répondues pour référence future)

+0

LeftDiv et RightDiv sont intentionnellement laissés vides afin que je puisse simplement utiliser une image de fond pour eux. – Jronny

Répondre

1

vous pouvez utiliser en ligne d'affichage -bloc, de cette façon il n'y aura pas de « retour à la ligne » avant divs

div.mainContainer, div.mainContainer div 
{ 
    display:-moz-inline-stack; /* for gecko */ 
    display: inline-block; 
} 

essaient goog-inline-block classe définie dans goog/demos/css/common.css de la bibliothèque de fermeture - soi-disant crique Tous les principaux navigateurs

+0

inline-block n'est pas implémenté sur les anciens navigateurs ... = ( – Jronny

+0

hmm, tu as raison ... je viens de chercher et j'ai trouvé quelque chose sur le sujet – Evgeny

+0

Les divs ne sont pas compatibles avec display: inline-block mais cette réponse aide. =) – Jronny

0

Vous pouvez faire flotter tous les divs enfants de "mainContainer" à gauche comme ci-dessous, puis vous pouvez définir les exigences de hauteur et de largeur à votre guise.

#mainContainer > div 
{ 
    float:left; 
} 
#LeftDiv 
{ 
    height:100px; 
    width:100px; 
    background-color:red; 
} 
#RightDiv 
{ 
    height:100px; 
    width:100px; 
    background-color:green; 
} 

Hmm, et si vos conteneurs gauche et droite ne sont destinés à une image d'arrière-plan, vous pourriez envisager de simplement rendre une image et l'appliquer à mainContainer,

#mainContainer 
{ 
    background-image:url(theimage.jpg); 
    padding-left:100px; /*The amount of the image to the left */ 
    padding-right:100px; /* the amount of the image to the right. */ 
} 
+0

Je ne peux pas utiliser float: left car cela donnerait le code: <*LeftDiv*><* CenterDiv avec la zone de texte *><*RightDiv*> Hello World. Merci quand même. – Jronny

+0

Il ne devrait pas aussi longtemps qu'il est enveloppé dans mainContainer. – Sam152

+1

les deux div vides doivent vraiment être ajoutés car l'image d'arrière-plan de LeftDiv est comme "(" et RightDiv est comme un ")"; Ce que j'attends du code à rendre est "(textbox)"; et le tout devrait afficher Hello (textbox) World ... = ( – Jronny