28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

En ce moment, je suis en train de refaire un site existant. Il était construit en tableaux et fonctionnait bien sous IE6 mais pas terrible sur FF. J'essaie donc de transformer tout ça en XHTML et CSS et pour une novice c'est un exercice très intéressant.

J'ai résolu quelques problèmes (grâce aux tutoriels, la FAQ et la recherche, merci AlsacreationS) ce qui m'a appris beaucoup de choses mais là je bloque.

J'ai un espace entre mon div gauche en float left et la div centre (sous IE bien sûr). J'ai essayé les solutions proposées concernant le fameux décalage de 3 pixels sous IE mais soit je m'y prend comme une idiote soit y'a un autre problème.

Voici le code:

<body>
<a name="hautpage"></a>

<div id="gauche">
<a id="logo" href="http://www.touchatou-creche.com/index.html"><img src="Test/images/interface/LogoMontagne.gif" alt="" title="" /></a><ul id="menu">
<li><a title="Fonctionnement" accesskey="" href="http://www.touchatou-creche.com/fonctionnement.html">Fonctionnement</a></li>
<li><a href="">La vie à Touchatou</a></li>
<li><a href=""><em>Modalités d'inscription</em></a></li>
<li><a href=""><em>Suggestions Touchatou</em></a></li>
<li><a href="">Actualités</a></li>
</ul>
<p id="mailto"><a href="mailto:touchatou74@free.fr">"Contactez-nous"</a></p>
<div id="coordonnees">
<p>Adresse:</p>
<p></p>
<p></p>
<p>E.mail:<br /><a href="mailto:touchatou74@free.fr"></a></p>
</div>			
</div>

<div id="centre">
<a id="titre" href="http://www.touchatou-creche.com/index.html"><img src="Test/images/interface/titretouchatou.gif" alt="" /></a>
<div id="haut"><a href="#hautpage"><img src="Test/images/interface/retourhautpage.jpg" alt="éveil et socialisation" /></a></div>
<ul id="menu_bas">
<li><a href="">Fonctionnement</a></li>
<li><a href="">La vie à Touchatou</a></li>
<li><a href="">Modalités d'inscription</a></li>
<li><a href="">Suggestions Touchatou</a></li>
<li><a href="">Actualités</a></li>
</ul>

</div>
</body>

et le CSS:

<style type="text/css">
body {
background: #FCF2D8 url(Test/images/interface/imagearriereplanbody.gif) repeat-y right top;
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
color: #000000;
}
#gauche {
float: left;
width: 149px;
text-align: center;
background: #F4FFEA;
}
#logo {
display: block;
margin-top: 3px;
margin-bottom: -15px;
}
#logo img {
border: none;
}
ul#menu {
margin: 15px 0 0 0;
padding: 0;
list-style-type: none;
}
#menu a {
display: block;
width: 149px;
line-height: 32px;
text-decoration: none;
text-align: center;
text-transform: uppercase;
text-indent: 25px;
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: bold;
color: #000;
background: url(Test/images/menu/menu.gif) no-repeat 0 0;
}
#menu a:hover {
background: url(Test/images/menu/menu_uni.gif) no-repeat 0 0;
color: #FF9933;
}
#menu em {
line-height: 14px;
font-style: normal
}
#mailto {
margin: 0 0 0 0;
padding: 5px 0 10px 0;
width: 149px;
height: 20px;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
background-color: #D8FAD8;
}
#coordonnees {
margin-top: -5px;
padding: 0 0 110px 10px;
background-color: #D8FAD8;
}
#coordonnees p {
margin: 5px;
text-align: left;
}

#centre {
margin: 0 0 0 149px;
width: 621px;
text-align: center;
background-color: #F4FFEA;
}
#titre {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
}
#titre img {
border: none;
}
#haut {
margin: 385px 0 20px 0;
}
#haut img {
border: none;
}
ul#menu_bas {
margin: 0;
padding: 5px 0;
list-style-type: none;
background-color: #e7e7e5;
}
#menu_bas li {
display: inline;
margin: 0 9px;
}
#menu_bas a {
color: #000;
}
#menu_bas a:hover {
color: #F00;
}
#menu_bas a:visited {
color: #FF9933;
}
</style>

Désolée pour la longueur, j'ai simplifié au max.

Si j'applique une marge négative sur la div gauche, ça réduit l'espace mais ne règle pas complètement le problème et en plus ça me cache une partie de l'image du haut.

Merci d'avance et bonne journée à vous tous.
Modifié par Chocaccro (25 Apr 2006 - 17:21)
Pour essayer d'être plus claire, je vous envoie des copies d'écran.

Sur FF, nickel, le menu du bas est collé à la div de gauche.
upload/5047-FF.gif

Sur IE, espace entre les deux Smiley angry .
upload/5047-IE.gif

Toujours sur IE mais avec une marge négative sur la div gauche, ça se rapproche mais ça me rogne l'image du haut Smiley angry .
upload/5047-IEmargeneg.gif

Et, si jamais, le lien vers la page de test:
http://bochet.jolibois.free.fr/Test/Test.html[/url]

Merci pour votre aide.
salut,


si ton bloc #centre tu le place en flottant (float : left) et que tu lui met toutes ses marges à 0 ca devrait marché.

En tout cas chez moi ca à l'air de fonctionné Smiley biggrin
Merci killgors, en effet ça marche... enfin j'ai du faire d'autres modifications dont une retouche de l'image du haut mais maintenant ça marche.

Je prépare un message expliquant les autres changements puis je marquerai en résolu.
Modifié par Chocaccro (02 May 2006 - 22:48)
Voici les changements effectués.
En fait, j'ai du faire plein de tests différents Smiley langue , je n'ai pas d'explications pour tout (surtout que je débute) mais ça marche, youpie ! Smiley ravi

#centre {
float: left; /*ajouté*/
margin: 0 0 0 149px; /*supprimé*/
}
#gauche {
width: 149px; /*supprimé*/
text-align: center; /*supprimé*/
margin-bottom: -29px; /*ajouté*/
}
#logo img {
width: 149px; /*ajouté*/
}
#mailto {
text-align: center; /*ajouté*/
}
#coordonnees {
float: left; /*ajouté*/
width: 139px; /*ajouté*/
padding: 0 0 110px 10px; /*modifié*/
margin-top: -5px; /*supprimé*/
}
#coordonnees p {
width: 130px;  /*ajouté*/
}


En plus, j'ai modifié un peu l'image de la montagne du haut histoire que ça fasse raccord.
Modifié par Chocaccro (26 May 2006 - 14:23)
Bonjour à tous,

Oui, je sais, j'avais marqué ce sujet comme résolu mais, suite à d'autres problèmes, j'ai repris tout de zéro et j'ai trouvé une autre solution tirée du livre de Jeffrey Zeldman "Design Web: utiliser les standards". Comme il l'écrit, j'ai eu recours à un
a écrit :
positionnement absolu reproduisant les fonctionnalités de float
.

Il suffit de changer le placement du bloc #gauche:
#gauche {
position:absolute;
left:0
}

au lieu de
#gauche {
float:left
}

Voila, ça a l'air de bien fonctionner sur FF et IE6.0.
J'ai exactement le même problème.
Le fait est que je ne peux pas mettre mon menu en position absolue.
Mon body a un margin de 1% et mon conteneur une bordure de 1px.
Il faudrait donc que je fasse un truc du genre :

dd#menu {
position:absolute;
left: 1% + 1px;
}


À cause des bordures que j'utilise, ce pixel est bien important.
Une solution ?

Le code en entier pour ceux que ça intéresse...

* {
	padding: 0;
	margin: 0;
}

body {
	font-size: 0.8em;
	font-family: Arial, sans-serif;
	margin: 1%;
}

div#body {
	border-width: 1px;
	border-style: solid;
}

h1 {
	border-bottom-width: 1px;
	border-bottom-style: solid;
	height: 100px;
}

dl#menu {
	[#red]float: left;[/#]
	width: 150px;
	border-right-width: 1px;
	border-right-style: solid;
}

dl#menu dd {
	padding-top: 1px;
	padding-bottom: 1px;
	padding-left: 5px;
	padding-right: 5px;
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

dl#menu dt {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

dl#menu dt#bottom {
	border: 0;
	padding: 0.8em;
}

p {
	margin-left: 150px;
	line-height: 150%;
	text-align: justify;
	text-indent: 1em;
	border-left-width: 1px;
	border-left-style: solid;
	padding: 1em;
}

div#footer {
	clear: both;
	height: 100px;
	border-top-width: 1px;
	border-top-style: solid;
}


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
	<head>
		<title>Titre du site</title>
		<link rel="stylesheet" type="text/css" href="template/screen.css" media="screen" />
	</head>

	<body>

		<div id="body">
		
			<h1>Titre du site</h1>

			<dl id="menu">
				<dt>Titre</dt>
				<dd><a href="#">Lien 1</a></dd>
				<dd><a href="#">Lien 2</a></dd>
				<dt>Titre</dt>
				<dd><a href="#">Lien 1</a></dd>
				<dd><a href="#">Lien 2</a></dd>
				<dt id="bottom"></dt>
			</dl>

			<p id="content">
				Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 

				Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
			</p>

			<div id="footer">
				
			</div>

		</div>

	</body>
</html>


Avant qu'on me pose la question...
Le but est qu'il y est toujours une bordure entre le menu et le contenu.
Si le menu est plus long que le contenu, la bordure doit être là, mais si c'est le contraire, elle doit également être là. Les deux bordures sont donc superposées, de sorte qu'on ne voit que la plus longue.

J'ai par ailleurs essayé ceci :
http://www.positioniseverything.net/explorer/threepxtest.html

Le problème, c'est que le 3px de trop se retrouve maintenant entre les deux bordures qui étaient superposées.

Je ne sais donc plus trop où regarder...
Y a-t-il un autre moyen que de superposer mes deux bordures pour m'assurer que la bordure prendra toute la hauteur des deux blocs ?
Ou un autre hack pour supprimer ce foutu 3px ?

Merci d'avance,
D@n!eL
Modifié par D@n!eL_ (02 May 2006 - 23:48)