Mengelakkan menatal halaman apabila modal dibuka
Mengelakkan menatal halaman apabila kotak modal dibuka
Pernahkah anda menemui keadaan ini: Buka kotak modal, tatal di dalamnya, tutupnya, dan halaman melompat ke lokasi lain?
Ini kerana kotak modal hanyalah elemen pada halaman, ia mungkin kekal di tempat, tetapi seluruh halaman masih berfungsi dengan baik.
Kadang -kadang ini tidak penting, seperti ketika ketinggian skrin sama persis dengan ketinggian viewport. Tetapi dalam kes lain, masalah menatal berlaku. Berita baiknya ialah kita dapat menghalangnya dengan beberapa helah CSS (dan JavaScript).
Mulakan dengan penyelesaian yang mudah
Kami dapat mengurangkan masalah menatal halaman apabila kotak modal dibuka dengan menetapkan ketinggian seluruh badan ke ketinggian pandangan penuh dan menyembunyikan limpahan menegak apabila kotak modal dibuka:
1 |
|
Ini bagus, tetapi jika kita telah menatal melalui elemen halaman sebelum membuka kotak modal, akan ada penyusunan semula mendatar sedikit. Lebar viewport meningkat sebanyak kira -kira 15 piksel, yang betul -betul lebar bar skrol. Mari kita menyesuaikan badan yang betul sedikit untuk mengelakkan ini.
1 |
|
Perhatikan bahawa ketinggian kotak modal mestilah kurang daripada ketinggian viewport untuk kaedah ini berfungsi. Jika tidak, bar skrol pada badan akan diperlukan.
Apa yang perlu dilakukan di telefon bimbit?
Penyelesaian ini berfungsi dengan baik di kedua -dua desktop dan Android Mobile. Walau bagaimanapun, iOS safari memerlukan lebih banyak pemprosesan kerana badan masih menatal apabila kotak modal dibuka apabila mengklik dan bergerak pada skrin sentuh.
Kita boleh menetapkan badan ke kedudukan tetap sebagai penyelesaian:
1 |
|
Tidak mengapa sekarang! Apabila menyentuh skrin, badan tidak akan bertindak balas. Walau bagaimanapun, masih terdapat masalah "kecil" di sini. Dengan mengandaikan pencetus kotak modal berada di bahagian bawah halaman, kami klik untuk membukanya. sangat bagus! Tetapi sekarang kita secara automatik menatal ke bahagian atas skrin, yang mengelirukan seperti tingkah laku menatal yang kita cuba selesaikan.
Alamak!
Oleh itu, kita perlu menggunakan JavaScript
Kita boleh menggunakan JavaScript untuk mengelakkan gelembung peristiwa sentuhan. Kita semua tahu bahawa perlu ada lapisan latar belakang apabila kotak modal dibuka. Malangnya, dalam iOS, stoppropagation agak janggal untuk bekerja dengan acara sentuhan. Tetapi pencegahanDefault berfungsi dengan baik. Ini bermakna kita perlu menambah pendengar acara kepada setiap nod DOM yang termasuk dalam kotak modal -bukan hanya pada latar belakang atau lapisan kotak modal. Berita baiknya ialah banyak perpustakaan JavaScript boleh melakukan ini, termasuk jQuery yang terbukti.
Satu lagi perkara: Bagaimana jika kita perlu menatal ke dalam kotak modal? Kami masih perlu mencetuskan tindak balas kepada acara sentuhan, tetapi kami masih perlu menghentikan menggelegak apabila ia mencapai bahagian atas atau bawah kotak modal. Ini kelihatan sangat rumit, jadi kami tidak menyelesaikan masalah sepenuhnya.
Kaedah badan tetap dipertingkatkan
Apa yang kita gunakan ialah:
1 |
|
Jika kita tahu kedudukan atas menatal dan menambahkannya ke CSS kita, badan tidak menatal ke bahagian atas skrin, jadi masalahnya diselesaikan. Kita boleh menggunakan JavaScript untuk mengira bahagian atas tatal dan menambah nilai itu kepada gaya badan:
1 2 3 4 5 6 |
|
Ini berfungsi, tetapi masih terdapat sedikit kebocoran selepas kotak modal ditutup. Khususnya, apabila kotak modal dibuka dan badan ditetapkan untuk ditetapkan, halaman nampaknya telah kehilangan kedudukan menatalnya. Jadi kita perlu mengambil lokasi. Mari kita ubah JavaScript kami untuk menyelesaikan masalah ini.
1 2 3 4 5 |
|
dipaku! Badan tidak lagi menatal apabila kotak modal dibuka dan kekal dalam kedudukan tatal apabila kotak modal dibuka dan ditutup. Long Live!
Atas ialah kandungan terperinci Mengelakkan menatal halaman apabila modal dibuka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Saya melihat Font Google melancarkan reka bentuk baru (tweet). Berbanding dengan reka bentuk besar yang terakhir, ini terasa lebih berulang. Saya hampir tidak dapat memberitahu perbezaannya

Pernahkah anda memerlukan pemasa undur dalam projek? Untuk sesuatu seperti itu, mungkin semula jadi untuk mencapai plugin, tetapi sebenarnya lebih banyak lagi

Semua yang anda ingin tahu mengenai atribut data dalam HTML, CSS, dan JavaScript.

Pada permulaan projek baru, kompilasi SASS berlaku dalam sekejap mata. Ini terasa hebat, terutamanya apabila ia dipasangkan dengan BrowserSync, yang dimuat semula

Tartan adalah kain berpola yang biasanya dikaitkan dengan Scotland, terutamanya kilt bergaya mereka. Di Tartanify.com, kami mengumpulkan lebih dari 5,000 Tartan

Arahan template inline membolehkan kita membina komponen Vue yang kaya sebagai peningkatan progresif ke atas markup WordPress yang sedia ada.

Templat PHP sering mendapat rap buruk untuk memudahkan kod subpar - tetapi itu tidak perlu berlaku. Mari kita lihat bagaimana projek PHP dapat menguatkuasakan asas

Mari kita cuba menyusun istilah di sini: "Penyedia Borang Statik." Anda membawa html anda
