Saya membuat tabel tarif panggilan tambah / lipat untuk perusahaan tempat saya bekerja. Saat ini saya memiliki meja dengan tombol di bawahnya untuk membentangkannya, tombolnya bertuliskan "Expand". Fungsional kecuali saya perlu tombol untuk berubah menjadi "Ciutkan" ketika diklik dan tentu saja kembali ke "Perluas" ketika diklik lagi. Tulisan pada tombol adalah gambar latar belakang.
Jadi pada dasarnya yang saya butuhkan adalah mengubah gambar latar belakang div ketika diklik, kecuali semacam toggle.
Aug 9 '10 at 0:42
di SO mungkin itu sebabnya, :(Jawaban:
Seharusnya melakukan trik, cukup sambungkan ke acara klik pada elemen
sumber
Saya pribadi hanya akan menggunakan kode JavaScript untuk beralih di antara 2 kelas.
Buat CSS menguraikan semua yang Anda butuhkan di div Anda MINUS aturan latar belakang, kemudian tambahkan dua kelas (misalnya: diperluas & diciutkan) sebagai aturan masing-masing dengan gambar latar belakang yang benar (atau posisi latar belakang jika menggunakan sprite).
CSS dengan gambar berbeda
Atau CSS dengan sprite gambar
Kemudian...
Kode JavaScript dengan gambar
JavaScript dengan sprite
Catatan: toggleClass yang elegan tidak berfungsi di Internet Explorer 6, tetapi metode di bawah
addClass
/removeClass
ini akan berfungsi dengan baik dalam situasi ini jugaSolusi paling elegan (sayangnya tidak ramah Internet Explorer 6)
Sejauh yang saya tahu metode ini akan bekerja di seluruh browser, dan saya akan merasa jauh lebih nyaman bermain dengan CSS dan kelas daripada dengan perubahan URL dalam skrip.
sumber
Ada dua cara berbeda untuk mengubah CSS gambar latar belakang dengan jQuery.
$('selector').css('backgroundImage','url(images/example.jpg)');
$('selector').css({'background-image':'url(images/example.jpg)'});
Perhatikan baik-baik untuk memperhatikan perbedaannya. Dalam yang kedua, Anda dapat menggunakan CSS konvensional dan merangkai beberapa properti CSS secara bersamaan.
sumber
Jika Anda menggunakan sprite CSS untuk gambar latar belakang, Anda dapat menabrak offset latar belakang +/- n piksel tergantung pada apakah Anda memperluas atau mengecil. Bukan beralih, tetapi lebih dekat daripada harus beralih URL gambar latar belakang.
sumber
Inilah cara saya melakukannya:
CSS
JS
sumber
.toggleClass()
fitur jQuery .Salah satu cara untuk melakukan ini adalah dengan meletakkan kedua gambar dalam HTML, di dalam SPAN atau DIV, Anda dapat menyembunyikan default baik dengan CSS, atau dengan JS pada pemuatan halaman. Kemudian Anda dapat beralih di klik. Berikut adalah contoh serupa yang saya gunakan untuk meletakkan ikon kiri / bawah pada daftar:
sumber
Ini berfungsi pada semua browser saat ini di WinXP. Pada dasarnya hanya memeriksa apa gambar backgrond saat ini. Jika itu adalah image1, tampilkan image2, atau tampilkan image1.
Hal-hal jsapi hanya memuat jQuery dari Google CDN (lebih mudah untuk menguji file misc di desktop).
Pengganti adalah untuk kompatibilitas lintas-browser (opera dan mis. Tambahkan tanda kutip ke url dan firefox, chrome dan safari hapus tanda kutip).
sumber
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
Milik saya dianimasikan:
sumber
Saya menambang menggunakan ekspresi reguler, karena saya ingin mempertahankan jalur relatif dan tidak menggunakan fungsi addClass. Saya hanya ingin membuatnya berbelit, lol.
sumber
Posting lama, tetapi ini akan memungkinkan Anda untuk menggunakan sprite gambar dan menyesuaikan pengulangan serta penentuan posisi dengan menggunakan steno untuk properti css (latar belakang, ulangi, atas kiri).
sumber
Saya telah menemukan solusi di forum, Toggle Background Img .
sumber
CSS Sprite bekerja paling baik. Saya mencoba beralih kelas dan memanipulasi properti 'background-image' dengan jQuery, tidak ada yang berhasil. Saya pikir itu karena browser (setidaknya Chrome stabil terbaru) tidak dapat "memuat ulang" gambar yang sudah dimuat.
Bonus: CSS Sprite lebih cepat diunduh dan ditampilkan lebih cepat. Lebih sedikit permintaan HTTP berarti pemuatan halaman lebih cepat. Mengurangi jumlah HTTP adalah cara terbaik untuk meningkatkan kinerja front-end, jadi saya sarankan pergi rute ini sepanjang waktu.
sumber
Ini adalah respons yang cukup sederhana mengubah latar belakang situs dengan daftar item
sumber
Saya selalu menggunakan stempel waktu juga untuk mencegah browser dari caching gambar. Misalnya, jika pengguna memutar avatar mereka, itu sering akan di-cache dan tampaknya tidak berubah.
sumber