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:
<code>body.modal-open { height: 100vh; overflow-y: hidden; }</code>
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.
<code>body { height: 100vh; overflow-y: hidden; padding-right: 15px; /* 避免宽度重排*/ }</code>
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:
<code>body { position: fixed; }</code>
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:
<code>body { position: fixed; }</code>
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:
// Apabila kotak modal dipaparkan, kita memerlukan badan tetap document.body.style.position = 'tetap'; document.body.style.top = `-$ {window.scrolly} px`; // Apabila kotak modal tersembunyi, kita perlu menyimpannya di bahagian atas dokumen kedudukan tatal.body.style.position = ''; document.body.style.top = '';
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.
// Apabila kotak modal tersembunyi ... const scrolly = document.body.style.top; document.body.style.position = ''; document.body.style.top = ''; window.scrollTo (0, parseInt (scrolly || '0') * -1);
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!

Sekiranya anda pernah memaparkan animasi interaktif semasa ceramah langsung atau kelas, maka anda mungkin tahu bahawa ia tidak selalu mudah untuk berinteraksi dengan slaid anda

Dengan Astro, kami dapat menjana sebahagian besar laman web kami semasa membina kami, tetapi mempunyai sedikit kod pelayan yang dapat mengendalikan fungsi carian menggunakan sesuatu seperti fuse.js. Dalam demo ini, kami akan menggunakan fius untuk mencari melalui satu set "penanda buku" peribadi

Saya ingin melaksanakan mesej pemberitahuan dalam salah satu projek saya, sama seperti apa yang anda lihat dalam Dokumen Google semasa dokumen menyimpan. Dengan kata lain, a

Beberapa bulan yang lalu, saya berada di berita penggodam (seperti yang dilakukan) dan saya berlari melintasi artikel (kini dipadam) tentang tidak menggunakan jika kenyataan. Sekiranya anda baru dengan idea ini (seperti saya

Sejak awal fiksyen sains, kami telah fantasized tentang mesin yang bercakap dengan kami. Hari ini adalah perkara biasa. Walaupun begitu, teknologi untuk membuat

Saya masih ingat ketika Gutenberg dibebaskan ke teras, kerana saya berada di Wordcamp kami pada hari itu. Beberapa bulan telah berlalu sekarang, jadi saya bayangkan semakin banyak kita

Idea di sebalik kebanyakan aplikasi web adalah untuk mengambil data dari pangkalan data dan membentangkannya kepada pengguna dengan cara yang terbaik. Apabila kita berurusan dengan data di sana

Let ' s melakukan sedikit langkah demi langkah keadaan di mana anda tidak boleh melakukan apa yang kelihatannya masuk akal, tetapi anda masih boleh melakukannya dengan penipuan CSS. Dalam ini


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

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini