Est-il possible de définir la src
valeur d'attribut en CSS? À l'heure actuelle, ce que je fais, c'est:
<img src="pathTo/myImage.jpg"/>
et je veux que ce soit quelque chose comme ça
<img class="myClass" />
.myClass {
some-src-property: url("pathTo/myImage.jpg");
Je veux le faire sans utiliser les propriétés background
ou background-image:
en CSS.
getPropertyValue("--src")
voir: jsfiddle.net/CustomElementsExamples/vjfpu3a2Réponses:
Utilisez
content:url("image.jpg")
.Solution de travail complète ( Live Demo):
Testé et fonctionnel:
Testé et ne fonctionne pas :
la source
content
àimg
, il modifie son comportement. L'image commence à ignorer les attributs de taille, et dans Chrome / Safari, elle perd les options du menu contextuel comme «Enregistrer l'image». En effet , l' affectation d' une manièrecontent
efficace convertitimg
de remplacer vide élément à quelque chose comme<span><img></span>
.Il y a une solution que j'ai découverte aujourd'hui (fonctionne sous IE6 +, FF, Opera, Chrome):
Comment ça fonctionne:
background-size
par exemple:background-size:cover;
qui adapte votre image dans l'espace alloué.Cela fonctionne également pour les images de soumission, elles restent cliquables.
Voir la démo en direct: http://www.audenaerde.org/csstricks.html#imagereplacecss
Prendre plaisir!
la source
src
attribut, c'est la technique dont vous avez besoin. +1 - m'a beaucoup aidéUne collection de méthodes possibles pour définir des images à partir de CSS
Le
:after
pseudo-élément de CSS2 ou la syntaxe la plus récente::after
de CSS3 avec lacontent:
propriété:Première recommandation W3C: Feuilles de style en cascade, niveau 2 Spécification CSS2 12 mai 1998
Dernière recommandation W3C: Sélecteurs Niveau 3 Recommandation W3C 29 septembre 2011
Cette méthode ajoute du contenu juste après le contenu de l'arborescence de documents d'un élément.
Remarque: certains navigateurs affichent expérimentalement la
content
propriété directement sur certains sélecteurs d'éléments sans tenir compte de la dernière recommandation du W3C qui définit:Syntaxe CSS2 (compatible avec l'avant):
Sélecteur CSS3:
Rendu par défaut: taille d'origine (ne dépend pas d'une déclaration de taille explicite)
mais même au moment d'écrire ces lignes, le comportement avec une
<IMG>
balise n'est toujours pas défini et bien qu'il puisse être utilisé de manière piratée et non conforme aux normes , son utilisation<img>
n'est pas recommandée !Grande méthode candidate, voir les conclusions ...
CSS1 de »
background-image:
biens:Première recommandation du W3C: feuilles de style en cascade, niveau 1 17 déc 1996
Cette propriété existe depuis le début de CSS et mérite néanmoins une mention glorieuse.
Rendu par défaut: Taille d'origine (ne peut pas être mis à l'échelle, uniquement positionné)
Cependant ,
La
background-size:
propriété de CSS3 s'est améliorée en permettant plusieurs options de mise à l'échelle:Dernier statut du W3C: Recommandation du candidat Module Contexte et frontières CSS Niveau 3 9 septembre 2014
Mais même avec cette propriété, cela dépend de la taille du conteneur.
Encore une bonne méthode candidate, voir les conclusions ...
La
list-style:
propriété de CSS2 avecdisplay: list-item
:Première recommandation du W3C: feuilles de style en cascade, spécification CSS2 de niveau 2 12 mai 1998
list-style-image:
La propriété définit l'image qui sera utilisée comme marqueur d'élément de liste (puce)display: list-item
- Cette valeur fait qu'un élément (par exemple,<li>
en HTML) génère une boîte de bloc principale et une boîte de marqueur.CSS raccourci: (
<list-style-type> <list-style-position> <list-style-image>
)Rendu par défaut: taille d'origine (ne dépend pas d'une déclaration de taille explicite)
Restrictions:
Cette méthode ne convient pas non plus à la
<img>
balise, car la conversion ne peut pas être effectuée entre les types d'éléments, et voici le hack limité et non conforme qui ne fonctionne pas sur Chrome.Bonne méthode candidate, voir conclusions ...
CSS3 de »
border-image:
biens recommandation :Dernier statut du W3C: Recommandation du candidat Module Contexte et frontières CSS Niveau 3 9 septembre 2014
Une méthode de type arrière-plan qui repose sur la spécification des tailles d'une manière plutôt particulière (non définie pour ce cas d'utilisation) et les propriétés de bordure de secours jusqu'à présent (par exemple.
border: solid
):Cet exemple illustre l'image composée uniquement en tant que décoration d' angle inférieur droit :
Il ne peut toujours pas changer un
<img>
tag »src
(mais voici un hack ), au lieu que nous pouvons décorer:Afficher l'extrait de code
Bonne méthode candidate à considérer après la propagation des normes.
Le projet de
element()
notation de CSS3 mérite également d'être mentionné:Nous utiliserons le contenu rendu de l'une des deux images cachées pour changer l' arrière-plan de l'image en
#img1
fonction du sélecteur d'ID via CSS:Notes: C'est expérimental et ne fonctionne qu'avec le
-moz
préfixe dans Firefox et uniquement surbackground
oubackground-image
propriétés, nécessite également des tailles spécifiées.Conclusions
Cela dit, explorons les balises HTML adaptées à l'affichage des images:
L'
<li>
élément [HTML4.01 +]Cas d'utilisation parfait de la méthode
list-style-image
withdisplay: list-item
.L'
<li>
élément, peut être vide, permet le contenu du flux et il est même permis d'omettre la</li>
balise de fin.Afficher l'extrait de code
Limitations: difficile à coiffer (
width:
oufloat:
pourrait aider)L'
<figure>
élément [HTML5 +]L'élément est valide sans contenu, mais il est recommandé de contenir un
<figcaption>
.Rendu par défaut: l'élément est aligné à droite, avec un rembourrage à gauche et à droite!
L'
<object>
élément [HTML4 +]L'
data
attribut est obligatoire et peut avoir un type MIME valide comme valeur!Note: une astuce pour utiliser la
<object>
balise de CSS serait de définir une mesure MimeType validex-image/x
suivie d'aucune donnée (valeur n'a pas de données après la virgule requise,
)Rendu par défaut: 300 x 150 px, mais la taille peut être spécifiée en HTML ou CSS.
le
<SVG>
tagNécessite un navigateur compatible SVG et possède un
<image>
élément pour les images rasterL'
<canvas>
élément [HTML5 +].L'
<input>
élément avectype="image"
Limites:
que Chrome suit et rend un carré vide 4x4px quand aucun texte
Solution partielle, définissez
value=" "
:Faites également attention à l'
<picture>
élément à venir dans HTML5.1 , actuellement un brouillon de travail .la source
j'ai utilisé la solution div vide, avec ce CSS:
HTML:
la source
J'ai trouvé un meilleur moyen que les solutions proposées, mais il utilise effectivement l'image d'arrière-plan. Méthode conforme (ne peut pas confirmer pour IE6) Crédits: http://www.kryogenix.org/code/browser/lir/
Le CSS:
L'ancienne image n'est pas vue et la nouvelle est vue comme prévu.
La solution soignée suivante ne fonctionne que pour webkit
la source
content
propriété ne s'applique qu'aux classes:before
et:after
pseudo. De plus, si vous devez prendre en charge IE7 ou une version antérieure, je pense que lacontent
prise en charge est inexistante. Pourtant, très tentant.content
propriété s'applique à tous les éléments. http://www.w3.org/TR/css3-content/#contentIls ont raison. IMG est un élément de contenu et CSS concerne la conception. Mais qu'en est-il lorsque vous utilisez certains éléments de contenu ou propriétés à des fins de conception? J'ai IMG sur mes pages Web qui doivent changer si je change de style (le CSS).
Eh bien, c'est une solution pour définir la présentation IMG (pas vraiment l'image) dans le style CSS.
Il fonctionne comme un charme :)
la source
background*
Voici une très bonne solution -> http://css-tricks.com/replace-the-image-in-an-img-with-css/
Pro (s) et Con (s):
(+) fonctionne avec le vecteur image qui a une largeur / hauteur relative (une chose que la réponse de RobAu ne gère pas) (+) est un navigateur croisé (fonctionne également pour IE8 +) (+) il utilise uniquement CSS. Donc pas besoin de modifier l'img src (ou si vous n'avez pas accès / ne voulez pas changer l'attribut img src déjà existant). (-) désolé, il utilise l'attribut css d'arrière-plan :)
la source
Vous pouvez définir 2 images dans votre code HTML et utiliser
display: none;
pour décider laquelle sera visible.la source
background-image
n'était donc pas une option. Je voulais desimg
balises à des fins de référencement. Votre réponse est si simple, élégante et résout tous mes obstacles! Bravo! L'utilisateur n'a pas non plus à télécharger les deux images. De plus, je peux ajouter n'importe quel nombre d'images.Non, vous ne pouvez pas définir l'attribut image src via CSS. Le plus proche que vous pouvez obtenir est, comme vous le dites,
background
oubackground-image
. Je ne recommanderais pas de le faire de toute façon car ce serait quelque peu illogique.Cependant, une solution CSS3 est à votre disposition si les navigateurs que vous ciblez sont capables de l'utiliser. Utilisez
content:url
comme décrit dans la réponse de Pacerier . Vous pouvez trouver d'autres solutions multi-navigateurs dans les autres réponses ci-dessous.la source
Mettez plusieurs images dans un conteneur "contrôlant" et changez plutôt la classe du conteneur. En CSS, ajoutez des règles pour gérer la visibilité des images en fonction de la classe du conteneur. Cela produira le même effet que le changement de
img src
propriété d'une seule image.HTML:
CSS:
Notez qu'il préchargera toutes les images, comme avec les CSS
backround-image
, mais contrairement à la modificationimg src
via JS.la source
Voie alternative
la source
Quelques données que je laisserais en HTML, mais il vaut mieux définir le src en CSS:
la source
Pour autant que je sache, VOUS NE POUVEZ PAS. CSS concerne le style et le src de l'image est le contenu.
la source
Pour réitérer une solution antérieure et souligner la pure implémentation CSS, voici ma réponse.
Une solution Pure CSS est nécessaire dans les cas où vous vous approvisionnez en contenu à partir d'un autre site, et donc vous n'avez aucun contrôle sur le HTML qui est livré. Dans mon cas, j'essaie de supprimer la marque du contenu source sous licence afin que le titulaire de licence n'ait pas à faire de publicité pour la société auprès de laquelle il achète le contenu. Par conséquent, je supprime leur logo tout en conservant tout le reste. Je dois noter que cela fait partie du contrat de mon client pour le faire.
la source
Je sais que c'est une très vieille question, mais aucune réponse ne fournit le raisonnement approprié pour expliquer pourquoi cela ne peut jamais être fait. Bien que vous puissiez "faire" ce que vous cherchez, vous ne pouvez pas le faire d'une manière valide. Pour avoir une balise img valide, elle doit avoir les attributs src et alt.
Donc, toutes les réponses donnant un moyen de le faire avec une balise img qui n'utilise pas l'attribut src encouragent l'utilisation de code non valide.
En bref: ce que vous recherchez ne peut pas être fait légalement dans la structure de la syntaxe.
Source: validateur W3
la source
Ou vous pouvez faire cela que j'ai trouvé sur le truc interweb.
https://robau.wordpress.com/2012/04/20/override-image-src-in-css/
Masquez donc efficacement l'image et remplissez l'arrière-plan. Oh quel hack mais si vous voulez une balise IMG avec du texte alternatif et un arrière-plan qui peut évoluer sans utiliser JavaScript?
Dans un projet sur lequel je travaille maintenant, j'ai créé un modèle de brindille de bloc de héros
la source
Si vous ne souhaitez pas définir une propriété d'arrière-plan, vous ne pouvez pas définir l'attribut src d'une image en utilisant uniquement CSS.
Alternativement, vous pouvez utiliser JavaScript pour faire une telle chose.
la source
En utilisant CSS, cela ne peut pas être fait. Mais, si vous utilisez JQuery, quelque chose comme ça fera l'affaire:
la source
Vous pouvez le convertir avec JS:
la source
Si vous essayez d'ajouter une image dans un bouton dynamiquement en fonction du contexte de votre projet, vous pouvez utiliser le? prendre pour référencer la source en fonction d'un résultat. Ici, j'utilise la conception mvvm pour laisser ma valeur Model.Phases [0] déterminer si je veux que mon bouton soit rempli d'images d'une ampoule allumée ou éteinte en fonction de la valeur de la phase lumineuse.
Je ne sais pas si cela aide. J'utilise JqueryUI, Blueprint et CSS. La définition de classe devrait vous permettre de styliser le bouton en fonction de ce que vous souhaitez.
la source
J'ajouterais ceci: l'image d'arrière-plan pourrait également être positionnée avec
background-position: x y;
(x horizontal y vertical). (..) Mon cas, CSS:la source
Code HTML:
Code CSS:
J'étudie le html après l'école depuis quelques jours et je voulais savoir comment faire. J'ai découvert l'arrière-plan, puis réuni 2 et 2. Cela fonctionne à 100%, j'ai vérifié, sinon assurez-vous de remplir les choses nécessaires !!! Il faut préciser la hauteur, car sans elle il n'y aurait rien !!! Je vais laisser ce shell de base que vous pouvez ajouter.
Exemple:
PS Oui je suis un utilisateur Linux;)
la source
Toute méthode basée sur
background
oubackground-image
susceptible d'échouer lorsque l'utilisateur imprime le document avec "Imprimer les couleurs et les images d' arrière-plan " est désactivée. Ce qui est malheureusement le défaut typique d'un navigateur.La seule méthode imprimable et compatible avec tous les navigateurs est celle proposée par Bronx.
la source
Chargement d'IMG src à partir d'une définition CSS, à l'aide de propriétés CSS modernes
src
définition vide sur un <IMG> déclenche le gestionnaire onerror: fonction loadIMGJSFiddle: https://jsfiddle.net/CustomElementsExamples/vjfpu3a2/
Réponses SO associées: WCPROPS
la source
Utilisez simplement HTML5 :)
la source