Jadual Kandungan
Bar navigasi menatal untuk menunjukkan/bersembunyi
Aktifkan pautan navigasi
Klik untuk mengaktifkan
pengaktifan tatal
Kod sampel lengkap
Rumah hujung hadapan web html tutorial Tutorial untuk melaksanakan bar navigasi yang menunjukkan/menyembunyikan dan mengaktifkan pautan navigasi semasa menatal

Tutorial untuk melaksanakan bar navigasi yang menunjukkan/menyembunyikan dan mengaktifkan pautan navigasi semasa menatal

Oct 11, 2025 pm 11:42 PM

Tutorial untuk melaksanakan bar navigasi yang menunjukkan/menyembunyikan dan mengaktifkan pautan navigasi semasa menatal

Dokumen ini bertujuan untuk menyediakan tutorial yang membolehkan bar navigasi secara automatik menunjukkan dan menyembunyikan sebagai skrol halaman, dan pautan navigasi untuk diaktifkan secara dinamik berdasarkan kedudukan Viewport semasa dan klik peristiwa. Kami akan menggunakan HTML, CSS, dan JavaScript (termasuk jQuery) untuk mencapai kesan ini. Melalui artikel ini, anda akan belajar bagaimana untuk mendengar peristiwa tatal, mengubahsuai gaya CSS secara dinamik, dan mengendalikan keadaan pengaktifan pautan navigasi.

Bar navigasi menatal untuk menunjukkan/bersembunyi

Kunci untuk menyedari bahawa bar navigasi ditunjukkan dan tersembunyi semasa menatal adalah untuk mendengar peristiwa Window.onscroll dan secara dinamik mengubah suai atribut gaya teratas bar navigasi berdasarkan perbandingan antara kedudukan tatal semasa dan kedudukan tatal sebelumnya.

 var prevScrollPos = window.pageyOffset;

window.onscroll = function () {
  var currentscrollpos = window.pageyOffset;
  jika (prevScrollpos> currentscrollpos) {
    document.getElementById ("NavBarsection"). Style.top = "0";
  } else {
    document.getElementById ("NavBarsection"). Style.top = "-70px";
  }
  prevScrollPos = currentscrollpos;
};

Kod ini mula -mula memperoleh kedudukan skrol awal halaman, prevScrollpos. Kemudian dalam fungsi window.onScroll, dapatkan kedudukan tatal semasa currentscrollpos dan bandingkan dengan prevScrollpos. Jika prevscrollpos lebih besar daripada currentscrollpos, ini bermakna skrol pengguna naik. Pada masa ini, tetapkan harta atas bar navigasi kepada "0" untuk memaparkannya. Sebaliknya, jika pengguna menatal ke bawah, tetapkan atribut atas kepada "-70px" untuk menyembunyikannya. Akhirnya, kemas kini prevScrollPos ke currentscrollpos untuk perbandingan pada kali berikutnya anda tatal.

Perkara yang perlu diperhatikan:

  • Pastikan elemen Navbar anda mempunyai atribut id = "NavBarsection" supaya kod JavaScript dapat menemuinya.
  • Laraskan nilai -70px mengikut ketinggian bar navigasi anda.
  • Untuk membuat kesan peralihan lebih lancar, anda boleh menambah atribut peralihan ke bar navigasi di CSS.

Aktifkan pautan navigasi

Mengaktifkan pautan navigasi memerlukan dua fungsi: Pertama, apabila anda mengklik pautan navigasi, tatal dengan lancar ke bahagian yang sepadan dan mengaktifkan pautan; Kedua, apabila skrol halaman, pautan navigasi yang sepadan diaktifkan secara automatik berdasarkan kedudukan viewport semasa.

Klik untuk mengaktifkan

Kod berikut menggunakan jQuery untuk mencapai kesan skrol dan pengaktifan yang lancar semasa mengklik pautan navigasi:

 $ (dokumen) .ready (fungsi () {
  $ (dokumen) .on ("tatal", onscroll);

  // smoothscroll
  $ (". navbar-toggler"). pada ("klik", fungsi (e) {
    E.PreventDefault ();
    $ (dokumen) .off ("tatal");

    $ (".
      $ (ini) .removeClass ("aktif");
    });
    $ (ini) .addclass ("aktif");

    var sasaran = $ (ini) .paren ("div.container-fluid"). Cari (". navbar-brand"). attr ("href")
    menu = sasaran;
    $ sasaran = $ (sasaran);
    $ ("html, badan")
      .Stop ()
      .animate ({
          ScrollTop: $ sasaran.offset (). Top 2,
        },
        500,
        "Swing",
        fungsi () {
          window.location.hash = target;
          $ (dokumen) .on ("tatal", onscroll);
        }
      );
  });
});

Kod ini terlebih dahulu mengikat acara tatal ke fungsi onScroll selepas dokumen dimuatkan. Kemudian, dengar acara klik pautan navigasi. Apabila pautan diklik, mula -mula menghalang tingkah laku lalai, kemudian keluarkan kelas aktif semua pautan navigasi dan tambahkan kelas aktif untuk pautan yang diklik sekarang. Seterusnya, gunakan fungsi Animate untuk mencapai kesan menatal lancar ke bahagian sasaran. Selepas menatal selesai, kemas kini nilai hash URL dan rebind acara tatal.

Perkara yang perlu diperhatikan:

  • Pastikan untuk memasukkan perpustakaan jQuery.
  • E.PreventDefault () digunakan untuk mengelakkan tingkah laku lompat pautan lalai.
  • $ (dokumen) .off ("tatal") dan $ (dokumen) .on ("tatal", onscroll) digunakan untuk menjeda dan meneruskan pemantauan acara menatal semasa proses menatal untuk mengelakkan konflik.
  • 500 adalah tempoh animasi dan boleh diselaraskan seperti yang diperlukan.
  • Swing adalah fungsi pelonggaran animasi, dan fungsi pelonggaran lain juga boleh dipilih.

pengaktifan tatal

Kod berikut melaksanakan pengaktifan automatik pautan navigasi yang sepadan berdasarkan kedudukan paparan semasa apabila halaman ditatal:

 fungsi onScroll (event) {
  var scrollpos = $ (dokumen) .scrollTop ();
  $ ("#navBarsection a"). Setiap (fungsi () {
    var currlink = $ (ini);
    var refelement = $ (currlink.attr ("href"));
    jika (
      refelement.position (). atas  ScrollPos
    ) {
      $ ("#navBarsection ul li a"). penyingkiran ("aktif");
      currlink.addclass ("aktif");
    } else {
      currlink.removeclass ("aktif");
    }
  });
}

Kod ini pertama mendapat tatal kedudukan tatal semasa. Kemudian, berulang melalui semua pautan navigasi. Untuk setiap pautan, dapatkan elemen seksyen yang sepadan dengan atribut HREFnya. Jika elemen seksyen berada dalam pandangan, keluarkan kelas aktif dari semua pautan navigasi dan tambahkan kelas aktif untuk pautan semasa. Jika tidak, keluarkan kelas aktif yang dihubungkan sekarang.

Perkara yang perlu diperhatikan:

  • Pastikan atribut HREF bagi setiap pautan navigasi sepadan dengan atribut ID elemen seksyen yang sepadan.
  • refelement.position (). Atas mendapat jarak elemen seksyen relatif ke bahagian atas dokumen.
  • Refelement.Height () mendapat ketinggian elemen seksyen.

Kod sampel lengkap

Berikut adalah kod sampel HTML, CSS dan JavaScript yang lengkap:

 



  <meta charset="utf-8">
  <meta name="viewport" content="width = peranti-lebar, skala awal = 1.0">
  <tirly> navbar tatal & aktif 
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css">
  <link rel="stylesheet" href="style.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"> </script>




  <div class="container" id="navbarsection">
    <nav class="navbar navbar-expand-lg" aria-label="offcanvas navbar besar">
      <div class="container-fluid">
        <a class="navbar-brand" href="#herosection"> <img src="./%20aset/logo.svg" alt=""> </a>
        <butang kelas="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasnavbar2" aria-controls="offcanvasnavbar2" aria-m-label="togol navigasi">
            <span class="navbar-toggler-icon"> </span>
          </butang>
        <div class="offcanvas offcanvas-end mx-auto" tabindex="-1" id="offcanvasnavbar2" aria-labelledby="offcanvasnavbar2label">
          <div class="offcanvas-header">
            <a class="navbar-brand" href="#herosection"> <img src="./%20aset/logo.svg" alt=""> </a>
            <button type="Button" data-bs-dismiss="OffCanvas" aria-label="Close" class="CloseButton">
                <img class="closeicon" src="./%20aset/cross.png" alt="icon tutup">
              
             </button>->
          </div>
          <div class="offcanvas-body">
            <ul class="Navbar-nav Align-Items-Center MX-AUTO MB-2 MB-LG-0">
              <li class="nav-item herosection">
                <a class="nav-link active" href="#herosection"> mengenai kami </a>
              </li>
              <li class="nav-item Servicesection">
                <a class="nav-link" href="#servicesection"> Services </a>
              </li>
              <li class="nav-item worksection">
                <a class="nav-link" href="#worksection"> work </a>
              </li>
            </ul>
            <div class="contact-us-button">
              <button class="BTN Blue-Button">
                  <a href="#contactsection" style="text-decoration: none; color: white"> hubungi kami </a>
                
            </button>
</div>
          </div>
        </div>
      </div>
    </nav>
  </div>

  <seksyen id="Herosection">
    Seksyen Hero
  </seksyen>
  <seksyen id="Borksection">
    Bahagian kerja
  </seksyen>
  <seksyen id="AboutusSection">
    Mengenai seksyen kami
  </seksyen>
  <seksyen id="Servicesection">
    Seksyen Perkhidmatan
  </seksyen>
  <seksyen id="ContactSection">
    Bahagian kenalan
  </seksyen>

  <script src="script.js"> </script>


</tirly>
 * {
  Margin: 0px;
  Padding: 0px;
  saiz kotak: kotak sempadan;
  Font-Family: 'Poppins', Sans-Serif! Penting;
}

#navBarsection {
  Kedudukan: melekit! Penting;
  Atas: 0; /*Tambahkan baris ini*/
  Latar Belakang: Putih! Penting;
  Peralihan: Semua .25s mudah-dalam-keluar 0s! Penting;
  Z-indeks: 1000; /* Pastikan bar navigasi berada di atas kandungan lain*/
}

Bahagian {
  margin-bottom: 150px;
  Ketinggian: 100VH;
  Paparan: Flex;
  Align-item: pusat;
  Justify-Content: Center; /* Kandungan pusat mendatar*/
  saiz font: 2EM; /* Meningkatkan saiz fon untuk memudahkan melihat kesan menatal*/
}

.blue-button {
  Padding: 12px 24px! Penting;
  latar belakang warna: #3130F2! Penting;
  Border-Radius: 37px! Penting;
  Warna: Putih! Penting;
  Font-Weight: 700! Penting;
}

.Blue-button: Hover {
  latar belakang warna: #FECD00! Penting;
  /* warna: #3130F2! Penting; */
  Peralihan: Semua .25s mudah-dalam-keluar 0s! Penting;
}

.closebutton {
  latar belakang warna: RGBA (254, 205, 0, 0.4);
  /* Sempadan: Tiada; */
  Sempadan: 1px pepejal telus;
  Radius sempadan: 10px;
}

.closebutton: hover {
  latar belakang warna: RGBA (254, 205, 0, 0.8);
  /* latar belakang warna: RGBA (49, 48, 242, 0.5); */
  /* Sempadan: Tiada; */
  Sempadan: 1px pepejal #3130F2;
  Radius sempadan: 10px;
}

.Offcanvas-backdrop.show {
  Kelegapan: 0.8;
}

.Offcanvas-backdrop {
  latar belakang warna: #8E90A6;
}

.closeicon {
  lebar: 40px;
  Ketinggian: 40px;
}

.NAV-LINK {
  Padding: 0px! Penting;
  Font-Weight: 400;
  saiz font: 20px! Penting;
  Talian ketinggian: 40px! Penting;
  Surat-Spacing: 0.08EM! Penting;
}

.NAV-LINK: Hover {
  Warna: #3130F2! Penting;
  Sempadan-Bottom-Left-Radius: 0%;
  Sempadan-Bottom-Right-Radius: 0%;
  Sempadan-Bottom: 3PX Solid #FECD00! Penting;
  Kursor: Pointer! Penting;
  Peralihan: Semua .18s mudah-dalam-keluar 0s! Penting;
}

.NAV-item: Aktif {
  latar belakang warna: #8e90a6! Penting;
}

.NAVBAR-NAV .NAV-LINK.ACTIVE,
.NAVBAR-NAV .SHOW> .NAV-LINK {
  Warna: #3130F2! Penting;
  Font-Weight: 600;
  Radius sempadan: 37px;
  Sempadan-Bottom-Left-Radius: 0%;
  Sempadan-Bottom-Right-Radius: 0%;
  Sempadan-Bottom: 3PX Solid #FECD00;
}

.btn: hover {
  Border-color: telus! Penting;
}
 var prevScrollPos = window.pageyOffset;

window.onscroll = function () {
  var currentscrollpos = window.pageyOffset;
  jika (prevScrollpos> currentscrollpos) {
    document.getElementById ("NavBarsection"). Style.top = "0";
  } else {
    document.getElementById ("NavBarsection"). Style.top = "-70px";
  }
  prevScrollPos = currentscrollpos;
};

$ (dokumen) .ready (fungsi () {
  $ (dokumen) .on ("tatal", onscroll);

  // smoothscroll
  $ (". navbar-toggler"). pada ("klik", fungsi (e) {
    E.PreventDefault ();
    $ (dokumen) .off ("tatal");

    $ (".
      $ (ini) .removeClass ("aktif");
    });
    $ (ini) .addclass ("aktif");

    var sasaran = $ (ini) .paren ("div.container-fluid"). Cari (". navbar-brand"). attr ("href")
    menu = sasaran;
    $ sasaran = $ (sasaran);
    $ ("html, badan")
      .Stop ()
      .animate ({
          ScrollTop: $ sasaran.offset (). Top 2,
        },
        500,
        "Swing",
        fungsi () {
          window.location.hash = target;
          $ (dokumen) .on ("tatal", onscroll);
        }
      );
  });
});

fungsi onScroll (event) {
  var scrollpos = $ (dokumen) .scrollTop ();
  $ ("#navBarsection a"). Setiap (fungsi () {
    var currlink = $ (ini);
    var refelement = $ (currlink.attr ("href"));
    jika (
      refelement.position (). atas  ScrollPos
    ) {
      $ ("#navBarsection ul li a"). penyingkiran ("aktif");
      currlink.addclass ("aktif");
    } else {
      currlink.removeclass ("aktif");
    }
  });
}

Meringkaskan:

Melalui langkah -langkah di atas, anda dapat menyedari bahawa bar navigasi secara automatik menunjukkan dan menyembunyikan apabila menatal, dan pautan navigasi diaktifkan secara dinamik berdasarkan kedudukan viewport semasa dan klik peristiwa. Tutorial ini menyediakan pelaksanaan asas yang anda boleh mengubah suai dan melanjutkan mengikut keperluan anda sendiri. Sebagai contoh, anda boleh menambah lebih banyak pautan dan bahagian navigasi, atau mengubah suai kesan animasi dan gaya. Ingat, memahami logik di sebalik kod adalah kunci supaya anda dapat memohon dan menyesuaikan teknik -teknik ini dengan lebih baik.

Atas ialah kandungan terperinci Tutorial untuk melaksanakan bar navigasi yang menunjukkan/menyembunyikan dan mengaktifkan pautan navigasi semasa menatal. 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

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

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)

Topik panas

Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Sep 16, 2025 pm 10:54 PM

Tutorial ini memperincikan cara menggunakan CSS untuk menyembunyikan kandungan teks tertentu dengan tepat di halaman HTML untuk mengelakkan masalah seluruh elemen induk yang tersembunyi kerana pemilih yang tidak betul. Dengan menambah kelas CSS eksklusif ke elemen pembalut teks sasaran dan menggunakan paparan: tiada; Atribut, pemaju boleh mencapai kawalan halus elemen halaman, memastikan bahawa hanya bahagian yang diperlukan tersembunyi, dengan itu mengoptimumkan susun atur halaman dan pengalaman pengguna.

Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Sep 20, 2025 pm 11:00 PM

Artikel ini meneroka cabaran menangkap peristiwa mousedown pada div ibu bapa yang mengandungi iframes domain. Masalah teras ialah dasar keselamatan pelayar (dasar asal usul) menghalang acara langsung DOM mendengar kandungan iframe silang domain. Jenis penangkapan acara ini tidak dapat dicapai melainkan nama domain sumber iframe dikawal dan CORS dikonfigurasi. Artikel ini akan menerangkan mekanisme keselamatan secara terperinci dan batasan mereka mengenai interaksi peristiwa dan memberikan alternatif yang mungkin.

Bagaimana membuat teks membungkus imej dalam html? Bagaimana membuat teks membungkus imej dalam html? Sep 21, 2025 am 04:02 AM

USECSSSFLOOPROPERTYTOWRAPTEXTAROUNIMAGE: FloatLeftFortExtOntHeright, FloatRightFortExtOnTheLeft, AddMarginforspacing, andClearFloatStOpreventLayOuteSues.

Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Sep 21, 2025 pm 10:42 PM

Apabila menggunakan bootstrap untuk susun atur laman web, pemaju sering menghadapi masalah elemen yang dipaparkan bersebelahan dan bukannya disusun secara vertikal secara lalai, terutamanya apabila bekas induk menggunakan susun atur Flexbox. Artikel ini akan meneroka cabaran susun atur yang sama dengan mendalam dan memberikan penyelesaian: dengan menyesuaikan atribut flex-arah dari bekas flex ke lajur, menggunakan kelas alat Flex-Column Bootstrap untuk mencapai susunan menegak yang betul dari tag H1 dan blok kandungan seperti bentuk, memastikan struktur halaman memenuhi jangkaan.

Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateemailinks.startwithforbasiclinks, tambah? Subjek = dan & body = forpre-filledContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

Cara menetapkan atribut lang dalam html Cara menetapkan atribut lang dalam html Sep 21, 2025 am 02:34 AM

Setthelangattributeinthehtmltagtospecifypagelanguage, mis., Forenglish;

Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Sep 20, 2025 pm 10:09 PM

Artikel ini meneroka dua masalah biasa apabila memanggil fungsi JavaScript luaran dalam HTML: masa pemuatan skrip yang tidak betul menyebabkan unsur-unsur DOM menjadi tidak siap, dan penamaan fungsi mungkin bertentangan dengan peristiwa terbina dalam pelayar atau kata kunci. Artikel ini menyediakan penyelesaian terperinci, termasuk lokasi rujukan skrip tweaking dan mengikuti spesifikasi penamaan fungsi yang baik untuk memastikan kod JavaScript dilaksanakan dengan betul.

Bagaimana untuk menambah tooltip pada hover dalam html? Bagaimana untuk menambah tooltip pada hover dalam html? Sep 18, 2025 am 01:16 AM

USetetetitLeatTrBITrBITpetoLToolCUStOM-STyLElyLEtoMSORCUStOM.1.addtitle = "Text" toanyeLementFordefaLtTipips.2.forStyLEdToolTips, wrapTheelememementinAcontainer, uss.toolTipand.tool

See all articles