Estoy haciendo una tabla de tarifas de llamadas de expansión / colapso para la compañía para la que trabajo. Actualmente tengo una tabla con un botón debajo para expandirla, el botón dice "Expandir". Es funcional, excepto que necesito que el botón cambie a "Contraer" cuando se hace clic y luego, por supuesto, de nuevo a "Expandir" cuando se vuelve a hacer clic. La escritura en el botón es una imagen de fondo.
Básicamente, todo lo que necesito es cambiar la imagen de fondo de un div cuando se hace clic, excepto como una palanca.
Aug 9 '10 at 0:42
en SO tal vez por eso, :(Respuestas:
Debería hacer el truco, solo conéctelo en un evento de clic en el elemento
fuente
Personalmente, solo usaría el código JavaScript para cambiar entre 2 clases.
Haga que el CSS describa todo lo que necesita en su div MENOS la regla de fondo, luego agregue dos clases (por ejemplo: expandido y contraído) como reglas, cada una con la imagen de fondo correcta (o la posición de fondo si usa un sprite).
CSS con diferentes imágenes
O CSS con sprite de imagen
Luego...
Código JavaScript con imágenes
JavaScript con sprite
Nota: el elegante toggleClass no funciona en Internet Explorer 6, pero el método
addClass
/ siguienteremoveClass
también funcionará bien en esta situaciónLa solución más elegante (desafortunadamente no es compatible con Internet Explorer 6)
Hasta donde sé, este método funcionará en todos los navegadores, y me sentiría mucho más cómodo jugando con CSS y clases que con los cambios de URL en el script.
fuente
Hay dos formas diferentes de cambiar una imagen de fondo CSS con jQuery.
$('selector').css('backgroundImage','url(images/example.jpg)');
$('selector').css({'background-image':'url(images/example.jpg)'});
Mire cuidadosamente para notar las diferencias. En el segundo, puede usar CSS convencional y encadenar múltiples propiedades CSS juntas.
fuente
Si usa un sprite CSS para las imágenes de fondo, podría aumentar el desplazamiento del fondo +/- n píxeles dependiendo de si se estaba expandiendo o contrayendo. No es una palanca, pero está más cerca que tener que cambiar las URL de la imagen de fondo.
fuente
Así es como lo hago:
CSS
JS
fuente
.toggleClass()
función jQuery .Una forma de hacerlo es colocar ambas imágenes en el HTML, dentro de un SPAN o DIV, puede ocultar el valor predeterminado con CSS o con JS en la carga de la página. Entonces puede alternar al hacer clic. Aquí hay un ejemplo similar que estoy usando para poner iconos de izquierda / abajo en una lista:
fuente
Esto funciona en todos los navegadores actuales en WinXP. Básicamente solo verificando cuál es la imagen de fondo actual. Si es image1, muestre image2, de lo contrario muestre image1.
El material jsapi simplemente carga jQuery desde el CDN de Google (más fácil para probar un archivo misceláneo en el escritorio).
El reemplazo es para compatibilidad entre navegadores (opera y, por ejemplo, agrega comillas a la url y Firefox, Chrome y Safari eliminan comillas).
fuente
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
La mía está animada:
fuente
Hice el mío usando expresiones regulares, ya que quería preservar una ruta relativa y no usar agregar la función addClass. Solo quería hacerlo complicado, jajaja.
fuente
Publicación anterior, pero esto le permitiría usar un sprite de imagen y ajustar la repetición y el posicionamiento utilizando la abreviatura de la propiedad css (fondo, repetición, arriba a la izquierda).
fuente
He encontrado una solución en un foro, Toggle Background Img .
fuente
Los Sprites CSS funcionan mejor. Intenté cambiar de clase y manipular la propiedad 'background-image' con jQuery, ninguno funcionó. Creo que es porque los navegadores (al menos el último Chrome estable) no pueden "recargar" una imagen ya cargada.
Bonificación: los Sprites CSS son más rápidos de descargar y más rápidos de mostrar. Menos solicitudes HTTP significa una carga de página más rápida. Reducir la cantidad de HTTP es la mejor manera de mejorar el rendimiento del front-end, por lo que recomiendo seguir esta ruta todo el tiempo.
fuente
Esta es una respuesta bastante simple que cambia el fondo del sitio con una lista de elementos
fuente
Siempre uso una marca de tiempo también para evitar que los navegadores almacenen en caché la imagen. Por ejemplo, si el usuario está rotando su avatar, a menudo se almacenará en caché y parecerá que no cambia.
fuente