CSS : caler une image de fond sur un texte centré.

CSS : caler une image de fond sur un texte centré. - HTML/CSS - Programmation

Marsh Posté le 05-10-2005 à 21:07:13    

Bonjour tout le monde.
 
En fait j'ai un h1 centré (le "text-align: center" est dans le body) :

Code :
  1. h1
  2. {
  3. font-size: 1em;
  4. font-weight: bold;
  5. color: #7885A0;
  6. margin: 12px 0px 0px 0px;
  7. background: url(../images/motif_h1.png) 0 0 no-repeat;
  8. }


motif_h1.png est une image qui ne représente QUE le coin haut-gauche d'un cadre (cette image de coin part après en fondu vers la couleur de background de la page).
 
Je voudrais que cette image se cale (à un certain padding près) au tout début de mon h1 qui je le rappelle est centré et dont la longueur varie en fonction des pages (titre différent). h1 étant de type block par défaut, si l'image est en 0 0, elle se retrouve tout en haut à gauche, cad très loin du début du titre.
 
Sachant que je ne veux pas utiliser de DIV seulement pour contenir le h1 (j'ai déjà fait plein de pages alors j'aimerais éviter de retoucher l'HTML), auriez-vous une idée quant à la façon de procéder ?
 
Merci.

Reply

Marsh Posté le 05-10-2005 à 21:07:13   

Reply

Marsh Posté le 06-10-2005 à 10:21:01    

up.

Reply

Marsh Posté le 06-10-2005 à 10:36:09    

Tente un "display: inline;" sur le h1 pour que la largeur de ton element h1 s'adapte a son contenu et l'entoure sans prendre toute la largeur de la page.
 
Un exemple :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3.  
  4. <head>
  5. <title>Test</title>
  6.     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  7.     <meta http-equiv="Content-Script-Type" content="text/javascript" />
  8.     <meta http-equiv="Content-Style-Type" content="text/css" />
  9. <style type="text/css"/>
  10.  body {
  11.   text-align:    center;
  12.  }
  13.  h1 {
  14.   background-color:  red;
  15.   display:    inline;
  16.   padding:    0 10px;
  17.   background-image:  url(puce.gif);
  18.   background-repeat:  no-repeat;
  19.   background-position: 0 0;
  20.  }
  21.  p {
  22.   text-align:    left;
  23.  }
  24. </style>
  25. </head>
  26. <body>
  27. <h1>Bonjour</h1>
  28. <p>
  29.  boum boum boum
  30. </p>
  31. </body>
  32. </html>


Message édité par afbilou le 06-10-2005 à 10:46:09
Reply

Marsh Posté le 06-10-2005 à 12:21:26    

Merci afbilou, je l'avais essayé hier soir, alors oui ça marche mais problème : plus aucune possibilité d'indiquer un margin ou un padding à h1. Je suis passé après à un line-height (pour tenter de simuler un padding mais ça ne marche pas non plus), celui-ci n'est pas respecté.
 
J'arrive à peu près à faire ce que je veux avec une DIV, mais j'aurais voulu éviter.
 
En fait le problème est que je ne vois pas comment indiquer l'emplacement du début d'un texte centré (dont la largeur peut varier). Je ne sais pas si cela est possible.

Reply

Marsh Posté le 06-10-2005 à 13:50:34    

Sur un élément inline seuls les margin-top et margin-bottom ne fonctionnent pas. Padding et margin-left/right sont fonctionnels.

Reply

Marsh Posté le 06-10-2005 à 13:59:11    

Tu peux t'en sortir pour faire un margin-bottom en appliquant un margin-top sur les elements qui suivent ton h1 :
h1 + * {
margin-top:10px;
}
 
Et pour simuler un margin-top jouer sur la position relative de h1 :
h1 { position:relative; top:10px; }

Reply

Marsh Posté le 06-10-2005 à 14:02:20    

le selecteur + n'est pas reconnu sous IE

Reply

Marsh Posté le 06-10-2005 à 14:05:16    

Ah oui mais un jour faut savoir dire merde a IE ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed