28173 sujets

CSS et mise en forme, CSS3

Pages :
Bonjour à tous,

Pour une fois, c'est sous Firefox que ça ne colle pas (en général c'est plutôt l'inverse qui m'arrive).

Il s'agit donc d'un problème de longueur des colonnes que je désirerais voir étendues à 100% verticalement.

J'ai pensé tout d'abord facilité : le truc de l'image de fond verticale à 1px qui se répète dans le <body>, seulement, il m'est impossible de l'utiliser puisque j'ai une mise en page centrée, ainsi qu'une illustration de fond (fixed).

J'ai essayé le box model hack, mais apparemment IE s'en passe très bien, tout colle sans celui-ci (ou avec, en fait on dirait que ça ne change strictement rien).

Donc en résumé, IE m'allonge mes colonnes jusqu'au bas de page, mais pas Firefox.

Voici un aperçu de mon code CSS.

*, p, body, ul, li, img, form, input, hr { margin: 0; padding: 0; }
html, body { height: 100%; }

body { background: #255317 url(images/nelson01.gif) 30px 95% no-repeat fixed; }

#container {
	position: relative;
	margin: 0 auto 0 auto;
	width: 752px;
	background: url(images/container_fd.gif) repeat-y;
	min-height: 100%;
	height: 100%;
}

hr { clear: both; visibility: hidden; }

/* ======================================== Text */

#content {
	color: #4D4033;
	float: left;
	width: 364px; }

.banner { margin: 0 0 22px 0; }

/* ==== Blog */

.post_header, #content p {
	padding: 0 16px 12px 16px;
}

.post_content {
	clear: both;
	padding: 12px 0 0 0;
	margin: 0 3px 3px 3px;
	background: #FFFFFF url(images/barre_brune.gif) bottom repeat-x;
}

/* ======================================== Yellow Menu */

#menu {
	float: left;
	width: 189px;
	padding: 263px 0 0 0;
	background: url(images/affiche.gif) no-repeat;
}

#menu a {
	display: block;
	margin: 0 3px 0 0;
	padding: 0 8px 0 8px;
	height: 28px;
	line-height: 28px;
	background: url(images/barre_brune.gif) bottom repeat-x;
	text-decoration: none;
	color: #4D4033; }
#menu a:hover { background-color: #FFF781; }

/* ======================================== Brown Menu Top */

#side {
	float: right;
	width: 199px;
	margin: 36px 0 0 0;
	color: #FFF12D;
	background: url(images/barre_jaune.gif) top repeat-x;
}

#side a {
	color: #FF9C3E;
	text-decoration: none; }
#side a:hover { color: #FFF12D; }



/* ======================================== Brown Menu Bottom */

#side_menu {
	position: absolute;
	width: 199px;
	top: 290px;
	padding: 6px 0 0 0;
	background: url(images/barre_jaune.gif) top repeat-x;
	list-style-type: none;
}

#side_menu li { margin: 0 0 0 6px; }


ainsi que de mon code HTML

<body>
<div id="container">

  <div id="content">
    <img src="images/banner/banner.gif" class="banner" alt="à la une" />
    <hr />

    <div class="post_header">
      <div class="post_title">
        <h2><a href="#">L'affiche --- </a></h2>
      </div>
    </div>

    <div class="post_content">
      <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. </p>
      <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor <a href="#">sit amet</a>, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam <a href="#">voluptua</a>. </p>
      <img src="images/photos/phototest.jpg" alt="phototest" />
      <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
      <p><a href="3">Continuer la lecture </a></p>
    </div>
    <hr />

    <div class="post_header">
      <div class="post_title">
        <h2><a href="#">L'affiche --- </a><br />
      </div>
    </div>

    <div class="post_content">
      <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. </p>
      <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor <a href="#">sit amet</a>, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam <a href="#">voluptua</a>. </p>
      <img src="images/photos/phototest.jpg" alt="phototest" />
      <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
      <p><a href="3">Continuer la lecture </a></p>
    </div>
    <hr />
  </div>

  <div id="menu">
    <ul>
      <li><a href="#">---</a></li>
    </ul>
  </div>

  <div id="side">
    <div class="side_bar">
      <p><a href="#">Contactez-nous</a></p>
    </div>
    <ul id="side_menu">
      <li><a href="#">sjkdhjhsda</a></li>
      <li><a href="#">asjdjashdahsd</a></li>
      <li><a href="3">skdjkaljsdjk</a></li>
    </ul>
  </div>

</div>
</body>


Je travaille à faire une maquette sans les visuels (je ne peux pas les montrer) pour que ce soit plus évident à comprendre. Je vais la poster sous peu.

Merci d'avance pour toute aide / suggestion !

PS. Les xxx c'est juste pour masquer quelques trucs Smiley lol
Modifié par Corinne (06 Jun 2006 - 22:23)
Hello,

as-tu une version en ligne de cette page ? ou mieux, une copie simplifiée en ligne aussi.
Car si cela concerne les colonnes et leurs images de fond, il n'est pas très pratique pour nous de récupérer ton code, creer des images de background, etc...

merci Smiley cligne
Salut et merci,

Ben justement, je ne peux pas mettre en place l'astuce des colonnes factices, à cause de ma mise en page centrée Smiley decu

Ce qui est étrange c'est que j'ai :
- mon #container qui contient mes trois colonnes
- mon fond est appliqué dans ce #container
Si l'une des trois colonnes descend, le #container logiquement s'allonge aussi, et donc l'arrière-plan devrait suivre :s
Mais ce n'est pas le cas...
Modifié par Corinne (06 Jun 2006 - 15:42)
Avec ça (dans le conteneur) je n'ai plus le scroll du navigateur et donc mon contenu disparaît au-delà de la barre de charement :s
Et dans le contenu, ben ça change apparemment rien.
Bonjour,

Les éléments contenus dans ton container sont flottant, ce qui les fait sortir du flux. Il faudrait un élément comportant la propriété CSS clear pour permettre à container de s'adapter au contenu, par exemple :
<hr style="clear:both;" />

Sauf erreur de ma part, tu n'as pas ce genre d'élément et donc les navigateurs respecteux ne tiennent pas compte du contenu pour dimensionner le conteneur.
Fais également attention aux hauteurs que tu donneras à container Smiley cligne
Modifié par Jihel (06 Jun 2006 - 16:44)
Bonjour Jihel et merci !

J'avais défini un <hr /> au préalable pour d'autres éléments flottants de ma maquette :
[code]hr { clear: both; visibility: hidden; }

Cependant, je n'avais pas pensé à l'utiliser pour ce problème.
C'est donc chose faite, il y a désormais un <hr /> juste avant la fermeture de mon container... mais ça ne semble encore rien changer Smiley decu
Modifié par Corinne (06 Jun 2006 - 16:51)
Ca doit être à cause de ta hauteur :

#container {
	position: relative;
	margin: 0 auto 0 auto;
	width: 752px;
	background: url(images/container_fd.gif) repeat-y;
	[b]min-height: 100%;
	height: 100%;[/b]
}

Quand je supprime ces deux lignes, ca marche (ou au pire supprime juste height, ca marche aussi...).
PS : testé juste sous FF
Modifié par Jihel (06 Jun 2006 - 17:20)
Tu as donné une hauteur de 100% à ton conteneur. Firefox est gentil, il respecte les standards ainsi que ce que tu lui demande, et donc il fige ça à 100% de l'écran. De l'écran, hein, pas de la page !

Tu veux que le bloc en question puisse s'allonger ? Ben il faudrait lui dire, au lieu de lui dire le contraire Smiley lol

Sérieusement : la propriété height fige la hauteur, sauf avec IE qui l'implémente mal et lui donne le comportement d'un min-height. Il te faut donc un min-height pour tous les navigateurs (IE 6 et inférieur l'ignoreront), et un height pour IE6 et rien que pour lui (ou peut-être aussi pour IE5 si tu veux jouer la arriver à une compatibilité avec les vieilles versions). La meilleure solution : les commentaires conditionnels.
Si je supprime height, avec un texte d'une longueur considérable, ça fonctionne sous les deux navigateurs. Cependant, si j'ai des pages avec très peu de texte (pas de scroll) sous IE, les blocs ne s'étendent plus jusqu'au bas de page. Et si je supprime min-height... bah c'est pareil Smiley decu
Hello mpop et merci,

Et bien j'ai là un min-height de 100% et un height de 100%.
Je devrais donc utiliser le height 100% dans un box model hack ?
Les commentaires conditionnels, c'est justement ce genre de hack ?

  min-height: 100%;
  voice-family: "\"}\"";
  voice-family: inherit;
  height: 100%;


C'est correct ? Car sela semble en effet marcher !
Modifié par Corinne (06 Jun 2006 - 17:33)
Si tu ne veux pas utiliser un CSS conditionnel pour IE, tu peux mettre

  min-height: 100%;
  _height: 100%;


A+
Corinne a écrit :
Les commentaires conditionnels, c'est justement ce genre de hack ?

Non, du tout.

Les commentaires conditionnels ne sont pas des hacks, car ils n'exploitent pas un bug mais un comportement normal d'IE. De plus, ils sont ignorés (comme de juste) par tous les autres navigateurs, qui ne voient que des commentaires HTML simples) :
http://www.blog-and-blues.org/articles/Les_syntaxes_de_commentaires_conditionnels_pour_IE_Windows

<!--[if lte IE6]>
   ..ici, code HTML réservé à IE6 et inférieur...
<![endif]-->

On peut mettre un lien vers une feuille de style avec tous les correctifs nécessaires pour une mise en page avec IE, par exemple…
Hello gege, ton truc marche, merci beaucoup !
Sauriez-vous me dire comment agit le _ ? Je n'avais jamais vu ça auparavant dans une feuille de style (j'aime bien utiliser des trucs qui marchent mais encore plus les comprendre).

Merci pour l'explication mpop, je n'avais aussi jamais entendu parler de ces commentaires conditionnels ! Je bookmarke Smiley cligne
Et encore un super bug de IE ( pour des raison qui me sont inconnu ) il ne voit pas le underscore donc il interprète la commande comme si rien n’étais devant ça marche aussi sous IE 7(beta) Smiley eek

Mais mpop a raison les commentaires conditionnels c'est mieux Smiley cligne

A+
Dans le sens où je n'ai que cette minuscule portion de code qui diffère entre IE et les autres, je pense que je vais exploiter le bug plutôt que de créer deux feuilles de style.

Mais je sais désormais que pour des différences plus amples il y a ces commentaires à disposition.

Encore mille mercis à tous !
Pages :