28173 sujets

CSS et mise en forme, CSS3

Bonjour,

J'ai un soucis dans la présentation de mon site, quelque soit le navigateur...

J'ai créé un tableau, de taille fixé en pixel, et je voudrais que ce tableau soit aligné horizontalement et verticalement. J'arrive bien à l'aligner horizontalement, mais pour la vertical rien n'y fait...

J'ai essayé ceci :

<body >
<table style="position:middle;" align="center" width=100 height=100 border=1>
<tr><td>blablabla</td></tr>
</table>
</body>


j'ai essayé en mettant le style
style="position:middle;" align="center"
dans le body, le résultat est le même... nul...

Est ce possible ? et si oui comment ?
Administrateur
Hello et bienvenue,

Pour commencer, "middle" n'est pas une valeur existante pour la propriété "position". Il est donc tout à fait logique que cela ne fonctionne pas.

As-tu pensé à suivre les tutoriels de positionnement Alsacréations (notamment celui-ci) ?
Modifié par Raphael (21 Jul 2006 - 13:09)
j'avais bien lu les tutoriaux, mais pas celui-ci, je vais voir si je trouve quelque chose, et je reviens.

Merci

Edit : Me voici de retour

Donc en lisant le tutorial, je trouve bien une réponse à mon problème, par contre à présent c'est mon image de fond qui n'est plus correctement affichée...

Elle s'affiche bien sous IE, mais pas sous firefox ou opéra...

<style>
                body {
                     background-position:middle;
                     background-position:center;
                     background-image:url(image/logo.jpg);
                     background-repeat:no-repeat;
                     background-color:dadada;
                     text-align: center;
                     margin:0px;
                     }
                #global {
                     position:absolute;
                     left: 50%; 
                     top: 50%;
                     width: 984px;
                     height: 594px;
                     margin-top: -297px; /* moitié de la hauteur */
                     margin-left: -492px; /* moitié de la largeur */
                    
                     }
                     </style>


Je suppose qu'il y'a une incompatibilité entre la position:absolute et la position de l'image (elle s'affiche centrée en horizontale, mais complètement en haut de la page...)
Modifié par mysouris (21 Jul 2006 - 13:30)
Administrateur
Hmm difficile de tester sans page en ligne à bidouiller.

Pour commencer, il y'a une erreur ici :
background-color:dadada;

La valeur de couleur doit être précédée d'un dièse :
background-color: #dadada;


Je te conseille d'écrire en notation raccourcie, cela évitera peut-être des doublons comme ton double "background-position" (le second écrase le premier, et "middle" n'est pas correct):

 background: #dadada url(image/logo.jpg) center center no-repeat;

Modifié par Raphael (21 Jul 2006 - 14:10)
Bonjour,

mysouris a écrit :

Je suppose qu'il y'a une incompatibilité entre la position:absolute et la position de l'image (elle s'affiche centrée en horizontale, mais complètement en haut de la page...)


Pas tout à fait.

C'est une implémentation incorrect du rôle de l'élément body qui fait que l'arrière-plan est centré verticalement par IE. Les navigateurs conformes (FF, opera) ne pourront centrer verticalement l'arrière-plan de body que si celui-ci a une hauteur non nulle.

Sans voir le code HTML, il est difficile de t'en dire plus. Mais je ne suis pas sûr que body soit le meilleur support possible pour cette image. #global serait peut-être bien tout indiqué.
Modifié par Laurent Denis (21 Jul 2006 - 15:37)
Bonjour,

Il faut éviter cette astuce pour centrer quand il s'agit d'une si grand taille. (height: 984, width 594).
La partie gauche et haute risquent d'être tout simplement inaccessibles :
- Ca sera le cas en 800*600 (environ 15% des internautes). Ils risquent de ne pas comprendre ce qui se passe et quitteront bien vite le site
- en 1024*768 le centrage ne servira à rien et ça risque d'être juste (on ne pourra pas, par exemple, garder ouvert un panneau latéral)

Bref, ça n'apportera qu'un plus esthétique à ceux qui ont une plus grande résolution et des problèmes pour les autres.
Le mieux serait d'oublier le centrage vertical (qui n'apporte pas grand chose avec une si grande hauteur) et de centrer horizontalement via les marges (valeur auto) en enlevant le positionnement absolu.
Modifié par Alan (21 Jul 2006 - 16:51)
J'avais mis l'image dans le body parce que j'avais alors pas de global, en effet à présent on peut le mettre pour le global, ca sera tout aussi bien (et on aura déjà une taille)

J'ai concu le site de manière à ce qu'il puisse être lu sous toutes les résolution (du moins pour l'instant) donc si vous pensez que cette astuce risque de poser un problème je vais l'enlever et revenir à ce que vous me proposer en centrant avec les marges.

Sinon mon site est codé ainsi :


<?php

  echo'<html>
  
    <head><link href="./css/FeuilleStyle.css" rel="stylesheet" type="text/css">
		<title>Bienvenue sur le site d\'ExChange</title>
                <style>
                  body {
                       background-position:center;
                       background-image:url(image/logo.jpg);
                       background-repeat:no-repeat;
                       background-color:#dadada;
                       text-align: center;
                       margin:0px;
                       }
           #global {
                     position:absolute;
                     left: 50%; 
                     top: 50%;
                     width: 984px;
                     height: 594px;
                     margin-top: -297px; /* moitié de la hauteur */
                     margin-left: -492px; /* moitié de la largeur */
                     }
                 
                  </style>
</head>

    <body>
    <div id="global">
    <!--sur cette page, un tableau et des includes pour afficher les bonnes pages-->

    <!--tableau de 2 colonnes sur 3 lignes, fusion de la 1 ligne pour n\'avoir qu\'une seule case taille de 984pixel et de hauteur 594pixel-->
    <table align=center valign=middle border="0" width="984px" height="594px" cellspacing="0" cellpadding="7">
    <tr height="125">
        <!--ligne prenant 984px de la taille totale de l\'écran-->
       
        <td colspan="2" align="center" bgcolor="99c000" ><img src="image/banniere.gif" /></td>
      </tr>
    <tr height="394">
      <!--menu prenant 14% de l\'espace total en largeur-->
      <td valign="top" bgcolor="99c000" width="200px" rowspan=2>'; 
      Include('menu.php'); //appel au menu dans la colonne de gauche
      
      echo'</td>
      <td valign="top">';
       echo" <div style=\"height:394px; width:763px; overflow:auto; scrollbar-face-color: #dadada;
                     scrollbar-shadow-color: #000000;
                     scrollbar-highlight-color: #dadada;
                     scrollbar-3dlight-color: #ffffff;
                     scrollbar-darkshadow-color: #000000;
                     scrollbar-track-color: #dadada;
                     scrollbar-arrow-color: #000000;\">";
Include('page_milieu.php'); // appel de la page centrale présentant la page à visionner
echo"</div>";
      echo'</td>
        </tr>
        <tr><td align="center"><HR><a href=?page=10&retour=1><font size="2"> Contact</font></a></td>
        </tr>
        </div>
        </body>
        
        </html>';

?>


C'est la page tel qu'elle est actuellement, sans les changements que vous me conseillez, et que je vais essayer de suite

Et voici ce que je viens de coder et que me donnes entière satisfaction (si ce n'est que c'est pas centré verticalment, mais puisqu'apparemment vaut mieux oublier...


body {
                       background: #dadada url(image/logo.jpg) center center no-repeat;
                       text-align: center;
                       margin:0px;
                       }
                 
                  #global {
                     width: 984px;
                     height: 594px;
                     margin-right: auto; /* moitié de la hauteur */
                     margin-left: auto; /* moitié de la largeur */
                     }


Si je ne mets pas ce qui concerne le background dans le body, j'ai un contour blanc, alors que je veux un contour gris (dadada) comme le fond de la page... là ca fonctionne !

Merci à tous mais si vous voyez encore comment améliorer ca (pour que ce soit plus conforme ou autre) je reste à l'écoute Smiley cligne
Modifié par mysouris (23 Jul 2006 - 11:21)
mysouris a écrit :
J'ai créé un tableau, de taille fixé en pixel, et je voudrais que ce tableau soit aligné horizontalement et verticalement. J'arrive bien à l'aligner horizontalement, mais pour la vertical rien n'y fait...

Est ce possible ? et si oui comment ?


Bonjour,

J'ai une solution que j'utilise de temps en temps et qui fonctionne parfaitement sous FF et Ie6 (7 je n'en sais rien)

<body leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<table height="100%" width="100%" cellSpacing=0 cellPadding=0  align=center border=0>
<tbody>
<tr>
<td> </td>
<td align=center vAlign=top> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="center" valign="middle">[b][#ff0000]placer ici tableau, image, texte, ...[/#][/b]</td>
<td> </td>
</tr>
<tr>
<td > </td>
<td align="center" valign="top"> </td>
<td> </td>
</tr>
</tbody>
</table>
</body>


Un petit exemple avec du texte : ici

En espérant que ca te sera utile.

A+,

c Smiley smile Smiley biggrin Smiley cligne lseb