414 votes

Définition de l'image d'arrière-plan à l'aide de la propriété CSS de jQuery

J'ai une image URL dans un imageUrl et j'essaie de la définir comme un style CSS, en utilisant jQuery :

$('myObject').css('background-image', imageUrl);

Cela ne semble pas fonctionner, car :

console.log($('myObject').css('background-image'));

renvoie à none .

Une idée de ce que je fais mal ?

1 votes

Quel est exactement le problème ? Jquery envoie-t-il une erreur ?

0 votes

Non, il ne le règle pas correctement. Je l'enregistre et il ne change pas.

2 votes

La première fois, jQuery n'essaie pas de deviner ce que l'utilisateur voulait dire.

985voto

Greg Points 132247

Vous voulez probablement ceci (pour que cela ressemble à une déclaration CSS background-image normale) :

$('myObject').css('background-image', 'url(' + imageUrl + ')');

0 votes

Je le faisais de cette façon - mais un espace entre 'url' et les parenthèses de gauche faisait échouer mon code. J'ai copié/collé le vôtre et j'ai compris le problème. Je vous remercie !

0 votes

J'utilise votre code dans ce script mais j'obtiens background-image : url((unknown)) ; Voici mon script : var bg_img = jQuery('.wp-show-posts-inner'). attr('data-src') ; jQuery('.wp-show-posts-inner').on('mouseover',function() { jQuery('.home-banner .bg').css('background-image', 'url(' + bg_img + ')') ; }) ; Une idée de pourquoi ?

0 votes

Url(<votre url>) ne fonctionne pas pour moi. La valeur doit être entre guillemets, c'est-à-dire url("<votre url>") ou url('<votre url>').

78voto

Arosboro Points 516

Vous devez inclure des guillemets doubles (") avant et après l'imageUrl comme ceci :

$('myOjbect').css('background-image', 'url("' + imageUrl + '")');

De cette façon, si l'image comporte des espaces, elle sera toujours définie comme une propriété.

7 votes

Dans ce cas, ce devrait être $('myObject').css('background-image', 'url(' + encodeURIComponent(imageUrl) + ')');

4 votes

Les citations ne sont pas nécessaires : stackoverflow.com/questions/2168855/css-url-are-quotes-needed

0 votes

Cela a résolu mon problème. J'avais besoin des guillemets. Mes noms d'images contiennent des espaces. Sinon, rien ne se passe. Je pouvais obtenir quelque chose comme $('.myObject').css('background-color', 'green'); pour fonctionner, mais pas pour changer l'image sans les guillemets. Merci !

48voto

Kon Points 16125

Contrairement à ce que les autres suggèrent, je trouve qu'il est plus facile d'activer les classes CSS plutôt que les paramètres CSS individuels (notamment les URL des images d'arrière-plan). Par exemple :

// in CSS 
.bg1 
{
  background-image: url(/some/image/url/here.jpg);
}

.bg2 
{
  background-image: url(/another/image/url/there.jpg);
}

// in JS
// based on value of imageUrl, determine what class to remove and what class to add.
$('myOjbect').removeClass('bg1').addClass('bg2');

2 votes

C'est une bien meilleure façon de faire les choses, car elle vous permet d'utiliser un préprocesseur css.

0 votes

C'est génial, bien mieux que la solution plus directe.

0 votes

Mais cela va charger les deux images.

16voto

Apo Points 79

Voici mon code :

$('body').css('background-image', 'url("/apo/1.jpg")');

Amuse-toi bien, mon ami.

13voto

Matt Parkins Points 1765

En complément des autres réponses, vous pouvez également utiliser "background". Ceci est particulièrement utile lorsque vous souhaitez définir d'autres propriétés relatives à la manière dont l'image est utilisée par l'arrière-plan, par exemple :

$("myObject").css("background", "transparent url('"+imageURL+"') no-repeat right top");

0 votes

Cette réponse avait plus de sens quand j'ai pensé que l'opérateur original avait utilisé background et non background-image. J'ai modifié ma réponse pour qu'elle ait plus de sens, mais je la laisse quand même ici pour la postérité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X