28172 sujets

CSS et mise en forme, CSS3

J'ai testé mon squelette de site sur plusieurs navigateurs, en plusieurs résolutions, et je n'ai rencontré aucun problème or le ctrl+molette à certains grossissements fait, par exemple, déborder le .content d'un pixel sous Chrome ou décolle mon menu sous Firefox.

On me dit que ce sont les font: qui déforment la page sauf que même en ayant retiré toutes ces propriétés, rien ne change.
Je me suis demandé si convertir mon site en % pour qu'il s'adapte à la résolution n'était pas finalement la solution sauf qu'un site avec une bannière centrale n'est apparemment pas fait pour être fluide étant donné que le ctrl+molette n'agrandit pas les images vu qu'elles perdraient leurs proportions en faveur d'un effet distordu.

Bref, que faire pour que l'agrandissement de la police ne gâche pas tout ?

Deux questions mineures tant que nous y sommes :
-Mes blocs sous le header sont tous décalés vers le haut en relative sauf que cela laisse un espace vide en bas de page vu que le .container fait son calcul en fonction de tous les blocs comme si ceux-ci étaient présents à leur place intiale.
-Comme vous pouvez le voir, mon contenu est entouré par une sorte de bordure semi-transparente grâce à une div que ne prend pas en compte IE. Je pense passer à une solution image si celle-ci est possible mais j'aimerais comprendre en quoi la propriété box-shadow annule l'héritage de la div en son sein, permettant alors de placer une opacité [background-color: rgba(255,255,255, .8);] sans que cette div intérieure ne l'hérite ?

Mon html :

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Modele</title>
<link href="CSS_modele.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div class="container">
  <div class="header"></div>
 <!-- end .header -->
<div class="menu_boite">
<ul>
<li><a href="#">Menu01</a></li>
<li><a href="#">Menu02</a></li>
<li><a href="#">Menu03</a></li>
</ul>
</div>
<div class="content-border">
  <div class="content">
    <h1>News</h1>
    <p>Notez que le code CSS de ces mises en forme contient une grande quantité de commentaires. Si vous travaillez principalement en mode Création, jetez un coup d'œil au code afin d'obtenir des conseils sur l'utilisation du code CSS pour les mises en forme fixes. Vous pouvez supprimer ces commentaires avant de lancer votre site. Pour en savoir plus sur les techniques utilisées dans ces mises en forme CSS, consultez l'article suivant sur le centre pour développeurs Adobe : <a href="http://www.adobe.com/go/adc_css_layouts">http://www.adobe.com/go/adc_css_layouts</a>.</p>
    <h2>Mise en page</h2>
    <p>Comme il s'agit d'une mise en page à une colonne, le .content n'est pas flottant. </p>
    <h3>Remplacement du logo</h3>
    <p>Dans la zone .header, un espace réservé pour image a été utilisé à l'endroit où vous souhaiterez probablement placer un logo. Il est conseillé de supprimer l'espace réservé et de le remplacer par votre logo lié. </p>
    <p> Notez que si vous utilisez l'inspecteur Propriétés pour accéder à l'image de votre logo à l'aide de la zone SRC (au lieu de supprimer l'espace réservé puis de le remplacer), vous devez veiller à supprimer les propriétés intégrées d'arrière-plan et d'affichage. Ces styles intégrés servent uniquement à permettre l'affichage de l'espace réservé du logo dans des navigateurs à des fins de démonstration. </p>
    <p>Pour supprimer les styles intégrés, assurez-vous que le panneau Styles CSS est bien en mode Actuel. Sélectionnez l'image puis, dans le volet Propriétés du panneau Styles CSS, cliquez à l'aide du bouton droit puis supprimez les propriétés d'affichage et d'arrière-plan. Bien entendu, vous pouvez toujours accéder directement au code et y supprimer les styles intégrés depuis l'image ou l'espace réservé.</p>
    <p>Dans la zone .header, un espace réservé pour image a été utilisé à l'endroit où vous souhaiterez probablement placer un logo. Il est conseillé de supprimer l'espace réservé et de le remplacer par votre logo lié. </p>
    <p> Notez que si vous utilisez l'inspecteur Propriétés pour accéder à l'image de votre logo à l'aide de la zone SRC (au lieu de supprimer l'espace réservé puis de le remplacer), vous devez veiller à supprimer les propriétés intégrées d'arrière-plan et d'affichage. Ces styles intégrés servent uniquement à permettre l'affichage de l'espace réservé du logo dans des navigateurs à des fins de démonstration. </p>
    <p>Pour supprimer les styles intégrés, assurez-vous que le panneau Styles CSS est bien en mode Actuel. Sélectionnez l'image puis, dans le volet Propriétés du panneau Styles CSS, cliquez à l'aide du bouton droit puis supprimez les propriétés d'affichage et d'arrière-plan. Bien entendu, vous pouvez toujours accéder directement au code et y supprimer les styles intégrés depuis l'image ou l'espace réservé.</p>
  </div></div><!-- end .content -->
  <div class="footer">
    <p>Pied de page</p>
  </div><!-- end .footer -->
</div><!-- end .container -->
</body>
</html>


Mon CSS :


body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
	margin: 0;
	padding: 0;
}

body {
	color: #000000;
	background-color: #000000;
}
.container {
	padding: 0px;
	width: 1008px;
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: auto;
	background-color: rgb(0,0,0);
	height: auto;
}

/* ~~ Sélecteurs d'éléments/balises ~~ */
ul, ol, dl { /* En raison des variations entre les navigateurs, il est conseillé d'attribuer une valeur de zéro aux marges intérieures et aux marges des listes. A des fins de cohérence, vous pouvez définir les valeurs désirées dans cette zone ou dans les éléments de liste (LI, DT, DD) qu'elle contient. N'oubliez pas que les paramètres que vous définissez ici se répercuteront sur la liste .nav, sauf si vous rédigez un sélecteur plus spécifique. */
	padding: 0;
	margin: 0;
}
h1, h2, h3, h4, h5, h6, p {
	margin-top: 0;	 /* la suppression de la marge supérieure résout un problème où les marges sortent de leur div conteneur. La marge inférieure restante l'éloignera de tout élément qui suit. */
	padding-right: 15px;
	padding-left: 15px;
}
/* ~~ La définition du style des liens de votre site doit respecter cet ordre, y compris le groupe de sélecteurs qui créent l'effet de survol. ~~ */
a:link {
	color: #f41616; /* à moins que vous ne définissiez un style particulièrement exclusif pour vos liens, mieux vaut prévoir un soulignement, qui garantit une identification visuelle rapide. */
	text-decoration: none;
}
a:visited {
	color: #e70606;
	text-decoration: none;
}
a:hover   { /* ce groupe de sélecteurs offrira à un navigateur au clavier la même expérience de survol que celle d'une personne employant la souris. */
	text-decoration: underline;
}

/* ~~ aucune largeur n'est attribuée à l'en-tête. Il occupera toute la largeur de votre mise en page. Il contient un espace réservé pour une image, qui doit être remplacé par votre logo lié. ~~ */
.header {
	width: 1004px;
	-moz-border-radius: 0px 0px 8px 8px;
	-webkit-border-radius: 0px 0px 8px 8px;
	border-radius: 0px 0px 8px 8px;
	behavior: url(/ressources/PIE.htc);
	z-index: 1;
	height: 490px;
	background-color: #F00;
	margin-right: auto;
	margin-left: auto;
	position: relative;
	border: 2px solid #000;
	background-image: url(ressources/BANDDMER1008.jpg);
}
.menu_boite  {
	background-color: #FFF;
	width: 944px;
	position: relative;
	-moz-border-radius: 30px 30px 0px 0px;
	-webkit-border-radius: 30px 30px 0px 0px;
	border-radius: 30px 30px 0px 0px;
	behavior: url(/ressources/PIE.htc);
	z-index: 2;
	color: #FFF;
	height: 40px;
	top: -44px;
	margin-right: auto;
	margin-left: auto;
	border: 2px solid #000;
}
.menu_boite ul li {
	margin-right: 5px;
	float: left;
	list-style-type: none;
	margin-left: 5px;
}
.menu_boite ul li a {
	display: block;
}
.content-border {
	-moz-box-shadow: 0 0 1px gray;
	-webkit-box-shadow: 0 0 1px gray;
	-moz-border-radius: 0px 0px 8px 8px;
	-webkit-border-radius: 0px 0px 8px 8px;
	border-radius: 0px 0px 8px 8px;
	behavior: url(/ressources/PIE.htc);
	margin-right: auto;
	margin-left: auto;
	z-index: 0;
	width: 948px;
	background-color: rgba(255,255,255, .8);
	position: relative;
	top: -74px;
	padding: 30px;
}

/* ~~ Informations de mise en page. ~~ 

1) La marge intérieure n'est placée qu'en haut et/ou en bas de la div. Les éléments à l'intérieur de cette div posséderont une marge intérieure sur les côtés. Vous évitez ainsi de devoir recourir à des « calculs de modèle de boîte ». N'oubliez pas que si vous ajoutez une marge intérieure latérale ou une bordure à la div proprement dite, elle sera ajoutée à la largeur que vous définissez pour créer la largeur totale. Vous pouvez également supprimer la marge intérieure de l'élément dans la div et placer une seconde div à l'intérieur, sans largeur et possédant une marge intérieure appropriée pour votre concept.

*/

.content {
	-moz-border-radius: 0px 0px 8px 8px;
	-webkit-border-radius: 0px 0px 8px 8px;
	border-radius: 0px 0px 8px 8px;
	behavior: url(/ressources/PIE.htc);
	background-color: #FFF;
	padding: 5px;
	z-index: 2;
	border-right-width: 2px;
	border-bottom-width: 2px;
	border-left-width: 2px;
	border-right-style: solid;
	border-bottom-style: solid;
	border-left-style: solid;
	border-right-color: #000;
	border-bottom-color: #000;
	border-left-color: #000;
}
.content h1 {
}

/* ~~ Pied de page ~~ */
.footer {
	-moz-border-radius: 8px;
	-webkit-border-radius: 8px;
	border-radius: 8px;
	behavior: url(/ressources/PIE.htc);
	background-color: #999999;
	width: 1004px;
	margin-right: auto;
	margin-bottom: 10px;
	margin-left: auto;
	height: 20px;
	position: relative;
	top: -69px;
	border: 2px solid #FFF;
}

/* ~~ classes flottant/effacement diverses ~~ */
.fltrt {  /* cette classe peut servir à faire flotter un élément depuis la droite sur votre page. L'élément flottant doit précéder l'élément à côté duquel il doit apparaître sur la page. */
	float: right;
	margin-left: 8px;
}
.fltlft { /* cette classe peut servir à faire flotter un élément depuis la gauche sur votre page. L'élément flottant doit précéder l'élément à côté duquel il doit apparaître sur la page. */
	float: left;
	margin-right: 8px;
}


Et merci d'avance à ceux qui prendront le temps de m'aider.
Biiip a écrit :
J'ai testé mon squelette de site sur plusieurs navigateurs, en plusieurs résolutions, et je n'ai rencontré aucun problème or le ctrl+molette à certains grossissements fait, par exemple, déborder le .content d'un pixel sous Chrome ou décolle mon menu sous Firefox.


L'interopérabilité parfaite au pixel près, même les pros ont des difficultés. Maintenant en ce qui concerne les résolutions, regarde plutôt du côté des media queries .

Et pour le zoom, évite les marges négatives et les positions.
Modifié par jmlapam (04 Feb 2012 - 00:27)
J'ai retiré toutes mes positions (ça m'a l'air quand même difficile de créer une architecture sans utiliser le moindre positionnement) ainsi que toutes mes valeurs négatives. L'épine dans le pied demeure.
En fait, j'ai trouvé quel est le problème en reprenant tout depuis le début.

C'est très simple, mon header avec un fond imagé transparent contient une div interne qui supporte la bannière et une bordure, ses coins inférieurs étant arrondis pour laisser voir le fond transparent. (Je pense être clair mais n'hésitez pas à demander des captures d'écran.)
C'est l'imbriquement d'une div dans une autre qui créé ce problème de déformation de mise en page puisqu'il apparaît dès le simple ajout de ma bannière ou de ma bordure.

Donc, impossible d'imbriquer deux blocs l'un dans l'autre (généralement pour gérer les bordures) sans se coltiner ce problème ?

"jmlapam" a écrit :
Maintenant en ce qui concerne les résolutions, regarde plutôt du côté des media queries .


Je pensais que le zoom calculait la mise en page différemment des résolutions vu qu'on m'a dit qu'il se référait à l'écriture et que ce n'avait donc rien à voir avec les Media Queries. (Je rappelle que je n'ai eu aucun problème sous les résolutions les plus courantes.) D'ailleurs, dans mon cas, ça ne servirait que si j'avais un site fluide avec une largeur en pourcentage, pour en bloquer l'expansion ou la contraction, non ?

Sur ce point ctrl+molette = proportions "propres" des résolutions standards ?
Modifié par Biiip (04 Feb 2012 - 21:18)
a écrit :
(Je pense être clair mais n'hésitez pas à demander des captures d'écran.)


Screen shot de l'effet obtenu et de l'effet recherché ! Ce sera parfait Smiley biggrin
Voili voilou !

Ici, il s'agit de la page "idéale". (Si on ne prend pas en compte que le .container en fond noir se poursuit trop loin à cause des positionnements négatifs, autre problème.) Je travaille en 1024x768 et je n'ai pas accès, là, à une meilleure résolution pour faire mes vérifications. Ne faites pas attention à la bannière, aux couleurs, etc, c'est pour remplir :

http://img35.imageshack.us/img35/5553/chromeideal.png

Ici, il s'agit des déformations. J'ai viré le menu pour que vous ne vous focalisiez pas dessus ni sur les positionnements négatifs. Avec le menu, il arrive que celui-ci sur Firefox se décale de quelques pixels vers le haut mais je n'arrive plus à reproduire cet état pour le moment.

Chrome :

http://img684.imageshack.us/img684/8756/chromezy.png

Firefox :

http://img94.imageshack.us/img94/7766/firefoxyh.png

Mes captures ne sont pas très belles donc pour résumer, dans chrome le content a l'air d'avoir rétréci à moins que ce ne soit le header et le footer qui n'aient grandi, dans Firefox c'est le content+header (soit deux div englobantes par rapport à la bannière et au texte) qui monte d'un pixel. Il y a un léger décalage vertical aussi ce qui fait que les perpendiculaires bleues ne se touchent plus.
Modifié par Biiip (05 Feb 2012 - 00:47)
Biiip a écrit :
ça m'a l'air quand même difficile de créer une architecture sans utiliser le moindre positionnement


Faux.


Pour le reste, j'ai bien distingué les résolutions du zoom dans mes indications donc je ne comprends pas trop ta réaction.
"jmlapam" a écrit :
Pour le reste, j'ai bien distingué les résolutions du zoom dans mes indications donc je ne comprends pas trop ta réaction.


On est donc d'accord, ma question n'a rien à voir avec les résolutions.

"jmlapam" a écrit :
Faux.


On s'éloigne pour moitié de mes interrogations (le zoom et l'imbriquement de blocs) mais si je comprends bien, sans utiliser de positionnement, je ne suis en rien limité ? Donc, concrètement, comment est-ce que je fais pour le menu du premier screen ? Je ne peux pas opérer de chevauchement de blocs vu que le z-index demande un positionnement relatif ou absolu. Il faut que je créé un nouveau bloc qui se placera sous la bannière sauf qu'au lieu de gérer les arrondis, les bordures et les fonds (m'obligeant à découper ma bannière - ça va être drôle lorsque je voudrais en générer au hasard) avec le CSS, je devrais passer par des images ?

EDIT : bon, apparemment, pas besoin de z-index pour que mon menu soit au-dessus de l'en-tête et une simple bordure supérieure suffisent.
Enfin, ce n'est toujours pas ça qui va m'aider...
Modifié par Biiip (06 Feb 2012 - 02:39)