28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,
Cela fait maintenant plusieurs jours que je tourne en rond sur ce problème et que je ne m'en sort pas ! J'en viens à me demander si ce que je veux faire est possible.
J'ai un site web basé sur Drupal (ou autre CMS d'ailleurs) et je veux faire une interface sans tableau et compatible tous navigateurs depuis IE6 (sans trop de javascript si possible) Smiley cligne

En gros 3 colonnes :
Gauche : pour les menus et logos
Centre : Pour le texte principal
Droite : pour des boites spécifiques (La colonne de droite ne doit pas apparaître si il n'y a pas de boites dedans)
A part la colonne de droite, il doit y avoir des bordures.
Et le site doiit être centré sur la page.
J'arrive presque à faire ce site mais à chaque fois, j'ai des problèmes soit de bordure (entre colonne gauche et centre), soit avec IE 6 (ou 7).
C'est pour ça que je me tourne vers vous pour voir si qq'un peut m'aider.
En image le site que je veux avoir (chaque cadre correspond à un div à priori)
upload/16767-siteWeb.png
Modifié par dme69 (21 Oct 2008 - 11:38)
Bonjour,

Aurais-tu une page en ligne nous permettant de voir l'ensembles des codes HTML et CSS de ce que tuas déjà réalisé ?
Non parce que c'est développé en local au boulot et là je suis chez moi. Donc pour le moment, je ne peux pas montrer grand chose désolé. Mais je promets que j'ai déjà fait pleins d'essais. Smiley smile
Promis promis.
Mais je suis désolé pour le moment je ne peux rien montrer.
En tout cas merci pour avoir pensé à moi.
mode divite aigüe on


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<title>essai</title>
	
<!--	<link rel="stylesheet" type="text/css" href="style.css" /> -->
	
</head>
<body>

<div id="contenaire_general" style="width:950px; margin-left:auto; margin-right:auto;">
	<div id="header" style="width:950px; height:140px">
    </div>
    
    <div id="contenaire2" style="width:950px;">
    	<div id="menu_gauche" style="float:left; width:180px;">
        </div>
        <div id="contenaire3" style="margin-left:180px">
        	<div id="header2" style="width:770px; height:135px">
            </div>
            <div id="contenaire4">
            	<div id="milieu" style="margin-right:180px;">
                </div>
                <div id="menu_droite" style="width:180px; float:right;">
                </div>
            </div>
        </div>
    
    </div>
    
    
   
    
</div>
	
</body>
</html>



a écrit :
La colonne de droite ne doit pas apparaître si il n'y a pas de boites dedans

là par contre je sèche
Modifié par scott54 (20 Oct 2008 - 23:44)
1// Le cadre horizontal juste en dessous du header c'est pour le titre de la page?

2// C'est quand même bizard que tu aies une image au pixel près de ce que tu désire, mais pas la moindre ligne de code... Et c'est bien parce que la méthode proposée par scott n'est pas des plus propres (mais pourtant classique) et que je sais que tu vas te contentet de copy-past que je vais le faire. Marre de voir des sites construits au marteau piqueur...
Voici un exemple sémantiquement plus correcte et plus court (au niveau du balisage).
Maintenant, si tu veux que tes colonnes fassent toute la hauteur de la page, c'est autre chose.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Ce n'&eacute;tait pourtant pas dur...</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
            body {
                position:absolute;
                left:50%;
                margin-left:-475px;
                width:950px;
                background-color:#eee;
            }
            ul {
                list-style-type: none;
            }
            h1#mainTitle {
                height:140px;
                
                color: #abc;
                background-color:#456;
                
            }
            div#content, h2#subTitle {

                margin-left:180px;
            }
            ul#mainMenu {
                width:180px;
                float:left;
                
                background-color:#abc;
            }
            h2#subTitle {
                height:135px;
            }
            div#subMenu ul {
                
                width:180px;
            }
            div#subMenu {
                float:right;
            }
            div#content {
                overflow: auto;
                background-color:#fff;
            }
        </style>
	</head>
	<body>
        <h1 id="mainTitle">Ici un titre</h1>
        <ul id="mainMenu">
            <li>Le menu</li>
            <li>Avec des liens</li>
            <li>ou des logos</li>
            <li>Lorem</li>
            <li>ipsum</li>
            <li>dolor</li>
            <li>sit amet</li>
            <li>consectetuer</li>
            <li>adipiscing elit.</li>
        </ul>
        <h2 id="subTitle">Le sous-titre de la page</h2>
        <div id="subMenu">
            <!--<ul>
                <li>Un autre menu</li>
                <li>Avec des liens</li>
                <li>Spécifiques</li>
                <li>Mis en commentaire</li>
                <li>Pour voir</li>
                <li>ce que ça donne</li>
                <li>si le sous-menu</li>
                <li>ne contient pas de blocs</li>
            </ul>-->
        </div>
        <div id="content">
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque non leo sed nisi placerat lobortis. Nam sed est. Donec dolor. Suspendisse adipiscing blandit metus. In rhoncus adipiscing odio. Proin laoreet justo id dolor. Quisque ipsum. Curabitur laoreet neque vel orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent lacus odio, lacinia a, bibendum bibendum, iaculis at, nibh.</p>
            <p>Nulla accumsan rhoncus risus. Aliquam tellus dolor, ullamcorper et, sagittis eget, scelerisque nec, augue. Fusce ac mauris. Donec dictum laoreet mauris. Duis tellus arcu, pharetra et, volutpat vel, lacinia sed, magna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce ut quam pulvinar pede vulputate venenatis. Cras auctor rutrum est. Ut justo. Fusce vestibulum lectus vitae risus.</p>
            <p>Suspendisse suscipit tellus ut dolor. Quisque commodo faucibus metus. Aliquam dui quam, auctor eget, molestie eget, ornare at, tortor. Nunc fringilla felis. Sed est mi, porttitor sit amet, hendrerit vel, luctus et, nisl. Nullam malesuada nulla id orci. Aliquam fermentum. Nunc non tellus. In eu tortor. Curabitur a ipsum nec nulla convallis semper. Nunc mi nisi, varius sed, fermentum in, sodales eu, arcu. Nam faucibus tincidunt sapien. Vivamus tincidunt ultrices leo.</p>
            <p>Vivamus malesuada. Nullam nibh. Quisque sed turpis. Maecenas eu arcu eu ipsum sagittis accumsan. Aliquam erat volutpat. Sed interdum, nulla at egestas varius, orci dui iaculis sem, a sagittis orci dui ac nisl. Pellentesque sodales purus a risus. Ut nec nisi. Curabitur ligula dui, sollicitudin vitae, posuere quis, interdum ut, nulla. Suspendisse sed justo ut diam pellentesque tempus. Duis tincidunt, dui ut cursus iaculis, tortor nisi bibendum augue, quis luctus libero magna sed nunc.</p>
            <p>Quisque eu sapien ut sem mollis tempor. In dolor. Integer vel libero et nibh auctor tincidunt. Sed id neque. Maecenas malesuada pharetra sem. Praesent id tellus. Suspendisse rhoncus egestas leo. Proin nec nunc ac felis dapibus viverra. Praesent blandit est vulputate velit. Quisque fringilla. In elit dolor, malesuada vel, molestie id, fermentum a, ante. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus euismod. Aliquam erat volutpat.</p>
        </div
    </body>
</html>    

Modifié par Calak (21 Oct 2008 - 02:21)
Bonjour et merci pour votre aide.

Calak a écrit :
1// Le cadre horizontal juste en dessous du header c'est pour le titre de la page?

2// C'est quand même bizard que tu aies une image au pixel près de ce que tu désire, mais pas la moindre ligne de code... Et c'est bien parce que la méthode proposée par scott n'est pas des plus propres (mais pourtant classique) et que je sais que tu vas te contentet de copy-past que je vais le faire. Marre de voir des sites construits au marteau piqueur...


1// Ce cadre sert à mettre une image

2// J'ai fait l'image en rentrant du boulot juste pour donner une idée de ce que je voulais. Si elle est au pixel près, c'est un miracle !
Pour le code, je montrerai ça dans la journée, pas de soucis.

Et pour répondre à votre dernier message, ce qui me pose problème aussi, c'est que les colonnes doivent être de la même taille que l'ensemble du site.
Il existe une mise en page en tableau mais que j'aimerai changer ...
Dominique.
Voilà à quoi ressemble mon code. Alors vu que j'essaye des tas de trucs, c'est un peu le bord.. !
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html class="background">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="styles.css">
<title><?php print $head_title ?></title>
<script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?> </script>
<?php print $head ?>
<?php print $styles ?>
<?php print $scripts ?>
<script type="text/javascript" src="http://yui.yahooapis.com/combo?2.5.2/build/yahoo-dom-event/yahoo-dom-event.js&2.5.2/build/connection/connection-min.js"></script>
<script type="text/JavaScript">
    var numImage = Math.round(Math.random()*13)+1;
</script>

</head>
<body>
	<div id="bandeau"></div>
	<div id="menu">
		<div id="menu_haut">
    </div>
		<div id="menu_bas">
        <?php
			    	if ($sidebar_left) {
			    		print $sidebar_left;
    				}
    		?>
    
    </div>
	</div>
	<div id="contenu">
		<div id="bloc_image">
    </div>
		<div id="bloc_droite">
        <?php if ($sidebar_right) { 
					print $sidebar_right;
					}
				?>
    
    </div>
        <?php print $breadcrumb ?>
        <?php print $header; ?>
    <h1 class="titre"><?php print $title ?></h1>
    <div class="tabs"><?php print $tabs ?></div>
				<?php print $help ?>
				<?php print $messages ?>
				<?php print $content; ?>
				<?php print $feed_icons; ?>
		        <?php if ($footer_message) {
		        	print '<div id="footer">';
		        	print $footer_message;
		        	print '</div>';
		        }
		        ?>
                        <br /><br />
		</div>
    
    
	</div>
	<div id="pied_page"></div>

<script type="text/javascript">
    YAHOO.util.Dom.setStyle('image_no_javascript', 'display', 'none');
</script>
</body>
</html>


et pour les CSS :

html{color:#000;background:#FFF;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}legend{color:#000;}body {font:13px/1.231 arial,helvetica,clean,sans-serif;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;line-height:100%;}
body{text-align:center;}

.background {
    background-color: #00294B;
}
body {
    text-align: justify;
    background-color: white;
    width: 950px;
    margin: auto;
}
div {
  background-color: white;
	}
div#bandeau {
border-bottom: solid 1px #456487;
	background-image: url("bandeau-haut-droit.gif");
	background-repeat : no-repeat;
	background-position:right bottom;
	height: 70px;
}
div#menu {
	float:left;
	width:170px;
	height:auto;
  border-right: solid 1px #336699;
	}
div#menu_haut {
	width:170px;
	height:auto;
	}
div#menu_haut .logos {
    border-bottom: solid 1px #336699;
    margin: 0;
    text-align: center;
}
div#menu_bas {
	width:170px;
	height:auto;
	}
div#contenu {
	float:left;
	width:778px;
	height:auto;
  border-left: solid 1px #336699;
	}
div#bloc_droite {
	float:right;
  margin: 5px;
	height:auto;
  text-align: left;
	}
div#bloc_droite .block {
  margin-left: 10px;
	height:auto;
  width:160px;
	}
div#pied_page {
	clear:both;
	width:950px;
	}
/* Utilisation de yahoo pour les polices de caractère */
#demo1 {font-size:85%;}  /*renders 11px */
.content, .block-taxonomy_list {font-size:100%;font-family:arial;}
#contenu, #contenu p {font-size:100%;font-family:arial;	text-align: justify;}
#menu .title, #bloc_droite .title {font-size:123.1%;}
#portail_accueil .title, .titre, .node .title {font-size:146.5%;} 
#tableau_de_bord .title {font-size:138.5%;}
#nom_site {
    font-size:182%;
    font-weight: bold;
    margin: 20px;
}

.block-yuimenu .title,
#tableau_de_bord .title, #portail_accueil .title a, #portail_accueil .title, #bloc_droite .block-taxonomy_list .title a, #bloc_droite .block-taxonomy_list .title, .admin-panel h3,
.titre,
#bloc_droite .block-block h2.title, #bloc_droite .block-views h2.title, #menu .block-block h2.title, #menu .block-search h2.title, #barredroite .block-tagadelic h2.title, .block-menu .title,
#bloc_droite .block-block .title, #bloc_droite .block-views .title, #menu .block-block .title, #menu .block-search .title,
#bloc_droite .block-user .title,
#block-search-0,#block-search-0 .container-inline, #block-search-0 .container-inline .form-item {
    background-color: #00294B;
    color: white;
    text-align: center;
}

/* ********************* */
/* RECHERCHE             */
/* ********************* */

#block-search-0 {
    text-align: center;
    padding-top: 5px;
    padding-bottom: 5px;
    margin-left: 2px;
    margin-top: 2px;
    border: solid 2px #00294B;
    width: 580px;
}
.titre {
    width: 580px;
    margin-left: 2px;
}

div#contenu h1.titre {
    width: 580px;
}

#edit-search-block-form-keys {
    width: 350px;
}

#block-search-0 .title  {
    display: none;
}



#login-logout a {
	background-color: #00294B;
  color: white;
	text-decoration:none;
  padding: 7px;
}

#login-logout a:hover {
	background-color: #336699;
  color: white;
	text-decoration:none;
  padding: 7px;
}

#login-logout {
	padding-bottom: 5px;
	padding-top: 5px;
	text-align: center;
  padding-left: 2px;
	line-height: 20px;
	text-decoration:none;
}

.block-taxonomy_list tr.even, .block-taxonomy_list tr.odd {
    background-color: white;
}

.taxonomy-list-table, #newsitems, #bloc_droite .block-views .content, #bloc_droite .block-user .content {
    border: solid 1px #336699;
}

.block-views ul {
    padding:0;
}

h2.title {
    color:red;
    margin-bottom: 10px;
}


#tableau_de_bord {
    margin: 5px;
}

/* Menus Yahoo
**************
*/
/* Chaque item du menu */

.yui-skin-sam .yuimenuitemlabel{font-size:12px;padding:0 5px;color:#336699;text-decoration:none;cursor:default;border:none;}

.yui-skin-sam .yuimenuitemlabel-selected,.yui-skin-sam .yuimenuitem-selected {
    background-color: #62C4DD;
    color: white;
}

.yuimenuitemlabel  {
height: 20px;
}

/*
.block-yuimenu .title {
display: none;
}
*/
.yui-skin-sam .yuimenu .bd{
	border: solid 1px #456487;
}

.block-yuimenu .title {
	border:solid 1px #808080;
	color: #FFF;
}

.block-yuimenu {
	padding-left: 10px;
	width: 150px;
}



#yuimenu {
	z-index: 10;
	text-indent: 5px;
	width: 150px;
}

a {
  text-decoration: none;
}

a:link, a:visited {
  color: #456487;
}


#auteur_article {
    text-align: right;
}

.comment {
  border: 1px solid #abc;
  padding: .5em;
  margin: 1em;
}
.comment .title  {
    display: none; 
}
.comment .new {
  text-align: right;
  font-weight: bold;
  float: right;
  color: red;
}
.comment .picture {
  border: 1px solid #abc;
  float: right;
  margin: 0.5em;
}

.content h1, dt.title, .faq_header {
	font-size:123.1%;
	font-weight: bold;
}
.content h2, .box h2.title {
	font-size:108%;
}
.content h3 {
	font-size:108%;
	font-style: italic;
}


#portail_accueil {
    width: 590px;
}

#tableau_de_bord {
    width: 585px;
}

/* FORUMS */
#forum table {
  margin: auto;
}


/* TABLEAUX VIEWS */
#views-filters tr.odd {
  background-color: #fff;
  border: none;
}

.view-content tr.odd td, #forum tr.odd td {
  background-color: #effffa;
  border-right: solid 1px #336699;
}

.view-content tr.even td, #forum tr.even td {
  background-color: #fffffa;
  border-right: solid 1px #336699;
}

.view-content tr.odd td.active, #forum tr.odd td.active {
	background-color: #E4F8FF;
}

.view-content tr.even td.active, #forum tr.even td.active {
	background-color: #F3FFEF;
}

/* ********************* */

/* ********************* */
/* Liste articles */
/* ********************* */
/*
#liste_articles_teaser {
    padding-bottom: 5px;
    padding-top: 5px;
    text-align: right;
}
*/
.view-content-articles-publies .node {
    padding: 0px 5px 5px 0px;
    margin-bottom: 20px;
    border-bottom: dashed 1px #456487;
}

.view-content-articles-publies  h2.title {
    padding-left: 15px;
}

.view-content-articles-publies  h2.title a {
    color: #405979;
}

.view-content-articles-publies .node .links {
    background-color: #F4EEFF;
}

.view-content-articles-publies .taxonomy .links {
    background-color: white;
}

.view-articles-publies  #edit-op0 {
	display: none;
}


.view-content-articles-publies thead tr th, .view-content-articles-publies thead a, #forum thead tr th, #forum thead a, th a:link {
    text-align: center;
    color: white;
    font-size:108%;
}

.view-content-articles-publies tr.odd {
  background-color: white;
}

.view-content-articles-publies tr.even {
  background-color: white;
}

.view-content-articles-publies td.active {
	background-color: white;
}

#table_7 th {
    border: none;
}

#views-filters thead tr {
    height: auto;
    display: none;
}
thead tr {
    background-color: #336699;
    color: white;
}
th {
    background-color: #336699;
    color: white;
}

th.active {
    background-color: #336699;
    color: white;
}
.view-content table, #forum table {
    margin-bottom: 5px;
    margin-left: auto;
    margin-right: auto;
}
Je t'en prie, tu es poli, certe, mais ne t'encombre pas d'un vouvoiement avec moi s'il te plait, je n'ai pas encore une canne blanche Smiley cligne

Sinon, d'un point de vue sémantique, le code html que je t'ai montré est valable (Je dirais même qu'il n'y aurait rien à y retoucher, si ce n'est l'externalisation du css, mais j'aimerais l'avis d'autres Guru... (Florent, on t'appelle! Smiley cligne ))
Correction:
Le sous-titre et le sous menu devraient se trouver dans le div "content", ce serait plus correct, ceci ayant un rapport avec le contenu... je modifierai à mon prochain edit.
De plus, dans ce cas-ci j'ai un div vide...


Pour ce qui est du problème de hauteur de colonnes, c'est un problème récurent des layout fluides.

Ici, deux solutions:
- Modifier le balisage pour ajouter certaines propriétés (display:table, display:table-row et display:table cell)
- Créer une image de fond qui viendra passer sous tout le site, donnant l'illusion que les menu se prolongent.

Personnellement, j'opterais fortement pour la deuxième solution (le balisage ne devant pas dépendre de la présentation).

Le problème ici sera donc ton menu de droite, puisque il ne dois pas toujours s'afficher.
Donc, pour le menu de gauche, une image de fond devrait faire l'affaire.
Pour celui de droite, je pense que je vais devoir passer par un re balisage (ce que j'avais prévu, cfr mon texte en gras plus haut), en le passant en display:tableXXX...
Mais si ton menu de droite est plus long que ton contenu et que ton menu de droite, ce dernier n'ira quand même pas jusqu'en bas...

Sinon, deux trois autres questions:

1// Tu me parle d'une image qui viendrait dans le deuxième "header". A quoi sert cette image?

2// Tu n'aurais pas oublié le pied de page (footer) dans ta maquette?

3// Es-tu conscient qu'une page de 950px de large va gèner les gens navigant dans une résolution inférieure (en 800*600 par exemple, encore fort répendue) ?
1// Essaye de normaliser tes espaces, sinon, vu que tu mélange "tab" et "espaces" quand tu poste ton code, ça ne ressemble à rien Smiley cligne

2//
if ($sidebar_left) {
    print $sidebar_left;
}


Donc il peut arriver aussi que le menu de gauche ne s'affiche pas??

3// Je récapitule:
- Tu as un header en haut de la page
- Juste en dessus de celui-ci, tu as un menu horizontal
- A gauche, tu as une sidebar (qu'y a t'il dedans?)
Et après, c'est le bordel... Smiley ohwell

Tu n'aurais pas une page en ligne pour voir tourner tout ça d'un coup, et voir le contenu de tes print aussi?
Comment ça c'est le bordel ! ?
Smiley biggrin
Je ne peux rien montrer en vrai car c'est un intranet et un peu sensible alors ...

En gros ce que je veux :
- Une bande (header) avec Logo + image background
- 2 colonnes
- colonne gauche : autres logos + menus
- colonne droite :
- commence par une bande contenant une image
- en dessous, 2 colonnes :
- colonne droite : peut être vide mais peut contenir des boites type news
- colonne centre : contient les articles

J'y suis presque mais j'ai des soucis suivant les navigateurs (principalement IE6)
dme69 a écrit :
Comment ça c'est le bordel ! ?
Smiley biggrin


Tout à fait
Smiley lol
dme69 a écrit :

Je ne peux rien montrer en vrai car c'est un intranet et un peu sensible alors ...


Oui, je comprend...
Au moins un screen alors?

dme69 a écrit :

En gros ce que je veux :
- Une bande (header) avec Logo + image background

Une image <img... /> et un background, c'est ça?
Ton Logo, tu peux pas l'intégrer au background plutôt?

dme69 a écrit :

- 2 colonnes
- colonne gauche : autres logos + menus

Qu'est ce que tu entend pas "autres logos" ? des boutons pour les liens, etc ?

dme69 a écrit :

- colonne droite :
- commence par une bande contenant une image

Cette image, qu'est ce que c'est? Un header de la section où l'on se trouve?

dme69 a écrit :

- en dessous, 2 colonnes :
- colonne droite : peut être vide mais peut contenir des boites type news

Donc, tes boites de type news, même si elles sont là, elles ne vont pas jusqu'en bas, c'est ça? Smiley lol
dme69 a écrit :

- colonne centre : contient les articles

Ca, ça va, j'ai compris Smiley cligne
dme69 a écrit :

J'y suis presque mais j'ai des soucis suivant les navigateurs (principalement IE6)

On va tenter de faire du code propre dans un premier temps, ensuite on le portera sur les navigateurs qui ne respectent pas les standrard (IE pour ne pas le citer)
Ok désolé !
En tout cas, merci pour ton aide.
Je dois partir en déplacement donc je continuerai tout ça à l'hotel (Snif ! )
L'image ne sert à rien de spécial (à faire jolie) !
Pour la taille, je sais mais j'ai peur que la taille du texte soit trop petite sinon ?
Encore merci et je te tiens au courant un peu plus tard.

Dominique.
Salut,

Sur la base de ce que j'avais envoyé, j'ai réussi à avoir le résultat escompté. J'ai des soucis pour être W3C compliant mais ça va venir. Je posterai ce que j'ai fait quand ce sera terminé. En tout cas, un grand merci pour ton aide.

Dominique.