Je crée un tableau des taux d'appels pour développer / réduire pour l'entreprise pour laquelle je travaille. J'ai actuellement une table avec un bouton en dessous pour le développer, le bouton dit "Expand". Il est fonctionnel, sauf que j'ai besoin du bouton pour passer à "Réduire" quand il est cliqué, puis bien sûr revenir à "Développer" quand il est à nouveau cliqué. L'écriture sur le bouton est une image de fond.
Donc, fondamentalement, tout ce dont j'ai besoin est de changer l'image d'arrière-plan d'un div quand il est cliqué, sauf un peu comme une bascule.
Aug 9 '10 at 0:42
à SO, c'est peut-être pourquoi :(Réponses:
Devrait faire l'affaire, il suffit de le brancher dans un événement de clic sur l'élément
la source
Personnellement, j'utiliserais simplement le code JavaScript pour basculer entre 2 classes.
Demandez au CSS de décrire tout ce dont vous avez besoin sur votre div MOINS la règle d'arrière-plan, puis ajoutez deux classes (par exemple: développées et réduites) en tant que règles avec chacune l'image d'arrière-plan correcte (ou la position d'arrière-plan si vous utilisez un sprite).
CSS avec différentes images
Ou CSS avec image-sprite
Ensuite...
Code JavaScript avec images
JavaScript avec sprite
Remarque: l'élégant toggleClass ne fonctionne pas dans Internet Explorer 6, mais la méthode ci
addClass
- dessous /removeClass
fonctionnera bien dans cette situation égalementLa solution la plus élégante (malheureusement pas compatible avec Internet Explorer 6)
Pour autant que je sache, cette méthode fonctionnera sur tous les navigateurs, et je me sentirais beaucoup plus à l'aise avec le CSS et les classes qu'avec les changements d'URL dans le script.
la source
Il existe deux façons différentes de modifier une image CSS d'arrière-plan avec jQuery.
$('selector').css('backgroundImage','url(images/example.jpg)');
$('selector').css({'background-image':'url(images/example.jpg)'});
Regardez attentivement pour noter les différences. Dans le second, vous pouvez utiliser le CSS conventionnel et chaîne plusieurs propriétés CSS ensemble.
la source
Si vous utilisez un sprite CSS pour les images d'arrière-plan, vous pouvez augmenter le décalage d'arrière-plan de +/- n pixels selon que vous étiez en train de développer ou de réduire. Pas une bascule, mais plus proche que d'avoir à changer d'URL d'image d'arrière-plan.
la source
Voici comment je le fais:
CSS
JS
la source
.toggleClass()
fonction jQuery .Une façon de le faire est de mettre les deux images dans le HTML, à l'intérieur d'un SPAN ou DIV, vous pouvez masquer la valeur par défaut soit avec CSS, soit avec JS au chargement de la page. Ensuite, vous pouvez basculer sur le clic. Voici un exemple similaire que j'utilise pour mettre des icônes gauche / bas sur une liste:
la source
Cela fonctionne sur tous les navigateurs actuels sur WinXP. Fondamentalement, il suffit de vérifier quelle est l'image d'arrière-plan actuelle. Si c'est image1, montrez image2, sinon montrez image1.
Le truc jsapi charge juste jQuery à partir du CDN Google (plus facile pour tester un fichier divers sur le bureau).
Le remplacement est pour la compatibilité entre les navigateurs (opéra et ie ajouter des citations à l'url et firefox, chrome et safari supprimer les citations).
la source
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
Le mien est animé:
la source
J'ai fait le mien en utilisant des expressions régulières, car je voulais conserver un chemin relatif et ne pas utiliser ajouter la fonction addClass. Je voulais juste le compliquer, lol.
la source
Ancien article, mais cela vous permettrait d'utiliser un sprite d'image et d'ajuster la répétition ainsi que le positionnement en utilisant le raccourci pour la propriété css (arrière-plan, répétition, en haut à gauche).
la source
J'ai trouvé une solution dans un forum, Toggle Background Img .
la source
Les sprites CSS fonctionnent mieux. J'ai essayé de changer de classe et de manipuler la propriété 'background-image' avec jQuery, aucune n'a fonctionné. Je pense que c'est parce que les navigateurs (au moins le dernier Chrome stable) ne peuvent pas "recharger" une image déjà chargée.
Bonus: les sprites CSS sont plus rapides à télécharger et plus rapides à afficher. Moins de requêtes HTTP signifie un chargement de page plus rapide. Réduire le nombre de HTTP est le meilleur moyen d'améliorer les performances frontales, je recommande donc de suivre cette voie tout le temps.
la source
Il s'agit d'une réponse assez simple qui modifie l'arrière-plan du site avec une liste d'éléments
la source
J'utilise toujours également un horodatage pour empêcher les navigateurs de mettre l'image en cache. Par exemple, si l'utilisateur fait tourner son avatar, il sera souvent mis en cache et semblera ne pas changer.
la source