CSS largueur fixe = centrage par rapport au mauvais élément

Fermé
cocodu67... Messages postés 3162 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 20 novembre 2024 - Modifié par cocodu67... le 8/02/2015 à 02:10
codeurh24 Messages postés 760 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 - 8 févr. 2015 à 07:41
Bonsoir

Je suis en train de coder une page et voici un petit aperçu :

http://www.cjoint.com/data3/3BiaKyFdkO6.htm

Ma page est composée d'une grande div jaune à hauteur fixe, à l'intérieur j'ai placé 2 div qui font les 2 colonnes (rouge et bleu). A gauche dans la rouge je peux mettre par exemple des boutons ou un menu et à droite du contenu.

Le problème c'est qu'à droite j'ai besoin de mettre des div de taille fixe. Rien de compliqué dans toutes les pages que j'ai fais sans cette structure à 2 colonnes mais ici le fait d'appliquer une largueur fixe fait que la div se centre par rapport à la page ... et non par rapport à la div bleu dans laquelle elle se trouve.

Voici le code de la div rose correctement centrée :

echo "<center><div style='background-color:pink;z-index:5000;'>ooooo</div></center>";


Et voici le code de la div grise qui est identique à celui de la rose à la seule différence près qu'il y a une largueur fixe :

echo "<center><div style='background-color:gray;z-index:5000;width:400px;'>ooooo</div></center>";


Pour information, voici le code CSS des 3 autres div dont j'ai parlé :

.page {
 padding-left: 15px;
 padding-right: 15px;
 position: relative;
 background-color: yellow;
 height: 1500px;
}

.bandeau_gauche {
 height: 100%;
 background-color: red;
 display: inline-block;
 width: 35%;
 max-width: 200px;
 float: left;
 text-align: center;
}

.bandeau_droite {
 height: 100%;
 background-color: blue;
 display: block;
 vertical-align: middle;
}


C'est la première fois que mettre une largueur fixe m'empêche de centrer une div par rapport à la position de celle qui la contient ...
Pouvez vous m'aider ?

Merci d'avance


Edit : Je suis arrivé à centrer un élément dans la div bleu et centrage par rapport à la div bleu, ça c'est bon.

Le soucis c'est que maintenant mon bleu possède une largueur fixe ... et donc forcément ça ne s'adapte pas à l'écran.

http://www.cjoint.com/data3/3BicsHLYgPB.htm

Voici le code actuel :
.page {
	padding-left: 15px;
	padding-right: 15px;
	position: relative;
	background-color: yellow;
	height: 1500px;
}

.bandeau_gauche {
	height: 100%;
	background-color: red;
	display: inline-block;
	width: 35%;
	max-width: 200px;
	float: left;
	text-align: center;
}

.bandeau_droite {
	height: 100%;
	background-color: blue;
	display: block;
	vertical-align: middle;
	width:1000px;
	position:relative;
	left:200px;
}


Le plus simple serait 100 % de largueur pour le bleu mais alors il prend la même largueur que la page et donc déborde à droite ... il faudrait qu'il ait la largueur de la page - les 200 pixels du rouge ...

1 réponse

codeurh24 Messages postés 760 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 123
8 févr. 2015 à 07:41
Pour centrer une div qui s'adapte a la page dans la colonne bleu, il faut que tout les parents de cette div est une largeur en pourcentage ensuite si ton élément est de type block et que toute les dimensions en pourcentage sont préciser tu peut utiliser les margin auto.

Je vois dans ton css que tu a mélanger float et display: inline-block;
je te conseille de privilégier display: inline-block; et de ne pas utiliser les float dans la majorité des cas.

voici mon exemple:



<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>test centrage</title>
<style>
div{ border: 1px solid #000;vertical-align:top;}
#page, html, body{ width:100%;height:100%;}
#colonne-gauche { display:inline-block;width:39%;height:49%; }
#colonne-droite { display:inline-block;width:59%;height:49%; }
#test { display:block;width:50%;height:10%;margin-left:auto;margin-right:auto; }
</style>

</head>
<body>

<div id="page">
<div id="colonne-gauche">
<ul>
<li><a href="#">test1</a></li>
<li><a href="#">test2</a></li>
<li><a href="#">test3</a></li>
</ul>
</div>
<div id="colonne-droite">
<div id="test"></div>
</div>
</div>

</body>
</html>
0