Se connecter avec
S'enregistrer | Connectez-vous

Background-image et css

Dernière réponse : dans Programmation

Bonjours à tous:
J'ai un petit souci avec une instruction css (background-image) qui ne fonctionne pas (malgré de nombreuses et diverses tentatives) lorsqu'elle est incorporée à mon fichier css mais qui fonctionne parfaitement lorsqu'elle est incorporée à la balise body de ma page html.
Auriez-vous une idée ?
Voici les codes:
Dans mon css
  1. body
  2. {
  3. [b]/* background-image:url("fond_page.jpg"); Ne fonctionne pas !*/[/b]
  4. background-repeat:repeat;
  5. background-attachment:fixed;
  6. margin-top:15px;
  7. padding:0px;
  8. margin-bottom:15px;
  9. font-size:13px;
  10. /* background-color:#CCCCCC; */
  11. font-family:Times New Roman, sans-serif;
  12. }

Dans mon html
  1. <body style="background-image:url(fond_page.jpg);">

Autres pages sur : background image css

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

'lut,

#123456 pour la couleur, c'était juste un exemple... à toi de mettre ce que tu souhaites !

Ton image... elle fait quel poids ?, quelles sont ses dimensions ?... et surtout, existe-t-elle à la racine de ton serveur ?
En effet, tu n'indiques pas de chemin vers fond_page.jpg, ce qui sous-entend qu'elle est enregistrée à la racine du serveur, là où sont stockés les fichiers html et/ou php...

Jettes un oeil aux cours sur le CCS... c'est toujours très utile pour apprendre à simplifier le code
  1. body {
  2. background: #123456 url(fond_page.jpg) repeat left top;
  3. /* background-repeat:repeat; */A SUPPRIMER
  4. background-attachment:fixed;A SUPPRIMER
  5. margin-top:15px;
  6. padding:0px;
  7. margin-bottom:15px;
  8. font-size:13px;
  9. /* background-color:#CCCCCC; */A SUPPRIMER
  10. font-family:Times New Roman, sans-serif;
  11. }

En 4 lignes...
  1. body {
  2. background: #123456 url(./fond_page.jpg) repeat fixed left top;
  3. margin:15px 0px;
  4. padding:0px;
  5. font: normal normal normal 13px/1.2em Times New Roman, sans-serif;
  6. }

;) 
Expert Programmation

Bonjour,

En CSS, il vaut mieux écrire:
  1. body {
  2. background: #123456 url(./dossier/image.gif) repeat left top;
  3. background-attachment: fixed;
  4. ...
  5. }
  6. ...


Au passage, tu remarqueras que le nom de l'image n'est pas entre guillemets !

A+

Merci pour ta réponse.

Avant de poser ma question, j'avais fait un petit tour sur différents sites traitant du sujet. J'y ai lu l'instruction background-image écrite de différentes façons: avec double cotes, avec simple cotes et sans cotes (comme tu le préconises). J'avais, bien entendu, tenté toutes les options possibles sans que cela ne donne de résultat.
J'ai suivis ton conseil en modifiant l'instruction css comme ceci :

  1. body
  2. {
  3. [b]background: #123456 url(fond_page.jpg) repeat left top;[/b]
  4. /* background-repeat:repeat; */
  5. background-attachment:fixed;
  6. margin-top:15px;
  7. padding:0px;
  8. margin-bottom:15px;
  9. font-size:13px;
  10. /* background-color:#CCCCCC; */
  11. font-family:Times New Roman, sans-serif;
  12. }


Bien entendu, j'ai masqué l'instruction background-image implémentée dans le fichier html.
Le seul résultat est l'apparition d'un background couleur, ce qui était déjà le cas avec l'utilisation de la fonction background-color. Mais toujours pas d'image de fond.
(Petite précision, les 3 fichiers css, html et jpg sont au même niveau d'arborescence).

On ne donne jamais assez de précisions sur la situation existante.
Voilà donc mon domaine de travail.
Tout se passe dans un répertoire local (ma machine) sur laquelle je mets au point une révision de mon site personnel qui ne contient que du html, du css et du java.
Le poids de l'image en question est minuscule (7 Ko)
Par contre j'ai commis une petite bévue en prétendant que, tout comme les deux autres fichiers concernés, mon fichier css se trouvait à la racine de ce répertoire. Car, en réalité, il se trouve dans un sous-répertoire nommé "Style" (où réside mes fichiers de style).
La solution était là.
En effet: l'image était à référencer à partir de l'adresse du fichier css et non à partir de l'adresse du fichier html.
Dès lors, ma ligne de commande doit s'écrire comme ceci (tout en respectant les prescrits déontologiques):
  1. body
  2. {
  3. background-image:url(../fond_page.jpg); (pour remonter du niveau Style à la racine)
  4. background-repeat:repeat;
  5. background-attachment:fixed;
  6. margin-top:15px;
  7. padding:0px;
  8. margin-bottom:15px;
  9. font-size:13px;
  10. /* background-color:#CCCCCC; */ (que je conserve en commentaire)
  11. font-family:Times New Roman, sans-serif;
  12. }

Et cette fois: bingo !
LudoTools, merci pour tes interventions, elles m'ont permis d'y voir clair.

OK, merci pour le conseil.
Toutefois je ne prétends pas être suffisamment aguerri pour consigner mes codes autrement que de façon académique avec pour objectif, un projet réalisé en simple dilettante. Maintenant que celui-ci est bien en place et a une certaine notoriété de par son contenu, je m'attache un peu plus à son enveloppe.
Les questions ne vont pas manquer à commencer par celle-ci à laquelle j'ai trouvé une réponse (sur je ne sais plus quel site) mais pas la solution.
  1. /* ATTENTION :
  2. Le seul attribut de mise en forme qui reste dans le marquage de la page est l'attribut cellspacing (espacement des cellules) de la balise <table>. Pour autant que je sache, il n'y a aucun moyen de contrôler cet attribut particulier avec CSS. Logiquement, l'espacement des cellules semble correspondre aux marges dans le modèle CSS, mais la modification de l'attribut marge des cellules n'a aucun impact sur leur espacement au sein d'un tableau.
  3. border-collapse:separate; avec border-spacing:10px; ne fonctionne pas */
  4.  
  5.  
  6. table /* pour toutes les tableaux */
  7. {
  8. /* border-collapse: collapse; /*-> bordures collées */
  9. style-border: none; /* pas de bordures affichées */
  10. margin:0px;
  11. border-spacing:10px;
  12. }

Foutus css...
Expert Programmation

'lut !

Ceci fonctionne parfaitement... border-spacing à le même effet que cellspacing en hteumeuleu :) 
  1. <html>
  2. <head>
  3. <style type="text/css">
  4. table, th {
  5. border-collapse:separate;
  6. border-spacing:20px;
  7. border:1px solid black;
  8. }
  9.  
  10. td {
  11. border:1px dotted red;
  12. padding:5px;
  13. }
  14. </style>
  15. </head>
  16.  
  17. <body>
  18. <table>
  19. <tr>
  20. <th>Colonne 1</th>
  21. <th>Colonne 2</th>
  22. <th>Colonne 3</th>
  23. </tr>
  24. <tr>
  25. <td>Cellule 1.1</td>
  26. <td>Cellule 1.2</td>
  27. <td>Cellule 1.3</td>
  28. </tr>
  29. <tr>
  30. <td>Cellule 2.1</td>
  31. <td>Cellule 2.2</td>
  32. <td>Cellule 2.3</td>
  33. </tr>
  34. <tr>
  35. <td>Cellule 3.1</td>
  36. <td>Cellule 3.2</td>
  37. <td>Cellule 3.3</td>
  38. </tr>
  39. </table>
  40. </body>
  41. </html>


Mais bien sûr, si tu indiques border-collapse: collapse ... et bien les bordures sont collées, comme demandé !
Donc border-spacing n'a aucun effet ; ce qui est logique, puisqu'on les veut collées, elles ne peuvent pas être espacées de 20px...

Quant à padding au niveau de la cellule, cela ne fait que ce que ça doit faire... mettre un "padding" (un espace à l'intérieur de la cellule entre son bord et son contenu...).

Citation :
Mais bien sûr, si tu indiques border-collapse: collapse ... et bien les bordures sont collées, comme demandé !
Je n'en disconviens pas. C'est pourquoi la ligne incriminée est en commentaire.
De plus, mon souhait était de passer le paramètre via css (question souplesse) et non de l'indiquer dans le code html. Comme cela ne fonctionne pas, j'ai dû implémenter cellspacing dans la balise <table>. C'est toutefois un moindre mal dans la mesure où je ne pense pas devoir modifier ce paramètre (qui se répète tout de même sur plus de 200 pages…)
Expert Programmation

DePhil a dit :
..Comme cela ne fonctionne pas, j'ai dû implémenter cellspacing dans la balise <table>....

oui... mais
Citation :
table /* pour toutes les tableaux */
{
/* border-collapse: collapse; /*-> bordures collées */
style-border: none; /* pas de bordures affichées */

là, il y a une erreur de saisie... c'est peut-être pour cela que ça ne fonctionne pas...

Citation :
là, il y a une erreur de saisie... c'est peut-être pour cela que ça ne fonctionne pas...

Dans le code, l'ensemble est pourtant bien pris en commentaire. Si j'ai bonne souvenance, un commentaire ouvrant (/*) ne réagit qu'au seul commentaire fermant (*/).
Ensuite, ce code a été mis en commentaire après de multiples essais.
Expert Programmation

Gasp! En quoi MA réponse mérite-t-elle d'être élue "meilleure réponse" ?
Si tu veux en choisir une autre, demande-le moi, je peux faire le changement. :) 
Expert Programmation

Oki. Si par ailleurs tu cherches à lier un message, tu peux utiliser l'adresse de ce message que tu trouveras justement sous la date de celui-ci. Par exemple, le message de LudoTools qui nous intéresse est le t49242.
Lassé par la pub ? Créez un compte