Saya memiliki kode JQuery berikut:
$(document).ready(function () {
var $containerHeight = $(window).height();
if ($containerHeight <= 818) {
$('.footer').css({
position: 'static',
bottom: 'auto',
left: 'auto'
});
}
if ($containerHeight > 819) {
$('.footer').css({
position: 'absolute',
bottom: '3px',
left: '0px'
});
}
});
Satu-satunya masalah adalah ini hanya berfungsi ketika browser pertama kali dimuat, saya ingin containerHeight
juga diperiksa ketika mereka mengubah ukuran jendela?
Ada ide?
$(window).resize(function(){...})
Jawaban:
Berikut ini contoh menggunakan jQuery, javascript, dan css untuk menangani ukuran acara.
(css jika taruhan terbaik Anda jika Anda hanya menyesuaikan hal-hal tentang mengubah ukuran (permintaan media))
http://jsfiddle.net/CoryDanielson/LAF4G/
css
javascript
jQuery
Bagaimana cara saya menghentikan kode pengubahan ukuran saya agar sering dijalankan !?
Ini adalah masalah pertama yang akan Anda perhatikan saat mengikat untuk mengubah ukuran. Kode pengubahan ukuran akan dipanggil BANYAK ketika pengguna mengubah ukuran browser secara manual, dan bisa terasa sangat janky.
Untuk membatasi seberapa sering kode pengubahan ukuran Anda dipanggil, Anda dapat menggunakan metode debounce atau throttle dari pustaka garis bawah & lowdash .
debounce
hanya akan menjalankan kode pengubahan ukuran X jumlah milidetik setelah acara pengubahan ukuran TERAKHIR. Ini sangat ideal ketika Anda hanya ingin memanggil kode ukuran sekali saja, setelah pengguna selesai mengubah ukuran browser. Baik untuk memperbarui grafik, bagan, dan tata letak yang mungkin mahal untuk memperbarui setiap acara ukuran tunggal.throttle
hanya akan menjalankan kode pengubahan ukuran Anda setiap X jumlah milidetik. Itu "mencekik" seberapa sering kode dipanggil. Ini tidak sering digunakan dengan acara pengubahan ukuran, tetapi perlu diperhatikan.Jika Anda tidak memiliki garis bawah atau lowdash, Anda dapat menerapkan solusi serupa sendiri: JavaScript / JQuery: $ (window) .resize bagaimana memecat SETELAH ukurannya selesai?
sumber
Pindahkan javascript Anda ke suatu fungsi dan kemudian ikat fungsi itu ke ukuran jendela.
sumber
jQuery memiliki event handler ukuran yang dapat Anda lampirkan ke jendela, .resize () . Jadi, jika Anda meletakkan
$(window).resize(function(){/* YOUR CODE HERE */})
kode Anda akan dijalankan setiap kali jendela diubah ukurannya.Jadi, yang Anda inginkan adalah menjalankan kode setelah memuat halaman pertama dan setiap kali jendela diubah ukurannya. Karena itu Anda harus menarik kode ke dalam fungsinya sendiri dan menjalankan fungsi itu di kedua contoh.
Lihat: Acara pengubahan ukuran jendela lintas browser - JavaScript / jQuery
sumber
$(function() { $(window).resize(positionFooter).triggerHandler('resize'); });
Coba solusi ini. Hanya menyala setelah halaman dimuat dan kemudian selama pengubahan ukuran jendela di yang telah ditentukan
resizeDelay
.sumber
resizer();
tepat setelah mengatur interval. Dan karenadoResize
diatur ketrue
, dipecat ketika dokumen siap.resizeDelay
jikadoResize
variabel diatur ketrue
. DandoResize
juga diatur ketrue
on$(window).resize()
. Jadi Anda mengubah ukuran jendela, yang mengaturdoResize
ketrue
dan selamaresizer()
fungsi pemeriksaan selanjutnya disebut.Beri nama fungsi anonim Anda, lalu:
http://api.jquery.com/category/events/
sumber
bisa menggunakannya juga
sumber
Ini akan menyebabkan pengatur ukuran Anda terpicu pada pengubahan ukuran jendela dan dokumen siap. Tentu saja, Anda dapat melampirkan penangan ukuran Anda di luar penangan siap dokumen jika Anda ingin
.trigger('resize')
menjalankan memuat halaman sebagai gantinya.PEMBARUAN : Ini opsi lain jika Anda tidak ingin memanfaatkan perpustakaan pihak ketiga lainnya.
Teknik ini menambahkan kelas tertentu ke elemen target Anda sehingga Anda memiliki keuntungan mengendalikan styling hanya melalui CSS (dan menghindari styling inline).
Ini juga memastikan bahwa kelas hanya ditambahkan atau dihapus ketika titik ambang sebenarnya dipicu dan tidak pada masing-masing dan setiap ukuran. Ini akan menyala pada satu titik ambang saja: ketika ketinggian berubah dari <= 818 ke> 819 atau sebaliknya dan tidak berkali-kali dalam setiap wilayah. Itu tidak peduli dengan perubahan lebar .
Sebagai contoh, Anda mungkin memiliki yang berikut sebagai beberapa aturan CSS Anda:
sumber
Gunakan ini:
sumber
Anda dapat mengikat
resize
menggunakan.resize()
dan menjalankan kode Anda ketika browser diubah ukurannya. Anda juga perlu menambahkanelse
kondisi keif
pernyataan Anda sehingga nilai css Anda beralih yang lama dan yang baru, bukan hanya mengatur yang baru.sumber