28173 sujets

CSS et mise en forme, CSS3

Bonjour, je n'arrive pas à réaliser ce principe :
1) site en plein écran (largeur et hauteur) qui s'adapte à la taille de l'écran.
2) 3 colonnes (menu gauche & droit), en-tete coincé entre les 2 menus et texte dessous.
3) barre de défilement dans colonne centrale de texte
4) site figé, il n'y a que le texte qui avance

voilà pour le principe. mon souhait serait de fonctionner avec des feuilles de style e css

merci de votre aide
Bonjour,

Dans le même sujet, est il possible d'avoir 2 colonnes côte à côte n'ayant pas la même hauteur le tout dans un DIV positionné sur une page.
Bien évidement il peut y avoir du texte avant et après les colonnes...

Merci par avance.

Patrick
Salut PatrickDuSud !

heeu... aurais-tu une illustration de ce que tu veux faire ? ou pourrais-tu donner plus de détails ?

sinon il y aurait ça
Bonjour Mucsy,

Je pourrais te fournir un exemple concret ce soir, vu tout le code que j'ai sur ma page, mais voici déjà une explication pour débriefer la chose :

J'ai mon site centré, via un conteneur et des marges auto et tout le toutim Smiley cligne Là rien à dire, cela fonctionne depuis le début.
Ce conteneur contient 2 DIV, 1 que j'ai nommé contenu et un autre rubrique qui est placé via un float: right.
Là encore tout va bien.

Je travaille dans la partie contenu.
La mise en page ne pose pas trop de souci, sauf au moment de faire 2 colonnes à l'intérieur.
Pourquoi? Pour plusieurs raisons.
La principale c'est que je créé 2 DIV (menu et pied) que je décale au dessus et en dessous du bloc contenu, et donc le FLOAT d'une de mes 2 colonnes passe dessus...

Vois tu ce que je veux dire?

Patrick

PS : J'ai cru voir une histoire de clear: both mais je n'ai pas encore vu d'utilisation
Bonjour,

Je viens de le regarder rapidement mais je ne suis pas sûr qu'il corresponde à mon problème.
Je ne suis pas fan de rafistolage à base d'images de fond Smiley cligne mais je te tiens au courant de la suite.

Patrick
merci Mucsy, j'ai réalisé quelque chose comme ça en m'inspirant du site. le pb est que je n'arrive pas à mettre l'ascenceur dans la zone centrale contenant le texte et je n'arive pas à ce que le cadre prenne tout l'écran en hauteur alors qu'en largeur ça marche. à bientôt
bonjour, voici le graphisme de la page ecran que je voudrait réaliser. tout est fixe à l'écran sauf la partie central contenant le texte. à bientôt upload/11474-graphismes.PNG
Salut,

Une petite base de travail, vite fait.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
			
<head> 
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <style type="text/css"> 
*{
 margin: 0;
 padding: 0;
}

body, html{
position: relative;
height: 100%;
overflow-y: hidden;	/* pour IE élimine l'assenceur vide */
}

#head
{
 background-color: red;
 height: 15%;
}



#gauche{
 background-color: green;
 width: 190px;
 height: 100%;
 float: left;
 }



#droite{
 background-color: pink;
 width: 190px;
 height: 100%;
 float: right; 
}



#contenu{
 background-color: yellow;
 height: 100%;
 
 }

#centre{
 background-color: yellow;
 height: 85%;
 overflow: auto;
 }

#droite p, #gauche p{
 margin: 80px 15px 10px 15px;
}

#centre p

{
 margin: 10px 25px 10px 25px;
}

  </style>

<!--[if lte IE 6]>
<style>
/* élimine 3px jog pour IE6*/
   #contenu{ 
float: left;
} 
</style>
<![endif]-->
  
</head>
<body>
  <div id="gauche">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras eget est euismod sem pretium sollicitudin. Suspendisse purus turpis, egestas nec, ullamcorper sit amet, tempor varius, dolor. Donec blandit, nisi eget euismod fringilla, lectus orci venenatis turpis, at elementum ligula nulla in magna. Fusce orci dolor, lobortis eu, venenatis vitae, vulputate vitae, leo. In hac habitasse platea dictumst. Praesent in mauris vitae purus elementum vulputate. Aenean id dolor</p>
  </div>
  <div id="droite">
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras eget est euismod sem pretium sollicitudin. Suspendisse purus turpis, egestas nec, ullamcorper sit amet, tempor varius, dolor. Donec blandit, nisi eget euismod fringilla, lectus orci venenatis turpis, at elementum ligula nulla in magna. Fusce orci dolor, lobortis eu, venenatis vitae, vulputate vitae, leo. In hac habitasse platea dictumst. Praesent in mauris vitae purus elementum vulputate. Aenean id dolor</p>
  </div>
  <div id="contenu"> 
   
  	<div id="head">
    <p>head</p>
 	 </div>
     
 	 <div id="centre">
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras eget est euismod sem pretium sollicitudin. Suspendisse purus turpis, egestas nec, ullamcorper sit amet, tempor varius, dolor. Donec blandit, nisi eget euismod fringilla, lectus orci venenatis turpis, at elementum ligula nulla in magna. Fusce orci dolor, lobortis eu, venenatis vitae, vulputate vitae, leo. In hac habitasse platea dictumst. Praesent in mauris vitae purus elementum vulputate. Aenean id dolor. Sed ac tellus ac risus volutpat tempor. Etiam augue. Sed id ante. Sed non justo at sem vulputate hendrerit. Proin a mi id leo facilisis sollicitudin. Integer euismod, tortor quis vestibulum condimentum, odio ligula scelerisque nisi, quis facilisis ligula lacus nec nisi. Maecenas nec dolor id justo porttitor placerat. Quisque euismod. Vivamus faucibus arcu sed enim.</p> 
	    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras eget est euismod sem pretium sollicitudin. Suspendisse purus turpis, egestas nec, ullamcorper sit amet, tempor varius, dolor. Donec blandit, nisi eget euismod fringilla, lectus orci venenatis turpis, at elementum ligula nulla in magna. Fusce orci dolor, lobortis eu, venenatis vitae, vulputate vitae, leo. In hac habitasse platea dictumst. Praesent in mauris vitae purus elementum vulputate. Aenean id dolor. Sed ac tellus ac risus volutpat tempor. Etiam augue. Sed id ante. Sed non justo at sem vulputate hendrerit. Proin a mi id leo facilisis sollicitudin. Integer euismod, tortor quis vestibulum condimentum, odio ligula scelerisque nisi, quis facilisis ligula lacus nec nisi. Maecenas nec dolor id justo porttitor placerat. Quisque euismod. Vivamus faucibus arcu sed enim.</p>
		<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras eget est euismod sem pretium sollicitudin. Suspendisse purus turpis, egestas nec, ullamcorper sit amet, tempor varius, dolor. Donec blandit, nisi eget euismod fringilla, lectus orci venenatis turpis, at elementum ligula nulla in magna. Fusce orci dolor, lobortis eu, venenatis vitae, vulputate vitae, leo. In hac habitasse platea dictumst. Praesent in mauris vitae purus elementum vulputate. Aenean id dolor. Sed ac tellus ac risus volutpat tempor. Etiam augue. Sed id ante. Sed non justo at sem vulputate hendrerit. Proin a mi id leo facilisis sollicitudin. Integer euismod, tortor quis vestibulum condimentum, odio ligula scelerisque nisi, quis facilisis ligula lacus nec nisi. Maecenas nec dolor id justo porttitor placerat. Quisque euismod. Vivamus faucibus arcu sed enim.</p>
  	</div>
  </div>

</body>
</html>



Modifié par ghost (20 Mar 2007 - 10:31)
Bonjour,

Tu peux toujours jouer avec des hauteurs en pourcentages (100% pour chacune des deux colonnes, 15% pour l'en-tête, 85% pour le bloc de contenu), en travaillant la question des blocs en hauteur 100% (la FAQ en parle, donc je ne détaille pas). Ensuite, obtenir une barre de défilement interne avec un overflow: auto pour le bloc de contenu.

MAIS :
1. Tu vas t'arracher les cheveux à mettre ça en place (surtout si ton en-tête doit avoir une hauteur précise en pixels, auquel cas ça n'est même pas la peine d'y penser...).
2. Les barres de défilement internes à un bloc posent de sérieux problèmes d'accessibilité (comprendre : c'est inutilisable pour certains visiteurs) et plus généralement d'ergonomie (comprendre : c'est chiant à utiliser pour la plupart des visiteurs). C'est une mauvaise idée à oublier.

Je pourrais te conseiller une solution intéressante, mais pas particulièrement facile à mettre en place si tu ne connais pas les bases de CSS. Si tu débutes, je te conseille très fortement de partir sur quelque chose de plus classique, qui 1) sera plus simple à mettre en place, 2) sera plus robuste car moins bricolé et plus maitrisé et 3) aura l'avantage de ne pas surprendre tes visiteurs.

Si tu tiens malgré tout à ta mise en page tarabiscotée ( Smiley lol ), la marche à suivre est la suivante :
1. On utilisera la barre de défilement du navigateur, et aucune autre.
2. On donnera une hauteur de 100% aux deux colonnes latérales.
3. On utilisera le positionnement fixe pour les deux colonnes et pour l'en-tête (position: fixed), à dégrader en positionnement absolu pour Internet Explorer 6 (via un commentaire conditionnel).
4. Pour un mode dégradé plus potable dans IE6, on pourra utiliser les colonnes factices plutôt que des blocs de hauteur 100% pour donner l'impression de colonnes prenant toute la hauteur quel que soit le défilement de la page. Les colonnes factices c'est pas du bricolage, c'est du trompe-l'oeil.
5. Le bloc de contenu sera juste positionné avec des marges (à gauche de la largeur de la colonne de gauche, en haut de la hauteur de l'en-tête, à droite de la largeur de la colonne de droite).

Voilà qui peut faire l'affaire. Deux remarques :
- c'est loin d'être évident à mettre en place si on ne maitrise pas un peu les CSS ;
- c'est compatible IE7, Firefox, Opera, Safari... (du moins pour les versions pas trop anciennes de ces navigateurs... je ne parierai pas ma chemise sur Safari 1.3 ou Opera 7). Pour Internet Explorer 6, le rendu sera dégradé, c'est à dire que l'on aura un positionnement non statique (lorsqu'on fait défiler la page, menus et en-tête disparaissent).
ghost a écrit :
Une petite base de travail, vite fait.

C'est la première solution que j'évoque, et dont j'ai rappelé les effets négatifs sur l'accessibilité et l'ergonomie (ou l'utilisabilité, plutôt...).

De plus, je ne suis pas sûr de la robustesse de la solution choisie en ce qui concerne IE6 (trois flottants côte-à-côte, ça peut être casse-gueule).
Re,

Effectivement, c'est peu robuste et je ne l'utiliserais pas en développement.
Pour moi plus a considérer comme un exercice de style!
Merci pour tes compléments d'information.
Personnellement, je ne pense pas que ce soit une bonne idée de mettre les menus en "fixed", en effet, que se passe-t-il si le menu dépasse en hauteur ?
voici une solution pas trop mal en m'insiprant de ce qu'à dit Florent V. Seuelement, sans les menus en fixed, car je ne pense pas que ce soit une bonne idée.

code css


        html {
            height: 100%; /*obligatoire */
        }
        
        
        
        body { 
            margin: 0px;
            padding: 0px;
            height: 100%;
            background: #ff0 url(menu-gauche.gif) top left repeat-y; /* background dépassement du menu de gauche */

        }
        
       #left-menu {
        min-height: 100%;
        position: absolute;
        top: 0px;
        left: 0px;
        background: #ff0 url(menu-gauche.gif) top left repeat-y; /* background du menu correspondant au minimum à 100% de la hauteur */
        width: 190px;
       }
       #right-menu {        
            min-height: 100%;
            position: absolute;
            top: 0px;
            right: 0px;
            background: #00f url(menu-droite.gif) top left repeat-y; /* background du menu correspondant au minimum à 100% de la hauteur */
            width: 190px;
        }
        #center {
            min-height: 100%;
            margin-left: 190px;
            padding-right: 190px;
            
            background: #ccc url(menu-droite.gif) top right repeat-y; /* background dépassement du menu de droite */

        }
        #head {
            background: #0f0;
            height: 150px;
            position: fixed;
            top: 0px;
            left: 0px;
            width: 100%;
            padding-right: 190px;
            padding-left: 190px;
            

        }
        #contents {
            padding-top: 150px;
        }


On gère la continuité apparente du menu qd le contenu dépasse de l'écran à l'aide des background du body et du contenu.

Code css pour ie6, à mettre avec des commentaires conditionnels

            #left-menu {
                height: 100%;
            }
            #right-menu {
                height: 100%;
            }
            #center {
                height: 100%;
            }
            #head {
                position: absolute;
            }


code xhtml


    <body>
        
        <div id="head">
            En tete
        </div>
        
        <div id="left-menu">
            <p>Menu de gauche</p>
            <p>Menu de gauche</p>
            <p>Menu de gauche</p>
            <p>Menu de gauche</p>
            <p>Menu de gauche</p>
            <p>Menu de gauche</p>
            <p>Menu de gauche</p>
        </div>
        
        
        <div id="center">
            
            <div id="contents">
                Contenu
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                <p>Grand passionné de voile, E. Bertarelli a toujours rêver de créer un team qui serait capable de participer, et surtout de gagner la Coupe de l'America. En 2000, il se déplace en Nouvelle-Zélande pour assister au triomphe de Team New Zealand sur les Italiens de Luna Rossa par 5-0. Il est très impressionné par la qualité des marins néo-zélandais et surtout par leur barreur Russell Coutts. Peu après la victoire de Team New Zealand, des tensions apparaissent au sein de l'équipe et plusieurs membres décident de quitter le projet. Russel Coutts se rapproche de Bertarelli et ce dernier l'engage, ainsi que toute la cellule arrière de TNZ, celle-la même qui avait triomphée lors des deux précédantes éditions.</p>
                
            </div>
            
            
        </div>
        
        <div id="right-menu">
            <p>Menu de droite</p>
            <p>Menu de droite</p>
            <p>Menu de droite</p>
            <p>Menu de droite</p>
            <p>Menu de droite</p>
            <p>Menu de droite</p>
        </div>

    </body>

Modifié par yahrou (20 Mar 2007 - 11:27)
yahrou a écrit :
Personnellement, je ne pense pas que ce soit une bonne idée de mettre les menus en "fixed", en effet, que se passe-t-il si le menu dépasse en hauteur ?

Le positionnement fixe est effectivement à réserver aux éléments ayant une hauteur limitée. Quoique l'on puisse toujours limiter les dégâts avec une hauteur fixe (à 100% par exemple) et un overflow: auto.
pour compléter, mes connaissance en css concernent surtout la mise en page, que du classique. mon souhait était de quitter les tableaux pour ce type de construction mais j'avoue me perdre un peu dans les blocs. quels bouquins ? j'ai css2, y en a t il d'autres
bonsoir, j'ai essayé les propositions de vincent. je trouve très bien. Par contre je fonctionne toujours avec des feuilles css externe et là ça devient bizarre. Dans le logiciezl de création tout se passe bien et lors de l'affichage avec IE ou firefox, la css ne doit pas être vu car tous les blocs sont emplilés comme si il n'y avait pas de feuille de style. Puis lorsque je veux faire un modele .dw, tout se passe bien lorsque j'introduit la zone modifiable et je crée le modèle mais ça se passe mons bien lorsque je crée une nouvelle page à partir du modèle. "contenu" devient inaxesible. je continu et essai les proposition de yahrou. je n'ai pas eu le temps cet aprem et je ne sais pas si demain je pourrais, c'est pas mon boulot. à bientot