28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Je suis actuellement en train de faire un site redimensionnable verticalement.
Ca reprend l'exemple donné sur le site http://css.alsacreations.com/modeles/modele11.htm sauf que je voudrais que la partie footer soit toujours en bas de page et les parties frames scrollable et menu gauche prennent le reste de la page en hauteur.
Avez vous une idée?

Merci beaucoup!
Jo
Salut jo,

je crois que

.footer
{
  position: absolute;
  bottom: [i]taille de ton footer en px[/i];
  height: [i]taille de ton footer en px[/i];
  background-color: #99cc99;
}
en remplacement du css actuel du footer doit suffire. Essaie et dis-moi quoi.

a+
Modifié par coccimaster (04 Jul 2006 - 11:15)
Non, ça ne marche pas. Je perds la couleur de fond, et en plus l'ensemble ne descends pas dans la page.

upload/5601-modele11a.gif

Une autre idée?
Jo
Je viens d'éditer mon post pour la couleur de fond, il y avait une faute de frappe.
Ensuite, essaie
*D'englober tout sauf le header dans une div, on l'apellera corps.
* Tu donnes au conteneur, au header et au footer une hauteur en px
* Tu donne à corps une hauteur en faisant corps => conteneur, - header - footer.
* Tu donne à corps une largeur de 100%
* Tu positionne corps en absolute, avec un top égal à la hauteur du header
hum...
nope toujours pas.
En plus le header et le footer doivent être de taille fixe mais pas le conteneur (menu et contenu scrollable)
upload/5601-modele11b.gif
En fait il est là le problème. Comment faire une div qui s'étire selon la résolution de l'écran et avec un ascenceur?

Merci de ton aide, je ne suis même pas sûre que ce soit possible.
Jo
jo95125 a écrit :
Merci de ton aide, je ne suis même pas sûre que ce soit possible.

Parti comme ça, c'est sur que tu rique pas d'y arriver. Ensuite si tu veux que ce soit scrollabe, je vois pas l'interet de l'étirabilité (je me trompe peut-être remarque) mais en recherchant un peu avec la propriété overflow, tu devrais finir par trouver ce que tu cherches.
en fait, l'intéret, c'est qu'en 800x600 ce soit scrollable si le texte est plus grand et donc prenant toute la fenêtre, et par exemple pour du 1280x1024, ben si le texte est petit, qu'il soit dans le conteneur, sans ascenceur, et que ce conteneur aille jusqu'en bas, le footer étant complètement en bas de page.

c'est pour éviter un gros blanc dans des résolutions plus grande tout simplement.
Mais en fait, j'ai déjà vu du resizable en css à l'horizontal mais pas à la verticale, c'est pour ça que je disais que je n'étais pas sûre que ce soit possible.
Bon ça fait déjà 2-3 soirs que je passe mon temps dessus... Toujours pas de solutions! c'est pour ça que j'ai besoin d'idées fraîches et nouvelles!!!

Merci encore de ton aide
Jo
Modérateur
bonjour,

un exemple de pied rejeté au bas du conteneur principal et pas de seulement de l'ecran.

la technique est relativement simple.
un parent en position:relative; qui permet de placer en position absolute un ou plusieurs enfant en fonction de la position du parents et pas de l'ecran.
placer-un-element-au-bas-de-son-conteneur-et-pas-le-bas-de-la-page

Et une autre version avec le pied relegué apres le conteneur en min-height de 100%. le pied a un margin-top negatif de sa hauteur.
http://gcyrillus.free.fr/trucs_css/pied-en-bas-V2.html
Dans tout les cas il faut faire attention a ne pas faire superposer le "pied" et la fin du "contenu".
L'idée de ses 2 page est de remplir la hauteur de la fenetre même si il n'y a pas ou peu de contenu.
Ensuite avec peu de contenu , vient souvent l'idée de centrée verticalement ce peu de "contenu". alors.... attention a ne pas s'egarer vers l'idée de reproduire une mise en page du style "tableau" ou "frame" .

bon je sais pas si ces idées seront pour toi fraîches ... Smiley smile

++
nope nope nope...
rien qui marche, j'arrive bien à mettre mon footer en bas de page, mais mon contenu ne se redimensionne pas selon la taille de la fenêtre. En fait il se redimensionne selon le contenu.
J'ai essayé de récupérer la taille de l'écran en javascript pour enlever le header et le footer et avoir donc ma taille en hauteur dynamique, sauf que, je ne peut pas récupérer en javascript la taille de la fenêtre. Si j'avais pu j'aurais pu le faire de cette façon.
Mais là, définitif, ça ne marche pas.

Jo
bonjour,

Vu tes explications, il me semble que devra passer par du javascript pour calculer la hauteur de la fenetre, et celles entre autres du content (zone de contenu) pour qu'il s'adapte a la hauteur de la fenetre tout en laissant ton pied de page en bas de celle-ci.
Je ne sais pas si il y a une solution en css (sans javascript) ??
+
exact... c'était bien mon idée.. mais impossible de récupérer la taille de la fenêtre en javascript!
Dans ma glande, je viens de trouver ce tuto qui doit répondre à ton problème

Bonne chance
Modifié par coccimaster (04 Jul 2006 - 16:41)
Modérateur
je revient sur la version "css" .

voici un gabarit, centrée 1 banniere, 2 colonnes , 1 pied de page. et un min-width pour IE car le centrage du site est en marge negative du au passage en mode quirk. Je considere cette page comme une page a probleme, ... ouvrez la dans opera et diminuer ou augmenter la hauteur de la fenêtre , et le code du au grosses difference de IE est sujet a d'autre bug en cours de conception , ie est et devra resté en "mode quirk" pour ce simili frame.
(pour passer IE en mode quirk, je me sert la de commentaire conditionnel et de "commentaire IE" caché ).
la page en ligne ou le code a copier/coller:


<!--[if lte IE 6]><comment>Juste pour faire passer IE en mode 

quirk , ici IE7 n'est pas concerné , ! a 

verifier/tester</comment><![endif]-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><!--[if lte IE 

6]><comment>Juste pour faire passer IE en mode quirk , ici IE7 

n'est pas concerné , ! a verifier/tester</comment><![endif]-->



<meta content="text/html; charset=ISO-8859-1" 

http-equiv="content-type">
  
<link rel="start" title="Accueil" 

href="http://gcyrillus.free.fr/" alt=" [langue] "><!-- Titre de la 

page--><title>Gabarit , encore des faux frame .</title>


<style type="text/css">


html, body {
	height:100%;
	margin:0;
/* padding:0; a omettre sinon pas de min-width dans IE ! */ 
		
}

body
{
	font-family:arial;
	color: #808080;
	font-size: 12px;
	background:url(../fond.png) #666;
	background-repeat:repeat-y;
}

#global {
        background: url(../images/corps.jpg) #333;
        background-repeat: repeat-y;
        position: relative;
        height: 100%;
        max-height:100%;
	margin:0 auto;
	width:681px;
}


#header
{
	background:url(../images/header.jpg) #444;
	background-repeat:no-repeat;
	height:90px;
	width:681px;
	color: #FFA800;
	margin:0;
	line-height: 2em;
	text-align:center;
}

#menu
{
        color:black;
	width:150px;/*200px moins 50px de padding-left pour ne 

pas pousser le contenu*/
        margin: 0px;
        list-style-type: none;
        padding-left: 50px;
        padding-top: 15px;
	background:url(../images/menuf.jpg) #555;
	position:absolute;
	top:90px;
	bottom:30px;
	left:0;
}


#contenu
{
        text-align:left;
        left: 200px;
        padding: 15px;
	padding-bottom:2em;
	position:absolute;
	top:90px;
	bottom:30px;
	overflow:auto;
	right :0;
}
#contenu p {
        margin:0.5em 0px;
	text-indent:2em;
}
#contenu p:first-letter {
	color: #FFA800;
}
#contenu p span {
	color: #FFA800;
}
#footer
{
        background:url(../images/footer.jpg) #444;
        background-repeat:no-repeat;
        height:30px;
        position: absolute;
        bottom: 0px;
	left:0;
        width:661px;
        text-align: right;
        padding-right: 20px;
	line-height:30px;
}

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

a:hover
{
	text-decoration:none;
	color:#FFA800;
	border-bottom:1px dashed #FFA800}

a:focus , a:active
{
	text-decoration:none;
	color:white;
	background-color:#333;
}

body:hover  {	position:relative;/* pour corriger le bug 

d'opera */}
</style><!-- zone css pour IE6 et inferieur --><!--[if lte IE 

6]>
<style type="text/css">
html {
/* annulation de l'effet de disparition vers la gauche ou 

min-width pour IE */
padding-left:341px ;
position:relative;

padding-right:341px;

}

body
{
	text-align:center;
}

#global {
	height:100%;
	position:absolute;
	margin-left:-341px;
	background-color:#555;
}


#header {
	position:absolute;
	left:0;
	top:0;
}

#menu {
	text-align:left;

}


#contenu {
	padding-right:0;
	top:0;
	padding-top:90px;
	padding-bottom:30px;
	height:100%;
	right:0;
	background-color:transparent;
/* couleur de fond  reporté sur #global */	
	
	padding-left:0px;
	padding-right:0px;
}

#contenu div {
	height:100%;
	overflow-y:scroll;
	background-color:#333333;
	padding-left:10px;
	padding-right:10px;

}
	
#footer {
	width:681px;
}

</style>
<![endif]--></head><body>


<div id="global">

<!-- Header -->
<h1 id="header">Gabarit, faux frame ,toute la page [smile]</h1>


<!-- Block Menu -->
<ul id="menu">
        <li><a href="#">Lien</a></li>
        <li><a href="#">Lien</a></li>
        <li><a href="#">Lien</a></li>
        <li><a href="#">Lien</a></li>
        <li class="marge"><a href="#">Lien</a></li>
</ul>
<!-- Block Contenu -->
<div id="contenu"><div>
<h2>Salut,</h2>
<p>
Finalement , c'est bien du faux frame que tu veut, et ne pas 

voir ta page s'etendre au dela de la fenetre.<span>(du coup le 

bottom zero pour le pied convient parfaitement ! et le probleme 

est ailleurs. ..)</span>.</p>
<p>Les 4 coordonnées pour un elemnts en position absolute rende
celui-ci elastique , mais pas dans IE, pour IE il faudra le 

passer en
mode quirk et faire usage descommentaires conditionnels.</p><p> 

Pour <span>IE7</span>, , aucune idée de ce qu'il faut faire ? 

si il ne comprends pas la regle </p>
<p>En lui proposant un css diferents , en reprenant aussi le 

system de centrage a l'aide des marges 

<span>"negatives"</span>.</p> 
<p>a coup de <span>position:absolute;</span>, 

<span>padding</span> et <span>height:100%;</span>on arrive a 

simuler des frames dans IE aussi.</p> 
<p>Malgré tout ce genre de <span>"montage"</span> me met mal à 

l'aise
.... je ne connais pas le comportement de IE7 a cet egard, ni 

celui de
safari ou encore les version de netscape encore en service. 

</p>
<p>Cet façon de <span>"faire</span> a été evoqué par 

<span>alan</span> sur le forum d'alsa , je ne sais plus sur 

qu'elle topic , mais j'en ai gardé souvenir 

...<span>:)</span></p>
<p> a l'occasion de cette modification de gabarits 
je viens de trouvé un moyen de faire un <span> min-width dans 

IE</span>, 
en cherchant a annihilé ce fichu defaut de la marge negative ,
Je viens surement de <span>reinvente la roue</span> , mais bon 

, au moins 
je viens de comprendre quelquechose  . . . <span>( ça 

<strong>ne </strong> bug <strong>plus tout a fait </strong>dans 

opera ).</span></p>
<p><a href="http://gcyrillus.free.fr/">Gcyrillus</a></p></div>
</div>
<!-- Debut block footer -->
<div id="footer"><a href="#top" alt="haut de page">Retour en 

haut</a></div>
</div>
</body></html>

<edit> ajout du body:hover dans le css ainsi que body {padding:0} cacher a IE .</edit>
++
Modifié par gcyrillus (05 Jul 2006 - 15:22)
YES!!! c'est exactement ça! du faux frames...
Je regarde sur mon site et dès que j'ai fini, je passe l'adresse!

Trop trop contente!
Jo
Modérateur
:) , ce bug d'opera me chagriner un peu , et j'avais deja remarquer que le survol d'une balise <a> permettait un "rafraichissement" du conteneur dans opera, alors en testant ceci:

body:hover  {
                  position:relative;
/* pour ici , corriger le bug d'opera */
}

Je viens d'avoir la bonne surprise que ça marche (en passant la souris sur la fenetre l'ensemble de la page est brutalement "remise en place" ici hauteur du conteneur et sa barre de scroll )... bien evidement , il faut ajouter ou modifier une regle deja etabli et qui ne modifie pas l'aspect generale de la page (recharger la même couleur de fond ou police n'a aucun effet).
Ici le position relative ne m'a pas sembler apporter de "bugs" .

Je garde toujours a l'idée que cette page ou plutot le css associer risque de la rendre capricieuse .... a tester quand même dans des navigateurs differents (IE 5 et 5.5 (en principe ok), netscape (?), safari (?), konqueror ... que sait je encore Smiley smile )

Je reste curieux du resultat que tu en obtiendras Smiley smile

<edit> precision supplementaire , il faut cacher a IE le body{padding:0; } a body pour conserver l'effet du min-width , code et lien mis a jour</edit>
++
Modifié par gcyrillus (05 Jul 2006 - 15:20)
Smiley biggrin
YESSSSSS c'est extra !

c'est gentil de m'avoir aider... J'avais même commencé à me mettre au javascript!

Un grand merci à tous!
Jo
Modifié par jo95125 (06 Jul 2006 - 14:20)