1485 sujets

Web Mobile et responsive web design

Bonjour à tous !

Je souhaite adapter mon site internet à plusieurs tailles d'écran, au minimum un écran 15 pouces, soit 800px de largeur.
Le corps de mon site ayant une hauteur fixe, je souhaite simplement que mon site rétrécisse de manière proportionnelle sans que les éléments ne se déplacent.

Je travaille en ce moment sur ma page index, qui est très simple et ne comporte que des images et un petit bout de texte. Mais c'est déjà un casse-tête pour moi !

Les images de mon site rétrécissent bien en proportion de la largeur de la fenêtre du navigateur… sauf que mon bloc footer monte tout en haut de ma maquette !!! De plus, sa hauteur reste fixe malgré les changements de largeurs de fenêtre.

En analysant sur Firebug, je constate que mon bloc section semble avoir disparu, bien que les images qu'il contient sont encore là.
Par ailleurs, la hauteur de mon body reste fixe aussi. Mais cela ne me dérange pas car les images contenues à l'intérieur rétrécissent bien proportionnellement.

La disparition du bloc section semble expliquer la montée en haut de mon bloc footer. Mais pourquoi donc mon bloc section disparait ?

Voici mon code sur mes pages html et css (j'ai retiré les images et mis des couleurs de fond transparent, pour plus de simplicité):

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"/>
<title>Test maquette vide</title>
<link href="css/a_entrer.css" rel="stylesheet" type="text/css" media="only screen">

</head>

<body>

	<section>
    <a href="b_menu.html" title="Entrez dans mon site">
        	<img src="#" alt="Entrer"/>
		</a>
    </section>
    
    <footer>
		<p><a href="h_mentions_legales.html">Mentions légales</a></p>
	</footer>

</body>

</html>


html{
	background:white;
	width : 100%;
	height: 100%;	
}

body{ /*balises du bloc body */
	max-width:80.625em; /* 1290px = 80.625em */
	max-height:60em; /* 960px = 60em */
	min-width:50em; /* 800px = 50em */
	min-height:37.286875em; /* 596.59px = 37.286875em */
	margin:0px auto; 
	position:relative;
	background:rgba(0,255,255,0.5); /*bleu transparent*/
}


section{ /*paramètres du bloc section*/
	width:100%; /* 1290px = 100% du body */
	height:100%; /* 914px = 96.7195767% du body */
	margin:0px auto;
	background:rgba(255,0,255,0.5);/*rose transparent*/
}

section a{ /*paramètres du bouton Entrer dans le bloc section*/
	background:white;
	width:16.744186%; /* 216px = 16.744186% de la section */
	height:16.744186%;
	margin-top:49.6%; 
	margin-left:68.2170543%; /* 880px = 68.2170543% de la section */
	width:16.744186%; /* 216px = 16.744186% de la section */	
	position : absolute;
}

footer{
	height:3.9153439%; /* 37px = 3.9153439% du body*/
	padding-top:0.7%; /* 9px = 0.7% du body*/
	color:rgb(0,0,0);
	text-align:center;
	background:rgba(255,255,0,0.5);/*jaune transparent*/
}

footer a{
color:rgb(0,0,0);
text-decoration:none;
}


Dans le css du body, quand je supprime "max-" dans le code "max-height:60em" (ligne 9), la section réapparait, le footer revient en bas mais le footer semble sorti du body (sa couleur jaune transparente devrait se mélanger au bleu transparent du body, mais elle est mélangée au blanc du fond). Et sa position et sa hauteur ne varient pas non plus.

Quelqu'un aurait-il une solution pour que mon bloc footer reste en bas du body tout en rétrécissant avec les images de mon site ?

D'avance, merci beaucoup !
Etant moi-même débutante, je ne vais certainement pas pouvoir répondre à toutes tes questions mais il y a quand même des choses qui m'interpellent fortement dans ton code.

Déjà, en préambule, tu sembles confondre largeur d'écran et résolution.
Luzinthesky a écrit :
Je souhaite adapter mon site internet à plusieurs tailles d'écran, au minimum un écran 15 pouces, soit 800px de largeur.

Ça n'a rien à voir ! Mon portable a un écran 15 pouces réglé à 1680x1050 px.


Pour en venir à ton code, il y a plusieurs choses que je ne comprends pas :

- pourquoi mettre un width et height à <html> ? Sauf si plus spécialistes que moi me détrompent, ça me semble totalement inutile.

- pourquoi spécifies-tu une hauteur à <body> ? Ton body prend la hauteur totale des éléments qu'il contient, c'est donc ces éléments qui doivent être stylés.

- si je peux trouver une raison à mettre un max-width sur le body (par ex. éviter qu'il ne devienne trop large sur les grands écrans avec des lignes de texte kilométriques), je ne vois pas pourquoi mettre un min-width ? Tu veux faire du responsive et tous les écrans moins larges que 800 px vont donc avoir un ascenseur horizontal ? Où est le sens ??

- tu as réglé la hauteur de <section> à 100% donc 100% de son parent qui est <body>. Or, ton <footer> est aussi dans <body>... il y a un truc qui ne clope pas. Je ne comprends d'ailleurs pas d'où tu sors ce 914px.

Tu veux une hauteur totale fixe, OK. Mais la hauteur de ta section additionnée à celle de ton footer ne peuvent pas faire plus de 100%. Or 3.9153439% + 96.7195767 % = 100.6349206% auquels il faut encore ajouter ton pading-top.

Règle la hauteur max de ton body en pourcentage, celles de ta section et de ton footer en proportion. Ça devrait déjà te permettre d'y voir plus clair.


A part ça, c'est un peu hors-sujet (ou plutôt hors-question) mais quand un internaute encode l'url d'un site et arrive sur une page qui lui propose comme seul choix un bouton "entrer" (quelle qu'en soit la forme), ça lui fait un clic de trop... ce n'est pas précisément recommandé.
Bonjour Crazyweb, merci d'avoir répondu à mon post et de m'avoir amené à me poser de bonnes questions !

Si la largeur d'écran et la résolution sont sans rapport, d'accord, je ne parlerai qu'en résolution.

a écrit :
- pourquoi mettre un width et height à <html> ? Sauf si plus spécialistes que moi me détrompent, ça me semble totalement inutile.


Étant moi aussi débutante, j'avais mis ce code sur mon site initial et j'avoue ne plus me souvenir pourquoi… Même le Validator du W3C ne me l'avait pas compté comme une erreur. Mais effectivement, mon site reste le même si je supprime ces codes !

a écrit :
- pourquoi spécifies-tu une hauteur à <body> ? Ton body prend la hauteur totale des éléments qu'il contient, c'est donc ces éléments qui doivent être stylés.


La maquette de mon site est particulière : la hauteur est la même sur toutes les pages, pour qu'elles soient cohérentes graphiquement. Ce serait long à expliquer ici, voici le lien vers mon site qui t'aidera à mieux comprendre : www.lucie-bodin-illustrations.fr

a écrit :
- si je peux trouver une raison à mettre un max-width sur le body (par ex. éviter qu'il ne devienne trop large sur les grands écrans avec des lignes de texte kilométriques),


Et aussi que les images ne deviennent trop pixellisées si elles sont trop grandes.

a écrit :
je ne vois pas pourquoi mettre un min-width ? Tu veux faire du responsive et tous les écrans moins larges que 800 px vont donc avoir un ascenseur horizontal ? Où est le sens ??


Le texte deviendrait illisible, notamment celui que j'ai inclus dans mes images de boutons liens.

a écrit :
- tu as réglé la hauteur de <section> à 100% donc 100% de son parent qui est <body>. Or, ton <footer> est aussi dans <body>... il y a un truc qui ne clope pas.


Effectivement, je me suis trompée dans le pourcentage de ma section, d'autant plus que j'avais bien écrit le bon pourcentage dans mes commentaires.

a écrit :
Je ne comprends d'ailleurs pas d'où tu sors ce 914px.


Au départ, la hauteur de mon body est de 960px (voir la ligne 9 de mon code css). Celle de mon footer est de 37px et le padding-top de ce footer 9px. 960-(37+9)=914px pour le bloc section.

a écrit :
Tu veux une hauteur totale fixe, OK. Mais la hauteur de ta section additionnée à celle de ton footer ne peuvent pas faire plus de 100%. Or 3.9153439% + 96.7195767 % = 100.6349206% auquels il faut encore ajouter ton pading-top.


C'est vrai, je me suis trompée dans mes calculs… Et en rajoutant les 0.7% du padding-top du footer, on arrive à 101.3349206% Merci de cette remarque ! Je vais réviser mes calculs !

a écrit :
Règle la hauteur max de ton body en pourcentage, celles de ta section et de ton footer en proportion. Ça devrait déjà te permettre d'y voir plus clair.


Quelle différence fais-tu entre "pourcentage" et "proportion" ? Dois-je écrire "max-height:100%" à mon body au lieu de 60em ? Ce serait 100% par rapport au <html> ?

J'ai supprimé les width et height de <html>.
J'ai révisé mes calculs de pourcentage de hauteur de mes blocs de manière à bien avoir un total de 100% cette fois-ci.
J'ai écrit "max-height:100%" au lieu de 'max-height:60em" dans le css du <body> (9e ligne).
Mais rien n'a changé !

Peut-être ai-je mal compris ton conseil ?