Estou criando uma tabela de taxas de chamada de expansão / recolhimento para a empresa em que trabalho. Atualmente, tenho uma tabela com um botão abaixo para expandi-lo, o botão diz "Expandir". É funcional, exceto que eu preciso do botão para mudar para "Recolher" quando ele é clicado e, é claro, voltar para "Expandir" quando é clicado novamente. A escrita no botão é uma imagem de fundo.
Então, basicamente, tudo o que preciso é alterar a imagem de fundo de uma div quando ela é clicada, exceto como uma alternância.
Aug 9 '10 at 0:42
no SO Talvez por isso, :(Respostas:
Deve fazer o truque, basta conectá-lo em um evento de clique no elemento
fonte
Pessoalmente, eu apenas usaria o código JavaScript para alternar entre 2 classes.
Faça com que o CSS esboce tudo o que você precisa na sua div menos a regra de segundo plano e adicione duas classes (por exemplo: expandida e recolhida) como regras, cada uma com a imagem de segundo plano correta (ou a posição de segundo plano se estiver usando um sprite).
CSS com imagens diferentes
Ou CSS com sprite de imagem
Então...
Código JavaScript com imagens
JavaScript com sprite
Nota: o toggleClass elegante não funciona no Internet Explorer 6, mas o método abaixo
addClass
/removeClass
também funcionará bem nessa situaçãoA solução mais elegante (infelizmente não é compatível com o Internet Explorer 6)
Até onde eu sei, esse método funcionará nos navegadores, e eu me sentiria muito mais confortável jogando com CSS e classes do que com alterações de URL no script.
fonte
Existem duas maneiras diferentes de alterar um CSS de imagem de plano de fundo com o jQuery.
$('selector').css('backgroundImage','url(images/example.jpg)');
$('selector').css({'background-image':'url(images/example.jpg)'});
Olhe atentamente para observar as diferenças. No segundo, você pode usar CSS convencional e encadear várias propriedades CSS juntas.
fonte
Se você usar um sprite CSS para as imagens de plano de fundo, poderá aumentar o deslocamento do plano de fundo +/- n pixels, dependendo de estar expandindo ou recolhendo. Não é uma alternância, mas é mais próxima do que ter que mudar os URLs da imagem de plano de fundo.
fonte
Aqui está como eu faço isso:
CSS
JS
fonte
.toggleClass()
recurso jQuery .Uma maneira de fazer isso é colocar as duas imagens no HTML, dentro de um SPAN ou DIV, para ocultar o padrão com CSS ou JS no carregamento da página. Então você pode alternar no clique. Aqui está um exemplo semelhante que estou usando para colocar os ícones esquerdo / baixo em uma lista:
fonte
Isso funciona em todos os navegadores atuais no WinXP. Basicamente, basta verificar qual é a imagem atual do segundo plano. Se for imagem1, mostre a imagem2, caso contrário, mostre a imagem1.
O material jsapi apenas carrega o jQuery a partir do CDN do Google (mais fácil para testar um arquivo variado na área de trabalho).
A substituição é para compatibilidade entre navegadores (opera e, por exemplo, adicione aspas ao url e firefox, chrome e safari remove aspas).
fonte
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
O meu é animado:
fonte
Eu fiz o meu usando expressões regulares, pois queria preservar um caminho relativo e não usar a função addClass. Eu só queria fazê-lo complicado, lol.
fonte
Postagem antiga, mas isso permitirá que você use um sprite de imagem e ajuste a repetição e o posicionamento usando a abreviação da propriedade css (plano de fundo, repetição, parte superior esquerda).
fonte
Encontrei uma solução em um fórum, Toggle Background Img .
fonte
Sprites CSS funcionam melhor. Tentei mudar de classe e manipular a propriedade 'background-image' com jQuery, nenhuma funcionou. Eu acho que é porque os navegadores (pelo menos o Chrome estável mais recente) não podem "recarregar" uma imagem já carregada.
Bônus: os Sprites CSS são mais rápidos para baixar e mais rápidos para exibir. Menos solicitações de HTTP significam um carregamento mais rápido da página. Reduzir o número de HTTP é a melhor maneira de melhorar o desempenho do front end, por isso recomendo seguir esse caminho o tempo todo.
fonte
Esta é uma resposta bastante simples que altera o plano de fundo do site com uma lista de itens
fonte
Eu também sempre uso um carimbo de data e hora para impedir que os navegadores armazenem em cache a imagem. Por exemplo, se o usuário estiver girando seu avatar, ele geralmente será armazenado em cache e parecerá não mudar.
fonte