28173 sujets

CSS et mise en forme, CSS3

Bonjour

J'ai un petit problème concernant la disposition de deux div l'un en dessous de l'autre. J'ai trouvé sur le site qu'il fallait utilisé {clear : both } mais j'y suis pas arrivée (en tout cas ça n'a pas marché).

Donc je viens poser la question, parce qu'en plus je ne comprend pas bien ce qui se passe Smiley ohwell

D'abord voilà une image de ma page au départ :
upload/6194-depart.PNG

Là le code CSS a bien fonctionné (à part le centrage de la div principale, chose que je n'ai pas compris ...).
Voici le code pour cette partie :

<div class='formRecherche'>
			<fieldset>
				<legend>Rechercher un devis</legend> <!--Affichage du thème du fieldset -->
				<!-- Création du formulaire pour la recherche qui renvoit sur cette page même-->
				<form name="recherche" action="recherche2.php" method="POST">
					<div class='champGauche'>
						<label for='numDevis'>Numéro du devis : </label><input type='text' name='numDevis' id='numDevis' value='' /><br />
						<label for='nom'>Nom de l'affaire : </label><input type='text' name='nom' id='nom' value='' /><br />
						<label for='lieu'>Lieu de l'affaire : </label><input type='text' name='lieu' id='lieu' value='' /><br />
						<label for='moa'>Maître d'ouvrage : </label><input type='text' name='moa' id='moa' value='' /><br />
						<label for='moe'>Maître d'oeuvre : </label><input type='text' name='moe' id='moe' value='' /><br />
						<label for='eco'>Economiste : </label><input type='text' name='eco' id='eco' value='' />
					</div>
					<div class='champDroit'>
						S'il s'agit d'une recherche multi-critères, choisissez son type :
						<br />
						<div id='choixOp'>
							<label for='et' /><input type='radio' id='et' name='opRecherche' value='AND' />ET
							<br />
							<label for='ou' /><input type='radio' id='ou' name='opRecherche' value='OR' />OU
							<br />
							<input id='bouton' type='submit' name='validRecherche' value='Rechercher' />
						</div>
					</div>
				</form>
			</fieldset>
		</div>


Et la partie css simplifiée qui va avec (le left 30% de formRecherche, c'était pour le centrer à peu près sur mon écran, parce que si je fait la méthode des marges négatives, ca sort de l'écran! ):

.formRecherche
{
	display : block;
	position : absolute;
	left : 30%;
	width : 600px;
	text-align : center;
}
.champDroit,.champGauche
{
	margin-top : 2px;
	margin-bottom : 3px;
}

.champDroit
{
	float : right;
	margin-right : 10px;
	margin-left : 10px;
}

.champGauche
{
	float : left;
	margin-left : 0px;
}


Ensuite, une fois que la recherche est validée, j'affiche le résultat sous forme d'un tableau (puisqu'il y a pas mal de données) qui est dans une div, mais le problème c'est que le tableau vient se mettre dans ma première div (celle détaillé ci-dessus) :
upload/6194-resultat.PNG

Donc là, je ne fais qu'une div, dans laquelle je met un tableau (remplit en php).
Alors quand j'essaye de mettre une marge en dessous de la première div, il me met l'espace dans le fieldset (pourquoi??) comme ce qu'on voit dans l'image du dessus.
Si je met des sauts de ligne, c'est pareil et si j'ajoute une marge pour le deuxième div, c'est pareil.

Quelqu'un pourrait m'expliquer ?? Et comment résoudre le problème svp? Enfin en tout cas si vous pouviez me donner une tite piste, ça serait bien gentil Smiley smile Smiley biggrin
Merci d'avance!
Modifié par poopsinou (03 May 2006 - 08:57)
Bonjour,

Ton formulaire est contenu dans un div en position absolue. Donc il n'est pas "intégré" dans le flux normal des blocs.

Donc je modifierai la classe .formRecherche

.formRecherche {
	margin-left : 30%; 
	width : 600px;
	text-align : center;
}


En plus, la balise fieldset ne peut être placée que dans un formulaire

<!-- Création du formulaire pour la recherche qui renvoit sur cette page même-->
<form class="formRecherche" name="recherche" action="recherche2.php" method="POST">
    <fieldset>
        <legend>Rechercher un devis</legend> <!--Affichage du thème du fieldset -->
        <div class="champGauche">
            <label for='numDevis'>Numéro du devis : </label><input type='text' name='numDevis' id='numDevis' value='' /><br />
            <label for='nom'>Nom de l'affaire : </label><input type='text' name='nom' id='nom' value='' /><br />
            <label for='lieu'>Lieu de l'affaire : </label><input type='text' name='lieu' id='lieu' value='' /><br />
            <label for='moa'>Maître d'ouvrage : </label><input type='text' name='moa' id='moa' value='' /><br />
            <label for='moe'>Maître d'oeuvre : </label><input type='text' name='moe' id='moe' value='' /><br />
            <label for='eco'>Economiste : </label><input type='text' name='eco' id='eco' value='' />
        </div>
        <div class="champDroit">
            S'il s'agit d'une recherche multi-critères, choisissez son type :
            <br />
            <div id='choixOp'>
                <label for='et' /><input type='radio' id='et' name='opRecherche' value='AND' />ET
                <br />
                <label for='ou' /><input type='radio' id='ou' name='opRecherche' value='OR' />OU
                <br />
                <input id='bouton' type='submit' name='validRecherche' value='Rechercher' />
            </div>
        </div>
    </fieldset>
</form>


J'ai éliminé la balise <div class="formRecherche">
Bon, j'ai résolu le problème du centrage avec les marges négatives ...

Et sinon, sous IE, la résultat de la recherche se met dans la première div, mais sou firefox, le résultat se met tout à droite à cheval sur le premier div (d'ailleurs au passage j'ai perdu les bordures extérieures de mon tableau résultat ...)

upload/6194-resultat.JPG
Alors, si j'ai fait un diplay:block, c'est pour pouvoir centrer le formulaire. C'est une méthode que j'ai trouvé sur ce forum.


.formRecherche
{
	display : block;
	position : absolute;
	left : 50%;
	margin-left : -300px;
	width : 600px;
	text-align : center;
}


Si je fais ce que tu me dis, alors il ne sera plus centré ...
Tu désires que ton formulaire soit centré par rapport à la page?

alors modifié la class formRecherche de la manière suivante:

.formRecherche
{
  width: 600px;
  margin: 0 auto;
}


Pour IE

Modifie le code CSS comme suit
.formContainer {
  width:100%;
  text-align:center;
}


et le code HTML
<div class="formContainer">
<form ..... 
... </form></div>


Et ça fonctionnera aussi sous FireFox
Modifié par jowo (25 Apr 2006 - 14:32)
Par contre, mon résultat se place bien en-dessous maintenant (sous firefox pas de problème, mais sous IE il se place en dessous du fieldset certes, mais le fieldset est aggrandi de la taille de mon tableau résultat en hauteur !!! (et d'ailleur je comprend pas, il réaffiche le titre de mon résultat et dans le fieldset, et en dessous du fieldset Smiley eek )
Bon, j'ai réglé tous les problèmes de centrage grâce aux tuto (y'a un bug sous IE, donc faut rajouter 2 lignes).

Tout est OK sous firefox (sauf que je perds mes bordures externes du tableau ...) :
upload/6194-firefox.JPG

Mais sous IE, je comprned pas trop ce qui se passe Smiley confus (j'ai coupé l'image, mais en fait le fieldset est agrandi de la taille du tableau, et le titre du tableau vient se rajouter une 2° fois dans le fieldset ...) :
upload/6194-IE.JPG

Voilà le code CSS (champDroit = partie de droite du form et champGauche=partie gauche) :

body
{
	background-color:#FEFDCF;
	text-align : center;
}

.formRecherche
{
	width : 600px;
	margin : 0 auto;
	text-align: left;
}

table
{
	border : 1px;
	border-color : #DDDDDD;
	border-spacing : 0px;
	border-collapse : collapse;
	text-align : center;
	margin : 0 auto;
}

th,td
{
	padding : 5px;
}

.champDroit,.champGauche
{
	margin-top : 2px;
	margin-bottom : 3px;
}

.champDroit
{
	float : right;
	width : 250px;
	margin-right : 10px;
	margin-left : 10px;
}

.champGauche
{
	float : left;
	margin-left : 0px;
}

Modifié par poopsinou (26 Apr 2006 - 08:40)
Oups, les bordures perdues sous Firefox, c'est une erreur de ma part (border au lieu de border-width). Je les ai donc retrouvées Smiley smile
Par contre, j'arrive vraiment à rien avec IE Smiley bawling
Modifié par poopsinou (26 Apr 2006 - 13:30)
Personne pour une petite piste svp Smiley bawling ?? lol Smiley biggrin

Comment ça se fait que le fieldset sous IE s'aggrandisse comme ça ? Il Ne fait pas attention à la fin de mon fieldset et au début de mon div suivant?
Modifié par poopsinou (27 Apr 2006 - 11:48)
Wouah la vache lol
Je ne sais pas si je saurai t'aider ce week end mais si je trouve le temps, j'essayerai Smiley cligne
Modifié par Oryo (27 Apr 2006 - 14:01)
Merci beaucoup !!

En fait tout ce que je voudrais c'est qu'on m'explique ce que fait IE (parce que j'ai vraiment pas compris) et une ptite piste pour y résoudre, mais si on m'explique pourquoi il fait ça, j'y verrais peut-être plus clair pour régler mon problème !
Et bien, j'aurais fini par trouver d'où venait mon problème Smiley smile

Je créais mes input radio en leur associant des labels que je définissais comme ça :

<label for='et' /><input type='radio' id='et' name='opRecherche' value='AND' />ET
<br />
<label for='ou' /><input type='radio' id='ou' name='opRecherche' value='OR' />OU
<br />	


Et il n'aimait pas le <label /> comme ça, suffisait donc de mettre à la place : <label></label> et hop ça marche nickel !

J'aurais mis longtemps à trouver mais maintenant je ferais pas 2 fois la même erreur Smiley smile

Merci pour ceux qui ont essayé de m'aider Smiley biggrin
Modifié par poopsinou (03 May 2006 - 08:56)