28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous.
Je m'en veux déjà de poster ce truc, parce que c'est une question déjà abordée 1000 fois, dans divers endroits et dans diverses langues.

Cela fait des heures que je cherche, que j'essaie, des solutions les plus conventionnelles jusqu'aux plus bidouilles, j'ai vraiment tout tenté.

Malgré cela, impossible de faire fonctionner mon design comme je le souhaite sous IE.

Je recherche une compatibilité Firefox et IE pour ce siteweb, mais pas moyen. J'aurai vraiment chipoté avec tout ce que j'ai trouvé: l'overflow, le pied de page en position fixe, les tailles de conteneurs, etc etc. Rien n'y fait.

Voici donc l'url de cette page qui est actuellement en construction: http://zutroy.free.fr/nightshift/site/index.php

Aucun problème sous Firefox donc, mais sous IE, dès que le contenu ne remplit pas la hauteur de la page, mon bloc #all ne s'étend pas jusqu'en bas, rompant impitoyablement mon design.

Voici les éléments essentiels du CSS:
html, body
{
	width: 800px;
	height: 100%;
	margin: auto;
	margin-top: 0px;
	margin-bottom: 0px;
}

#all /* mon bloc "global" contenant tout le reste */
{
	width: 800px;
	min-height: 100%;
	margin: 0;
	padding: 10px 0 0 0;
	border: 0;
	background-color: white;
}

#menu
{
   float: left; 
}

#menu .content
{
	width: 150px;
	margin: 0 0 0 30px; /* 30px à gauche */
	padding: 0;
}

#corps
{
	float: right;
}

#corps .content
{
	width: 570px;
	margin: 0 30px 0 0; /* 30px à droite */
	padding: 0;
}

#footer
{
	width: 800px;
	height: 0px;
	margin: 0;
	padding: 0;
	clear: both;
}


Et le code html est tout ce qu'il y a de plus classique évidemment:
<body>

<div id="all">

<div id="header"></div>

<div id="notice"></div>

<div id="menu">
	<div class="content">
		<div class="top"></div>
		<?
		include("menu.php");
		?>
	</div>
</div>

<div id="corps">
	<div class="content">
		<? ...; include($page); ...; ?>
	</div>
</div>

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

</div> <!-- Fin du cadre du site -->

</body>


Voilà. Pitié, si quelqu'un arrive à mettre en application l'une des solutions qui m'on faites défaut, qu'il me le fasse savoir.
Je suis persuadé que ça doit être un truc complètement bidon à coté duquel je suis passé, mais vraiment je ne trouve pas.
Modifié par mOrbide (20 May 2007 - 15:43)
Bonjour,

Quelques petites boulettes Smiley lol
Eviter de dimensionner et de centrer html et ... puis un bout de code sera plus parlant pour une idée de résolution de ton problème.
		<style type"text/css">
html, body
{
	position: relative;
	height: 100%;
	margin-top: 0px;
	margin-bottom: 0px;
	
}
 body{
 	background-color: #323232;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 11px;
	color: #323232; /* Texte de la page */
}

/*////////////////////////////////////////////////////
Balises portant sur les LETTRAGES (titres, liens, etc)
///////////////////////////////////////////////////**/
q
{
	font-style: italic;
}

h2
{
	padding: 5px;
	margin: 0;
	/*border: 1px white solid;*/
	border-bottom: 1px #323232 dashed;
	display: block;
	font-size: 11px;
}

a
{
	text-decoration: none;
	color: #406090;
}

a:hover
{
	text-decoration: underline;
	color: #000000;
}

sup
{
	font-size: 9px;
	color: red;
}

ul
{
	list-style-type: square;
}

/*//////////////////////////////////
Balises portants sur les FORMULAIRES
/////////////////////////////////**/

input, textarea, select
{
	padding: 0px;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 11px;
	background-color: #FFFFFF ;
	border: 1px #323232 dashed;
}

/*/////
EN-TÊTE
////**/

#header
{

	height: 150px;
	margin-top: 10px;

	background-image: url("header.jpg");
	background-repeat: no-repeat;
}

#notice
{
	height: 20px;
	margin: 0;
	padding: 0;
	background-image: url("notice.jpg");
	background-repeat: no-repeat;
}

/*//////////////////////
ZONE DE TEXTE PRINCIPALE
/////////////////////**/

#all
{	overflow: hidden;
	width: 800px;
	margin: 0 auto 0;
	min-height: 100%;
	background-color: white;
	background-image: url("bg_main.jpg");
	background-repeat: y-repeat;
}

/*///////////
MENU VERTICAL
//////////**/

#menu
{
   float: left; /* Alignement à gauche */
}

#menu .content
{
	width: 150px;
	margin: 0 0 0 30px; /* 30px à gauche */
	padding: 0;
}

#menu .top
{
	width: 150px;
	height: 30px;
	margin: 0;
	background-image: url("header_menu.jpg");
	background-repeat: no-repeat;
}

#menu p
{
	margin: 0 0 15px 0;
	padding: 0;
	border:0;
}

#menu h1
{
	margin: 0 0 4px 0;
	padding: 0;
	display: block;
	color: #323232;
	font-size: 11px;
	text-align: center;
	background-color: #D7D7D7;
}

#menu a
{
	margin: 2px 0 2px 0;
	padding: 0;
	display: block;
	color: #323232;
	text-align: center;
	text-decoration: none;
	background-color: #D7D7D7;
}

#menu a:hover
{
	margin: 2px 0 2px 0;
	padding: 0;
	display: block;
	color: #323232;
	text-align: center;
	color: black;
	text-decoration: none;
	background-color: #FFFFFF;
}

#corps
{
	float: right;
}

#corps .content
{
	width: 570px;
	margin: 0 30px 0 0; /* 30px à droite */
	padding: 0;
}

#corps h1
{
	height: 30px;
	margin: 0px;
	padding: 0 0 0 75px; /* 75px à gauche */
	font-size: 25px;
	background-image: url("header_corps.jpg");
	background-repeat: no-repeat;
}

#corps p
{
	margin: 0;
	padding: 5px;
	border: 0;
}

#footer
{
	height: 10px;
	background: #fff;
	margin: 0;
	padding: 0;
	clear: both;
}

.x-small
{
font-size: 7px;
}
.small
{
font-size: 11px;
}
.medium
{
font-size: 13px;
}
.large
{
font-size: 15px;
}
.x-large
{
font-size: 20px;
}

		</style>
 
    </head>
    
  <body>
<div id="all">
	<div id="header">
	</div>

	<div id="notice">
	</div>

	<div id="menu">
		<div class="content">
			<div class="top">
			</div>
			<div class="elmt_menu">
				<h1>Team</h1>
				<p>
					<a href="index.php?page=news">News</a>
					<a href="index.php?page=whatsns">What's n$</a>
					<a href="index.php?page=crew">Crew</a>
					<a href="index.php?page=results">Results</a>
					<a href="index.php?page=defyus">Defy us</a>
					<a href="index.php?page=sponsoring">Sponsoring</a>
				</p>
			</div>

			<div class="elmt_menu">
				<h1>Community</h1>
				<p>
					<a href="../../Forum/">Forum</a>
					<a href="index.php?page=galeries">Galeries</a>
					<a href="index.php?page=wall">Wall</a>
					<a href="index.php?page=links">Links</a>
					<a href="index.php?page=tutoriels">Tutoriels</a>
					<span class="helpnico"><a href="index.php?page=helpnico" title="http://helpnico.ns-crew.net">Help Nico!</a></span>
				</p>
			</div>

			<div class="elmt_menu">
				<h1>WebSite</h1>
				<p>
					<a href="index.php?page=lesite">Le site</a>
					<a href="index.php?page=guestbook">Guest book</a>
					<a href="index.php?page=partenariat">Partenariat</a>
				</p>
			</div>

			<div class="elmt_menu">
				<h1>Insiders</h1>
				<p>
					<a href="index.php?page=sessions&login">Log In</a>
				</p>
			</div>	
		</div>
	</div>

	<div id="corps">
		<div class="content">
			<h1>Home</h1>
			<h2>Ouelkom'</h2>
			<p>
				Bienvenue sur le site de la [n]ight[$]hift.<br/>
				Team.be Cs 1.6 low-mid<br/>
				Depuis plusieurs années maintenant, les gentis gays alcoolos de la n$ sévissent
				(ou pas) un peu partout sur le net, mais aussi (et essentiellement en fait) en
				guindaille. Le joueur n$ classique peut être reconnu à son fair play, son absence
				de skill, et la chope qu'il a en permanence vissée au creux de la main.
			</p>

			<h2>So what... ?</h2>
			<p>
				Ouais, donc.  Sur ce site vous trouverez les nouvelles de l'équipe, nos résultats
				de matchs, une bonne base de liens, les évènements à venir pour l'équipe (le divin
				enfant, la bush de Noël, tout ça) et les divagations de nos bien aimés fragors (viet
				trinité et autres alcoolos notoires).<br/>
				<br/>
				Hf ! [smile]
			</p>

			<h2>Note sur les browsers</h2>
			<p>
				Jusqu'à cette version, le site a toujours été programmé

				sans tenir aucun compte des utilisateurs d'Internet Explorer. Les horribles bugs de
				double margin/padding dans les floats étaient donc bien présents, et
				on s'en tappait pas mal.<br/>
				Cette version se veut un peu plus "tolérante" vis à vis des pauvres
				utilisateurs d'IE; elle devrait donc se cadrer impeccablement et ne pas contenir
				de décalages anormaux partout. Si malgré tout vous trouvez des bugs
				de CSS, merci de contacter le webmaster au plus vite.
			</p>
		</div>	
	</div>

</div>


Ps: indente ton code se sera plus facile pour t'y retrouver et pour ie6 un petit commentaire conditionnel pour le min-height. Et aussi tes menus utilise plus tôt une liste, voir tutos

Bon courage
ghost a écrit :
Bonjour,

Quelques petites boulettes Smiley lol
Eviter de dimensionner et de centrer html

Je m'en suis rendu compte en postant mon code; mais merci de l'avoir relevé Smiley cligne

ghost a écrit :
et ... puis un bout de code sera plus parlant pour une idée de résolution de ton problème.
html, body
{
	position: relative;
	height: 100%;
	margin-top: 0px;
	margin-bottom: 0px;
	
}
 body{
 	background-color: #323232;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 11px;
	color: #323232; /* Texte de la page */
}

Je comprends l'intérêt de séparer les deux, mais quel est l'intérêt de donner à html et body une position relative ?


ghost a écrit :
#all
{	overflow: hidden;
	width: 800px;
	margin: 0 auto 0;
	min-height: 100%;
	background-color: white;
	background-image: url("bg_main.jpg");
	background-repeat: y-repeat;
}

J'ai lu beaucoup de doc' sur l'overflow, dans ma longue quête de height 100%, mais je ne comprends pas ce qu'il fait en pratique.

Autre chose concernant la syntaxe du margin: 0 auto 0;: qu'est-ce que cela signifie exactement ? 0 gauche, 0 droite et auto pour haut et bas ?

ghost a écrit :
Ps: indente ton code se sera plus facile pour t'y retrouver

Heu je le fais toujours Smiley cligne Ca m'étonne que tu me le fasses remarquer.

ghost a écrit :
et pour ie6 un petit commentaire conditionnel pour le min-height.

Avec une feuille de style alternative alors ? Mais de toutes façons je n'arrive pas du tout à générer l'effet que je veux sous IE, alors que mettre dans mon css consacré à IE 6 ?

En tous cas, un grand merci pour ton aide, j'espère que tu pourras encore m'éclairer un peu de tes lumières Smiley cligne
Modifié par mOrbide (18 May 2007 - 02:06)
Bonjour.

La propriété "overflow" sert à définir le comportement d'un élément quand son contenu dépasse sa taille maximum. Ainsi en "hidden" le contenu qui dépasse est caché, en "visible" ( valeur par défaut ) ce qui dépasse est visible, en "auto" l'élément créera une ou deux ( vertical et horizontal ) barres de défilement et enfin en "scroll" les barres de défilement sont toujours visibles.

Pour plus d'informations voir la spécification CSS 2.1 de la propriété "overflow".
Modifié par CNeo (18 May 2007 - 09:31)
Bonjour,

Pourquoi le body en relative, bonne question surement un copier coller hasardeux, hormis cela sauf si tu as un position: absolute qui suit aucun intérêt Smiley confused

Pour l'overflow: hidden (d'ailleurs overflow: auto qui est la valeur par défaut fonctionne aussi !!) C'est la seule manière (empirique) que j'ai trouvé pour que le bloc principal rentre juste dans les 100% sous FF (IE n'en à pas besoin). Un bug ou un succession de code le provocant, je ne sais mais il faudrait vraiment revoir toute la mise en page pour comprendre.

margin: 0 auto 0 = margin-top: 0, right & left: auto, bottom: 0

Non pas de css particulière pour IE6, juste un commentaire conditionnel du genre
<!--[if lt IE 7]>
<style type="text/css">
#all {
    height: 100%;
}
</style>
<![endif]-->

A placer après l'appel de ta css (avant </head>) pour utiliser un bug d'ie6 qui n'interprete pas le min-height mais qui interprete le height: 100% comme le min-height: 100% ... Smiley biggol
ghost a écrit :
d'ailleurs overflow: auto qui est la valeur par défaut fonctionne aussi !!

La valeur par défaut pour la propriété CSS overflow est "visible", pas "auto".
Raphael a écrit :

Mieux vaut se fier à des références plus "officielles" :
http://www.yoyodesign.org/doc/w3c/css2/visufx.html#propdef-overflow

Cela évite ce genre de surprises Smiley cligne


Oui. cela dit, http://wiki.media-box.net est un... wiki Smiley cligne

Dans ce genre de cas, après être allé regarder la spec, enregistrez-vous, éditez la page, et corrigez l'erreur (30 sec chrono pour celle-ci)...

<edit>Non, inutile de demander, je ne me lâcherai pas dans une opération de corrections massive de media-box, pas le temps Smiley lol </>

<re-edit>En revanche, je suis sûr qu'il ne manque pas d'alsacréationn... istes ? ...autes ? ...phyles ? ...choses, qui sont prêt à s'atteler à la tâche, à l'occasion d'un petit appel public qui serait lancé par Raphaël Smiley cligne </>
Modifié par Laurent Denis (18 May 2007 - 17:01)
Administrateur
Ah ben trop tard Smiley biggol
a écrit :
Dernière modification: 18/05/2007 16:46 par laurent_denis


Laurent Denis a écrit :

<re-edit>En revanche, je suis sûr qu'il ne manque pas d'alsacréationn... istes ? ...autes ? ...phyles ? ...choses, qui sont prêt à s'atteler à la tâche, à l'occasion d'un petit appel public qui serait lancé par Raphaël Smiley cligne </>

Un appel pour Media-box uniquement ? Pour tous les autres wikis de webmaster ? Smiley rolleyes
Rien que pour Alsa, y'aurait déjà beaucoup de boulot Smiley murf
Modifié par Raphael (18 May 2007 - 17:04)
Disons Media-box pour se faire les dents, dans un premier temps.

Après, ma foi... il y a de quoi faire, si ça peut devenir un jeu amusant (celui qui peut attester du plus grand nombre de corrections gagne un kiwi, etc) Smiley ravi
@Laurent Denis

Désolé je viens de remarquer mon plagiat d'avatar, j'espère que vous n'en prendrez pas ombrage car personnellement je me vois mieux en shadock que vous !! Smiley biggol Ce serait plus logique que vous soyez gibbi non?
Raphael a écrit :
Un appel pour Media-box uniquement ? Pour tous les autres wikis de webmaster ? Smiley rolleyes

Media-box.net est un des plus régulièrement cité sur le forum, et l'un des plus sympa à ma connaissance. Je l'ai pas mal utilisé moi-même, et le fais encore à l'occasion. Ça fait plusieurs bonnes raisons pour contribuer à celui-là en particulier.

De plus : focaliser les efforts sur un wiki en particulier permet d'utiliser ce wiki comme ressource externe. On ne va pas tout reproduire sur Alsacréations, non plus.

Donc moi je vote pour l'idée de Laurent.
Merci à tous pour votre aide. J'ai mieux compris l'intérêt de certains styles, nottament l'overflow.

Finalement j'ai opté pour un commentaire conditionnel menant vers deux Css différents.
Ainsi, sous FF, la page (toujours http://zutroy.free.fr/nightshift/site/) sera telle que je le voulais à l'origine, et sous IE, j'ai créé un petit pied de page qui termine "proprement" le design.
Mais à la lecture du post de Ghost, je me dis que sa solution est probablement plus propre encore.
ghost a écrit :
Non pas de css particulière pour IE6, juste un commentaire conditionnel du genre
<!--[if lt IE 7]>
<style type="text/css">
#all {
    height: 100%;
}
</style>
<![endif]-->

J'hésite donc.

Quoi qu'il en soit, merci. Mon Css est plus clair et moins chargé Smiley smile