如何创建一个粘性的导航栏,在滚动后变为固定在顶部的?

阅读时长 4 分钟读完

简介

当我们在浏览网页时,如果页面很长,则通常需要滚动以查看完整的内容。然而,这可能会使一些关键信息,如导航栏和菜单选项,消失在屏幕之外。为了解决这个问题,许多网站使用了一种称为“粘性导航栏”的技术,它会随着页面向下滚动,但一旦到达顶部,它就会变成固定在那里,使其始终可见。

在本文中,我们将学习如何使用 HTML、CSS 和 JavaScript 来创建一个粘性的导航栏,并使其固定在页面顶部。

HTML 结构

首先,我们需要创建 HTML 结构。我们将使用一个包含一些导航链接的简单 HTML 导航栏。以下是我们将要使用的 HTML 代码:

CSS 样式

接下来,我们需要添加一些 CSS 样式来使导航栏固定在页面顶部。我们可以使用 position: sticky 属性来实现这一点。position: sticky 允许元素在滚动到特定位置时停止滚动,并始终保持固定的位置。以下是我们将要使用的 CSS 代码:

JavaScript 代码

最后,我们需要一些 JavaScript 代码来检测页面滚动并在导航栏滚动到顶部时将其固定在那里。以下是我们将要使用的 JavaScript 代码:

-- -------------------- ---- -------
--- ------ - ----------------------------------
--- ------ - -----------------

-------- ----------- -
  -- ------------------- -- ------- -
    -------------------------------
  - ---- -
    ----------------------------------
  -
-

--------------- - ---------- -
  ------------
--

首先,我们选择 .navbar 元素,并使用 offsetTop 属性获取其相对于文档顶部的偏移量。然后,我们定义一个名为 stickyNav 的函数,该函数将检查页面滚动位置并在必要时将导航栏固定在页面顶部。最后,我们将 stickyNav 函数附加到 window.onscroll 事件处理程序中。

示例代码

下面是完整的示例代码:

-- -------------------- ---- -------
--------- -----
------
------
  ------------- ---------- -----------
  -------
    ------- -
      --------- -------
      ---- --
      ----------------- --------
      -------- -----
    -

    ------- -
      --------- ------
      ---- --
      ------ -----
    -
  --------
-------
------

  ---- ---------------
    -- -----------------
    -- ------------------
    -- ---------------------
    -- --------------------
  ------

  ---- -------------- ---------
    ---- ---- ------- ---
  ------

  --------
    --- ------ - ----------------------------------
    --- ------ - -----------------

    -------- ----------- -
      -- ------------------- -- ------- -
        -------------------------------
      - ---- -
        ----------------------------------
      -
    -

    --------------- - ---------- -
      ------------
    --
  ---------

-------
-------

结论

在本文中,我们学习了如何使用 HTML、CSS 和 JavaScript 创建一个粘性的导航栏,并使其固定在页面顶部。通过实现这个简

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/27290

纠错
反馈