2009-10-19 4 views
0

Je charge dynamiquement un fichier CSS en attribuant à l'attribut style de lien une étiquette de serveur.Pourquoi l'image ne se charge-t-elle pas lors du chargement dynamique de css dans asp.net?

Tous les css se chargent correctement sauf pour l'image. Il montre juste le texte alternatif. Je le fais dans l'événement page_load.

Voici un extrait de mon balisage img:

<img class="logourl" alt="Header" /> 

Voici un css pour logourl:

.logourl 
{ 
background-image:url(../images/a-logo.png); 
width:169px; 
height:61px; 
margin-top:5px; 
} 

Quand je clic droit sur les propriétés de l'image et de vue, il est vide (taille, adresse, etc.)

Répondre

1
<img class="logourl" alt="Header" /> 

Un tag <img> peut-il avoir une propriété background-image ???? Cela n'a même pas de sens.Selon MSDN, l'objet img n'a pas cette propriété, donc je dirais qu'il est sûr de ne pas être pris en charge dans Internet Explorer. Êtes-vous sûr de ne pas vouloir un span, un lien hypertexte ou une autre propriété pour laquelle une image de fond aurait du sens?

modifier

Je viens de lire la réponse de @Justin Grant. Je suppose que vous pouvez utiliser une image d'arrière-plan sur une étiquette d'image, mais je garde ma réponse parce que cela semble une manière idiote de le faire. Si ce que vous voulez est un cadre autour de votre image, je voudrais créer un div ou span avec une largeur et une hauteur, et un img légèrement plus petit à l'intérieur.

+0

J'ai essayé de faire

, mais rien ne s'affiche. – Xaisoft

+0

Chaque fichier css auquel j'ai dynamiquement affecté le lien a une image différente pour la classe logourl. – Xaisoft

0

Pour mettre une image d'arrière-plan sur une étiquette IMG, selon http://www.contentwithstyle.co.uk/content/css-background-image-on-html-image-element vous devrez appliquer un remplissage CSS et assurez-vous que vous utilisez display: block.

En outre, s'il s'agit d'un problème de chemin de répertoire, l'image doit être relative à l'emplacement du fichier CSS dont elle est référencée. Essayez d'utiliser un chemin absolu pour vérifier que c'est effectivement le problème, puis expérimentez avec différents chemins relatifs pour voir si cela est résolu. Si cela n'est toujours pas résolu à ce stade, je suggère d'essayer Fiddler (www.fiddlertool.com) qui vous permettra de voir les requêtes HTTP en cours, en particulier l'URL demandée par votre navigateur. Assurez-vous de vider votre cache avant de recharger la page sous Fiddler, vous serez donc certain de faire la demande et de ne pas retirer du cache. Quoi qu'il en soit, il y aura trois cas possibles:

  1. Fiddler ne vous demande pas d'URL du tout. Fiddler montre l'URL de l'image demandée, mais il montre une erreur 404 (non trouvé) ou autre erreur. cela signifie que la mauvaise URL est demandée ou qu'il y a un problème avec la diffusion d'images de ce dossier sur votre site Web
  2. Fiddler affiche l'URL correcte et obtient un statut 200 (succès) du serveur. Si cela arrive, je suis perplexe!

Cliquez avec le bouton droit de la souris pour afficher uniquement le code SRC d'un tag IMG. Lorsque vous utilisez un arrière-plan CSS, vous avez besoin de la source de vue.

+0

Lorsque je regarde la source, je vois la feuille de style a chargé dans la tête et l'image est Header Xaisoft

+1

ce comportement est attendu. comme indiqué ci-dessus, le clic droit fonctionne uniquement pour l'attribut SRC, pas pour les images d'arrière-plan définies via CSS. Vous devrez suivre les recommandations de la page ci-dessus, ou (encore mieux) envisager d'utiliser un DIV au lieu d'un IMG. –

+0

J'ai essayé un div et un span et cela n'a pas fonctionné non plus. – Xaisoft

0

Je n'appellerais pas cela le chargement dynamique du fichier CSS. Vous définissez l'attribut dans la balise de lien de manière dynamique, mais le fichier CSS est chargé de la même manière que tout autre fichier CSS. Le navigateur ne voit aucune différence par rapport aux autres balises de lien, de sorte que l'URL définie dynamiquement ne fait pas partie du problème.

Où sont situés les fichiers image et css? Rappelez-vous que l'URL est relative à l'emplacement du fichier CSS et non à l'emplacement de la page.

Notez que même si vous essayez de définir l'image d'arrière-plan pour l'image, il affichera toujours le texte alt sur le dessus de l'image et indiquera que l'image n'est pas chargée. L'attribut background-image ne définit pas la source de l'image. Vous devriez simplement utiliser un élément div au lieu de l'élément image.

+0

images sont dans le dossier racine/images et les fichiers css sont dans le dossier racine/css – Xaisoft

+0

@Xaisoft: Alors il semble correct ... Vérifiez le nom du fichier à nouveau ... Ensuite, essayez d'ajouter src = "" dans la balise image afin que ce n'est pas cassé, ou essayez une balise div à la place. – Guffa

+0

J'ai ajouté src = "" et maintenant il montre les propriétés telles que le protocole et la taille de l'image, mais il montre seulement le chemin racine de base (http: // localhost), pas http: // localhost/images /a-logo.png. – Xaisoft

Questions connexes