Propriété float dans un container
Bonjour,
J'ai un élément "container" qui contient un élément "blog-content" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
#container{
position: relative;
max-width: 980px;
width: 100%;
margin-right: auto;
margin-bottom: 10px;
margin-left: auto;
border-top: 1px solid #cdcdcd;
border-right: 1px solid #cdcdcd;
border-bottom: 1px solid #cdcdcd;
border-left: 1px solid #cdcdcd;
box-shadow: 0 0 5px #cccccc;
background-color: #ffffff;
height: auto;
}
#blog_content {
float: none;
width: 500px;
margin-bottom: 20px;
} |
Maintenant, je voudrais ajouter un 2ème élément "sidebar" dans mon container.
J'ai cru bon de modifier la propriété float de blog_content comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
#blog_content {
float: left;
width: 500px;
margin-bottom: 20px;
}
.sidebar {
float: right;
width: 225px;
margin: 20px 0 20px 25px;
} |
Mais ceci ne marche pas, mon les éléments blog_content et sidebar apparaissent sous mon container qui est donc vide.
Où est l'erreur ?
Partiellement vous avez dit partiellement !
Bonjour,
Dans un flux normal, et en absence de directives CSS particulières, les éléments successifs rencontrés dans le code HTML se placent les uns après les autres horizontalement puis verticalement, passage à la ligne, suivant leur modèle de boite (bloc, inline...) comme lorsque l'on écrit du texte de gauche à droite et de haut en bas.
Les éléments se placent le plus à gauche et en haut que possible.
Les éléments de type en ligne se placent à la queue leu leu, tant qu'il y a de la place sur la ligne, alors que les éléments de type bloc force un passage à la ligne avant eux et après eux.
Une autre caractéristique est que ces éléments influent directement sur les dimensions de leur conteneur, leur parent direct.
Le positionnement de chaque élément est donc dépendant de l'élément le précédant et influe sur l'élément suivant.
Un élément flottant, outre le fait qu'il n'occupe que la place nécessaire à son contenu, en absence de propriétés CSS définies, se place le plus à gauche ou à droite de son conteneur suivant qu'il est déclaré float:left ou float:right, tout en restant sur sa ligne initiale et n'influe pas sur les dimensions de son conteneur.
Il quitte le flux normal mais partiellement seulement car il conserve une influence sur les éléments qui le suivent contrairement aux éléments en position:absolute par exemple.
Les éléments qui le suivent vont donc ce placer le plus à gauche et en haut possible en tenant compte de l'espace occupé par le "flottant".
Voilà pour faire light !
Toutes les informations sur Visual formatting model