Saya sudah html sampel berikut, ada DIV yang memiliki lebar 100%. Ini mengandung beberapa elemen. Saat melakukan pengubahan ukuran jendela, elemen-elemen bagian dalam dapat diposisikan ulang, dan dimensi div dapat berubah. Saya bertanya apakah mungkin untuk mengaitkan peristiwa perubahan dimensi div? dan Bagaimana cara melakukannya? Saat ini saya mengikat fungsi panggilan balik ke acara mengubah ukuran jQuery pada DIV target, namun, tidak ada log konsol yang dihasilkan, lihat di bawah: Show
Ada metode yang sangat efisien untuk menentukan apakah ukuran elemen telah diubah. http://marcj.github.io/css-element-queries/ Perpustakaan ini memiliki kelas Contoh:
Tolong jangan gunakan plugin onresize jQuery karena
menggunakan loop Pengungkapan: Saya terkait langsung dengan perpustakaan ini. Anda harus mengikat acara Anda kemudian dapat menggunakan ini:
dan
dalam fungsi panggilan balik Anda dapat memeriksa lebar baru dari panggilan
Jadi, jawaban untuk pertanyaan Anda adalah tidak , Anda tidak dapat mengikat acara Jangka panjang, Anda akan dapat menggunakan server ResizeOb .
Sayangnya saat ini tidak didukung secara default di banyak browser. Sementara itu, Anda dapat menggunakan fungsi seperti berikut ini. Karena, sebagian besar perubahan ukuran elemen akan berasal dari mengubah ukuran jendela atau mengubah sesuatu di DOM. Anda dapat mendengarkan pengubahan ukuran jendela dengan event resize window dan Anda dapat mendengarkan perubahan DOM menggunakan MutationObserver . Berikut adalah contoh fungsi yang akan memanggil Anda kembali ketika ukuran elemen yang disediakan berubah sebagai akibat dari salah satu dari peristiwa tersebut:
Solusi terbaik adalah dengan menggunakan Elemen Query. Namun, mereka tidak standar, tidak ada spesifikasi - dan satu-satunya pilihan adalah menggunakan salah satu dari polyfill/libraries yang tersedia, jika Anda ingin pergi dengan cara ini. Gagasan di balik kueri elemen adalah memungkinkan wadah tertentu pada halaman untuk menanggapi ruang yang disediakan untuk itu. Ini akan memungkinkan untuk menulis komponen sekali dan kemudian menjatuhkannya di mana saja pada halaman, sementara itu akan menyesuaikan isinya dengan ukuran saat ini. Tidak peduli apa ukuran Jendela itu. Ini adalah perbedaan pertama yang kita lihat antara kueri elemen dan kueri media. Semua orang berharap bahwa pada suatu titik suatu spesifikasi akan dibuat yang akan membakukan permintaan elemen (atau sesuatu yang mencapai tujuan yang sama) dan menjadikannya asli, bersih, sederhana dan kuat. Kebanyakan orang setuju bahwa pertanyaan Media sangat terbatas dan tidak membantu untuk desain modular dan responsif sebenarnya. Ada beberapa polyfill/perpustakaan yang memecahkan masalah dengan cara yang berbeda (bisa disebut workarounds alih-alih solusi):
Saya telah melihat solusi lain untuk masalah serupa yang diajukan. Biasanya mereka menggunakan timer atau ukuran Window/viewport di bawah tenda, yang bukan solusi nyata. Lebih jauh, saya pikir idealnya ini harus diselesaikan terutama dalam CSS, dan bukan dalam javascript atau html. Saya menemukan perpustakaan ini berfungsi ketika solusi MarcJ tidak: https://github.com/sdecima/javascript-detect-element-resize Ini sangat ringan dan bahkan mendeteksi ukuran alami melalui CSS atau hanya memuat/rendering HTML. Contoh kode (diambil dari tautan):
Lihatlah ini http://benalman.com/code/projects/jquery-resize/examples/resize/ Ini memiliki berbagai contoh. Coba ubah ukuran jendela Anda dan lihat bagaimana elemen di dalam elemen wadah disesuaikan. Contoh dengan js fiddle untuk menjelaskan cara membuatnya bekerja. Dalam peristiwa resize () terikat pada elemen yang memiliki kelas "test" dan juga ke objek window Dan dalam mengubah ukuran callback objek window $ ('. Test'). Resize () dipanggil. misalnya.
ResizeSensor.js adalah bagian dari perpustakaan besar, tapi saya mengurangi fungsinya menjadi THIS:
Bagaimana cara menggunakannya:
Saya TIDAK merekomendasikan hack JS:
HTML:
Ini biola Anda selanjutnya dapat membungkus metode Anda dalam metode Hanya objek window yang menghasilkan event "resize". Satu-satunya cara saya tahu untuk melakukan apa yang ingin Anda lakukan adalah menjalankan penghitung waktu interval yang secara berkala memeriksa ukurannya. Anda dapat menggunakan Langkah langkah:
Contoh HTML:
Javascript:
Contoh MenjalankanJsFiddle: https://jsfiddle.net/qq8p470d/ Lihat lebih lanjut:
Posting blog ini membantu saya mendeteksi perubahan ukuran pada elemen DOM secara efisien. http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/ Cara menggunakan kode ini ...
Kode paket yang digunakan oleh contoh ...
Catatan: AppConfig adalah namespace/objek yang saya gunakan untuk mengatur fungsi yang dapat digunakan kembali. Jangan ragu untuk mencari dan mengganti nama dengan apa pun yang Anda inginkan. Anda dapat mencoba kode di cuplikan berikut, mencakup kebutuhan Anda menggunakan javascript biasa. (jalankan cuplikan kode dan klik tautan satu halaman penuh untuk memicu peringatan bahwa div diubah ukurannya jika Anda ingin mengujinya.).
Anda dapat memeriksa biola juga PERBARUI
Diperbarui Fiddle Menggunakan Clay.js ( https://github.com/zzarcon/clay ) cukup mudah untuk mendeteksi perubahan pada ukuran elemen:
Hebatnya setua masalah ini, ini masih menjadi masalah di sebagian besar browser. Seperti yang orang lain katakan, Chrome 64+ sekarang dikirimkan dengan Resize Observes secara asli, namun, spesifikasi tersebut masih sedang diperbaiki dan Chrome sekarang sedang (pada 2019-01-29) di belakang edisi terbaru dari spesifikasi . Saya telah melihat beberapa polyfill ResizeObserver yang baik di alam bebas, namun beberapa tidak mengikuti spesifikasi yang erat dan yang lain memiliki beberapa masalah perhitungan. Saya sangat membutuhkan perilaku ini untuk membuat beberapa komponen web responsif yang dapat digunakan dalam aplikasi apa pun. Untuk membuatnya bekerja dengan baik, mereka perlu mengetahui dimensi mereka setiap saat, jadi ResizeObservers terdengar ideal dan saya memutuskan untuk membuat polyfill yang mengikuti spesifikasi sedekat mungkin. Repo: https://github.com/juggle/resize-observer Demo: https://codesandbox.io/s/myqzvpmmy9 Ini adalah salinan tepat dari jawaban teratas, tetapi alih-alih sebuah tautan, itu hanya bagian dari kode yang penting, diterjemahkan menjadi IMO lebih mudah dibaca dan lebih mudah dipahami. Beberapa perubahan kecil lainnya termasuk menggunakan cloneNode (), dan tidak menempatkan html ke string js. Hal-hal kecil, tetapi Anda dapat menyalin dan menempel ini apa adanya dan itu akan berhasil. Cara kerjanya adalah dengan membuat dua div tak terlihat mengisi elemen yang Anda tonton, lalu menempatkan pemicu di masing-masing, dan mengatur posisi gulir yang akan memicu pemicu perubahan gulir jika ukurannya berubah. Semua kredit nyata diberikan kepada Marc J, tetapi jika Anda hanya mencari kode yang relevan, ini dia:
menggunakan Bharat Patil jawab cukup kembalikan salah di dalam callback bind Anda untuk mencegah kesalahan tumpukan maksimum, lihat contoh di bawah:
Solusi Javascript murni, tetapi hanya berfungsi jika elemen tersebut diubah ukurannya dengan tombol css resize :
Ini adalah pertanyaan yang sangat lama, tetapi saya pikir saya akan memposting solusi saya untuk ini. Saya mencoba menggunakan Saya akhirnya menangani ini dengan Rxjs
Apa yang menyenangkan tentang aroma yang bisa diamati dari suatu interval adalah Anda bisa memodifikasi alirannya, tetapi setiap pengamatan lain dapat diatasi. Bagi saya, implementasi dasar sudah cukup, tetapi Anda bisa menjadi gila dan melakukan segala macam penggabungan, dll. Dalam contoh di bawah ini, saya melacak perubahan lebar div bagian dalam (hijau). Ini memiliki lebar yang diatur ke 50%, tetapi lebar maks 200px. Menyeret slider mempengaruhi lebar div pembungkus (abu-abu). Anda dapat melihat bahwa api yang dapat diamati hanya menyala ketika lebar div dalam berubah, yang hanya terjadi jika lebar div luar lebih kecil dari 400px.
Apa itu DOM dalam JavaScript?DOM merupakan kependekan dari Document Object Model, DOM ini yakni object model standar bagi XML dan HTML yang memiliki sifat platform independent. Saat membuka sebuah halaman web pada browser, maka file HTML dari web akan dimuat serta ditampilkan pada layar perangkat.
Bagaimana cara memanggil fungsi di JavaScript?Cara Memanggil/Eksekusi Fungsi
Kita bisa memanggil fungsi di dalam kode Javascript dengan menuliskan nama fungsinya seperti ini: namaFungsi(); Contoh: // membuat fungsi function sayHello(){ console.log("Hello World!"); } // memanggil fungsi sayHello() // maka akan menghasilkan -> Hello World!
Apa itu DOM JavaScript dan bagaimana model implementasinya?Javascript DOM (Document Object Model) adalah interface yang memungkinkan developer untuk memanipulasi konten, struktur, dan style situs web. Jika Anda ingin mempelajari lebih dalam tentang DOM dan bagaimana Anda dapat memanipulasinya menggunakan Javascript, berikut referensi dasar menurut Gabriel Tanner.
Di dalam elemen HTML manakah kita meletakkan JavaScript?Anda bisa langsung menambahkan JavaScript di HTML dengan menggunakan tag <script></script> yang mencakup semua kode JS yang Anda tulis. Kode JS yang bisa ditambahkan: di antara tag <head> di antara <body>
|