Rumah hujung hadapan web tutorial js 页面上下滚动改变顶部导航的定位方式

页面上下滚动改变顶部导航的定位方式

Jul 22, 2017 am 09:22 AM
atas dan bawah slaid atas

 

 

最近碰到设计师的一个设计效果要求,其他网站也有实现:

state1:当网页向下滚动时,页面header栏消失,顶部nav往上靠;

state2:当网页向上滚动时,页面header栏出现,顶部nav顺着nav往下靠。

页面已经含有以下功能:

1、弹窗弹出时,弹窗层可滚动,但页面层不允许滚动。此时,页面中的body元素和html元素的overflow样式属性都被设置成了hidden;

 

页面结构如下:

头部

页面主体部分

页面底部

 

 

所碰到的问题是:scroll事件的监听太频繁(几乎移动一个像素就要执行一次监听事件),导致元素显示和隐藏时有闪动的问题,有时候甚至会导致某些元素来回切换。

在解决这样的问题的过程中,我的解决思路如下:

1、分别监听document的向下滚动和向上滚动事件

2、在监听的过程中,遇到弹窗弹出时不监听

3、在监听事件之外声明两个变量,分别为:permitMonitorScrollDown = true, permitMonitorScrollUp = true

4、

(1)、在监听document的向下滚动的流程中,在当前没有弹窗弹出的情况下,判断permitMonitorScrollDown的值是否为true,若为false,则直接return,跳出该监听流程;若为true,则将permitMonitorScrollDown设置为false,将状态切换到state1;设置定时器(js自带的setTimeout函数),在2000毫秒后恢复permitMonitorScrollDown为true。这种设置等价于每隔两秒允许监听一次向下滚动的事件。此处还隐藏有一点:当页面下滑,若切状态本身为state1时,不对状态做任何操作。

(2)、在监听document的向上滚动的流程中,在当前没有弹窗弹出的情况下,判断permitMonitorScrollUp的值是否为true,若为false,则直接return,跳出该监听流程;若为true,则将permitMonitorScrollUp设置为false,将状态切换到state2;设置定时器(js自带的setTimeout函数),在2000毫秒后恢复permitMonitorScrollUp为true。这种设置等价于每隔两秒允许监听一次向下滚动的事件。此处还隐藏有一点:当页面上滑,若切状态本身为state2时,不对状态做任何操作。

5、为了弥补上方两种情况发生的间歇期间页面滚动条已经触顶或者触底,所以需要用定时器单独处理这两种极端情况。

(1)、页面触顶(没有任何弹窗弹出且document的scrollTop为0),则状态必须切换到state1;

(2)、页面触底(没有任何弹窗弹出且document的scrollTop与$(window).height()的和刚好等于$(document).height()),则状态必须切换到state2;

 

我运用了jquery的filter函数,主要用于判断弹窗弹出时不监听滚动事件的情况(同时有一种等价的方式:当body的滚动条长度和滚动条本身的高度一样时,代表弹窗出现了。$("body")[0].scrollHeight==$(“body”).height()),同时运用了程序中排他锁的概念。

 

Atas ialah kandungan terperinci 页面上下滚动改变顶部导航的定位方式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika skrin telefon bimbit saya sukar untuk menggelongsor dan kering? Apakah yang perlu saya lakukan jika skrin telefon bimbit saya sukar untuk menggelongsor dan kering? Dec 04, 2023 pm 03:51 PM

Penyelesaian untuk skrin telefon mudah alih yang sukar diluncurkan dan kering: 1. Lembapkan skrin 2. Bersihkan skrin dengan kerap 3. Tingkatkan kekuatan gelongsor jari anda 4. Gunakan pelindung skrin telefon bimbit; 6. Pastikan tangan sentiasa lembap; Pengenalan terperinci: 1. Lembapkan skrin, letakkan pelembap di sebelah skrin atau semburkan sedikit air untuk meningkatkan kelembapan di udara, dengan itu mengurangkan kekeringan skrin 2. Bersihkan skrin dengan kerap, gunakan pembersih skrin profesional, dsb.

Bagaimana untuk menggunakan JavaScript untuk mencapai kesan penukaran gelongsor ke atas dan ke bawah bagi imej dan menambah animasi fade-in dan fade-out? Bagaimana untuk menggunakan JavaScript untuk mencapai kesan penukaran gelongsor ke atas dan ke bawah bagi imej dan menambah animasi fade-in dan fade-out? Oct 20, 2023 am 11:19 AM

Bagaimanakah JavaScript boleh mencapai kesan pensuisan gelongsor ke atas dan ke bawah bagi imej dan menambah animasi fade-in dan fade-out? Dalam pembangunan web, selalunya perlu untuk mencapai kesan penukaran imej Anda boleh menggunakan JavaScript untuk mencapai penukaran gelongsor ke atas dan ke bawah, dan menambah kesan animasi fade-in dan fade-out Mari kita lihat dengan lebih dekat. Pertama, kita memerlukan bekas yang mengandungi berbilang imej. Kita boleh menggunakan tag div dalam HTML untuk mengehoskan imej. Sebagai contoh, kami mencipta div dengan id "bekas imej" kepada

Bagaimana untuk menggunakan JavaScript untuk mencapai kesan menyeret ke atas dan ke bawah imej? Bagaimana untuk menggunakan JavaScript untuk mencapai kesan menyeret ke atas dan ke bawah imej? Oct 18, 2023 am 09:09 AM

Bagaimanakah JavaScript mencapai kesan menyeret ke atas dan ke bawah imej? Dengan perkembangan Internet, gambar memainkan peranan penting dalam kehidupan dan kerja kita. Untuk meningkatkan pengalaman pengguna, kami selalunya perlu menambahkan beberapa kesan khas atau kesan interaktif pada gambar. Antaranya, kesan menyeret ke atas dan ke bawah gambar untuk bertukar adalah kesan yang sangat biasa, mudah dan praktikal. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mencapai kesan ini dan memberikan contoh kod khusus. Pertama, kita perlu mencipta fail HTML untuk memaparkan imej dan melaksanakan penyeretan

HTML, CSS dan jQuery: Panduan teknikal untuk melaksanakan kesan panel gelongsor HTML, CSS dan jQuery: Panduan teknikal untuk melaksanakan kesan panel gelongsor Oct 27, 2023 pm 04:39 PM

HTML, CSS dan jQuery: Garis Panduan Teknikal untuk Melaksanakan Kesan Panel Gelongsor Dengan populariti peranti mudah alih dan pembangunan aplikasi web, panel gelongsor, sebagai kaedah interaksi yang popular, menjadi semakin biasa dalam reka bentuk web. Dengan melaksanakan kesan panel gelongsor, kami boleh memaparkan lebih banyak kandungan dalam ruang terhad dan meningkatkan pengalaman pengguna. Artikel ini akan memperkenalkan secara terperinci cara menggunakan HTML, CSS dan jQuery untuk mencapai kesan panel gelongsor, dan memberikan contoh kod khusus. Struktur HTML Pertama, kita perlu mencipta asas

Tafsiran peristiwa gelongsor jQuery: prinsip pelaksanaan dan langkah berjaga-jaga Tafsiran peristiwa gelongsor jQuery: prinsip pelaksanaan dan langkah berjaga-jaga Feb 27, 2024 am 10:57 AM

Tafsiran acara gelongsor jQuery: Prinsip pelaksanaan dan langkah berjaga-jaga Dalam pembangunan bahagian hadapan, peristiwa gelongsor ialah salah satu operasi interaktif yang biasa dan biasa digunakan Melalui acara gelongsor, kami boleh melaksanakan fungsi seperti menukar karusel dan menatal memuatkan halaman. Sebagai perpustakaan JavaScript yang popular, jQuery menyediakan pelbagai kaedah pemprosesan acara gelongsor untuk memudahkan kami mencapai pelbagai kesan interaktif. Artikel ini akan menyelidiki prinsip pelaksanaan dan langkah berjaga-jaga bagi peristiwa gelongsor dalam jQuery, dan menyediakan contoh kod khusus. 1. Prinsip pelaksanaan

Bagaimana untuk melaksanakan gelongsor dalam tindak balas Bagaimana untuk melaksanakan gelongsor dalam tindak balas Dec 30, 2022 am 11:09 AM

Kaedah untuk melaksanakan gelongsor dalam tindak balas: 1. Cari sentuhan dalam acara onTouchStart dan rekod kejadian sentuhan baharu mengikut pengecam 2. Rekodkan koordinat setiap titik yang dilalui oleh sentuhan mengikut pengecam dalam acara onTouchMove; . Dalam acara onTouchEnd, cari Peristiwa sentuhan penamat, dan kemudian hitung gerak isyarat yang akan dilakukan berdasarkan titik yang dipalang oleh peristiwa sentuhan penamat.

Cara menggunakan Vue untuk melaksanakan karusel gelongsor Cara menggunakan Vue untuk melaksanakan karusel gelongsor Nov 07, 2023 pm 12:59 PM

Vue ialah rangka kerja JavaScript popular yang membantu kami membina aplikasi web interaktif dengan lebih mudah. Hari ini, kami akan memperkenalkan cara menggunakan Vue untuk mencipta karusel gelongsor. Kami akan menggunakan VueCLI untuk mencipta projek Vue baharu dan menggunakan komponen karusel rasmi Vue untuk melaksanakan carta karusel gelongsor. Berikut ialah langkah khusus: Langkah 1: Pasang VueCLI Untuk memasang VueCLI, anda perlu memasang Node.js terlebih dahulu. Sebaik sahaja anda memasang Node.js

watchOS 10.2: Cara menukar muka jam anda dengan leret watchOS 10.2: Cara menukar muka jam anda dengan leret Dec 15, 2023 pm 11:15 PM

Dalam watchOS 10.2, anda boleh mendayakan gerak isyarat leret untuk bertukar antara muka jam tangan Apple Watch dengan lebih mudah, seperti yang anda lakukan sebelum ini dalam watchOS 9. Baca terus untuk mengetahui cara ia dilakukan. Jika anda pengguna Apple Watch lama, anda mungkin masih ingat masa anda boleh menukar muka jam pada paparan dengan gerak isyarat leret yang mudah. Ini ialah interaksi lalai dalam watchOS9, tetapi Apple kemudian mengalih keluar gerak isyarat apabila ia dinaik taraf kepada watchOS10. Apple menukar interaksi kerana pengguna mengadu terlalu mudah untuk menukar muka jam secara tidak sengaja. Tetapi bagi sesiapa yang tidak pernah mengalami masalah ini, Apple hanya menjadikannya lebih sukar - ia diperlukan sebelum meleret

See all articles