单页网站上复杂的活动状态导航

2024-03-15

HTML:

<div class="logo-ribbon">
    <a href="#top"></a>
</div>

<nav id="nav">

    <ul>
        <li class="what">
            <a href="#what">what </a>
        </li>
        <li class="how">
            <a href="#how">how </a>
        </li>

        <li class="projects">
            <a href="#projects">projects</a>
        </li>
        <li class="faq">
            <a href="#faq">faq</a>
        </li>
        <li class="contact">
            <a href="#contact">contact</a>
        </li>
    </ul>

</nav>

JS:

$('nav li a').click(function(e) {
        e.preventDefault();
        $('a').removeClass('active-state-navigation');
        $(this).addClass('active-state-navigation');

        $('logo-ribbon a').click(function(){
        $('nav li').removeClass('active-state-navigation');
    });
});

我需要实现以下目标:

  • 一旦您单击菜单项,就会出现经典的活动状态..我已经通过 js 的第一行实现了这一点

  • 我希望页面滚动时也能触发活动状态。这样,如果我滚动到 #contact 部分,活动状态就会更改为“联系人”菜单项

  • 我还需要,如果我单击“.logo-ribbon a”,“活动状态导航”将被删除在导航中的任何位置。


你是说滚动间谍吗?检查这里http://jsfiddle.net/mekwall/up4nu/ http://jsfiddle.net/mekwall/up4nu/

// Cache selectors
var lastId,
    topMenu = $("#top-menu"),
    topMenuHeight = topMenu.outerHeight()+15,
    // All list items
    menuItems = topMenu.find("a"),
    // Anchors corresponding to menu items
    scrollItems = menuItems.map(function(){
      var item = $($(this).attr("href"));
      if (item.length) { return item; }
    });

// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e){
  var href = $(this).attr("href"),
      offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
  $('html, body').stop().animate({ 
      scrollTop: offsetTop
  }, 300);
  e.preventDefault();
});

// Bind to scroll
$(window).scroll(function(){
   // Get container scroll position
   var fromTop = $(this).scrollTop()+topMenuHeight;

   // Get id of current scroll item
   var cur = scrollItems.map(function(){
     if ($(this).offset().top < fromTop)
       return this;
   });
   // Get the id of the current element
   cur = cur[cur.length-1];
   var id = cur && cur.length ? cur[0].id : "";

   if (lastId !== id) {
       lastId = id;
       // Set/remove active class
       menuItems
         .parent().removeClass("active")
         .end().filter("[href=#"+id+"]").parent().addClass("active");
   }                   
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单页网站上复杂的活动状态导航 的相关文章

  • Node.js 主机名/IP 与证书的替代名称不匹配

    我正在编写一些节点代码来进行 Facebook 的服务器端登录 我已经非常接近让它完全发挥作用了 但是我在请求 auth code 时遇到了麻烦 我认为这可能与 Facebook 应用程序设置有关Site URL但我尝试过的都没有成功 我使
  • 如何编写三元运算符(又名 if)表达式而不重复自己

    例如 这样的事情 var value someArray indexOf 3 1 someArray indexOf 3 0 有更好的写法吗 再说一遍 我并不是在寻求上述问题的答案 只是一个在三元运算符表达式中可能重复操作数的示例 就我个人
  • JavaScript 和数据库连接

    javascript可以直接访问数据库吗 我觉得我的问题是反问 因为这是一个安全问题 但这有可能吗 有可能的 有了新的html5功能 js可以通过WebSql连接 一个活生生的例子 http html5demos com database
  • PMT功能 支付方式

    下面是我计算贷款付款的函数 就像在 Excel 中一样 我需要添加另一个参数 即付款类型 function PMT ir np pv fv ir interest rate per month np number of periods mo
  • SVG/XML 中有一些innerHTML 替代品吗?

    在 HTML 中 我可以通过提供字符串形式的模板来构建一个简单的模板系统 替换其中的某些部分 然后使用innerHTML到某个容器 var templ span myText span var newContent templ replac
  • 在没有事件的情况下从 HTML 执行 javascript 函数

    我希望从 HTML 页面调用 javascript 函数 并且我do not希望它依赖于任何事件 该函数位于单独的 js 文件中 因为我希望在许多网页中使用它 我也将变量传递给它 我试过这个 HTML fp footer2 js中的函数 f
  • jQuery AJAX 或 XHR 请求从完成回调触发失败回调

    在我的 jQuery XHR 的完成处理程序 从 get 调用创建 中是否有一种方法可以查找响应中的问题 然后使用自定义错误消息触发注册的后续处理程序 即失败和始终 像这样的东西 get URL done function data sta
  • 如何从 OnChange 事件捕获文本框的值

    在我的 C MVC 应用程序中 我有一系列这样生成的文本框 foreach object item in items Html TextBox 渲染的结果是一系列看起来像这样的文本框
  • 如何使用 Material UI 制作一个圆形复选框?

    我尝试匹配的设计要求复选框为圆形 我正在使用 Material UI 和 React 边框半径不起作用 因为实际图标的边框不是可见复选框的边框 我不能只使用像 Font Awesome 这样的东西 因为它需要实际检查和取消检查 Curren
  • 循环遍历字符串中的 html 标签并将内部文本添加到数组中

    我有一些 HTML 内容保存为字符串 我想循环遍历该字符串中的每个标题标签并获取其内部文本 let str h1 topic 1 h1 p desc of topic 1 p h1 topic 2 h1 p desc of topic 2
  • Raphael JS 中的动画字体大小是否有流畅的过渡可能性?

    到目前为止似乎它不流畅 但波涛汹涌 例如 如果您有一个 font size 14 的状态属性 并且想要以动画方式显示 font size 16 的状态 则过渡看起来并不平滑 它分两步跳跃 首先更改为 15 然后更改为 16px 可以强迫它看
  • canvas:如何在一个变换语句中完成平移、倾斜、旋转...?

    最近几天我在学习 变换 现在我知道如何通过变换的矩阵进行平移 旋转 倾斜 缩放 但如果我想在一个转换语句中执行上述所有操作 我该怎么办 ctx transform a b c d e f 当我们想要通过变换旋转某些东西时 我们必须为每个参数
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • 在单选按钮选择上提交 Rails 表单

    我有以下 Rails 表单 有效 但我想删除 Submit tag 并在选择单选按钮后立即提交表单 我怎么做 p nbsp nbsp p p p 所以我找到了精确的解决方案 感谢输入人员 它帮助我重新定义了我的谷歌搜索
  • 避免使用 Grunt cssmin 任务来删除重复条目

    在我的 Gruntfile 中 我使用 cssmin grunt contrib cssmin 任务 就像是 cssmin css src dist styles css dest dist styles min css 问题是 style
  • Socket.io 不断重复连接并忽略其他事件

    我正在尝试制作一个网络应用程序 用户可以在其中互相玩环形国际象棋 这是我的 app js 在服务器上 var express require express var app express var http require http Ser
  • JavaScript 类继承

    谁能告诉我为什么我的 showDiv boo 在类的方法中未定义 我也无法访问我的类的方法 这是我的 Blink 类及其属性和方法 function Blink div this div div Blink prototype counte
  • JSON 和 AJAX 与 jQuery 有什么区别?

    我听说 JSON 会序列化所有数据 这可以防止我在跨浏览器支持等方面遇到客户端问题 我一直在使用 AJAX 和 jQuery 这看起来很简单 但我不确定其中的区别 我读过我也可以使用它来获取数据 ajax url url dataType
  • 从 BLOB 打印 PDF

    我从外部 API 获取 PDF 文件 使用此代码我可以正确下载该文件 var req new XMLHttpRequest req open POST url true req responseType blob req setReques
  • 如何从 Firebase 实时数据库中删除具有 UID 的用户?

    数据库结构如下所示 LGw89Lx5CA9mOe1fSRQ uid FzobH6xDhHhtjbfqxlHR5nTobL62 image https pbs twimg com profile images 8950378298 locat

随机推荐

  • 返回元组时 GCC/Clang x86_64 C++ ABI 不匹配?

    当尝试时优化 x86 64 上的返回值 https stackoverflow com q 25381736 3919155 我注意到一个奇怪的事情 即 给定代码 include
  • 如何更快地加载JQuery?

    我有aspx 其中有jquery 由于加载 jquery 的延迟 我面临一些样式问题 请谁能告诉我如何快速加载jquery 我今天读了 Stackoverflow 上 Sam Saffron 撰写的关于此主题的博客文章 我还没有尝试过作者的
  • 上传到 iTunes Store 时出错

    我们确实需要一些帮助 在过去的两个月里 我们一直在与所有 Apple Mumbo Jumbo 进行斗争 但似乎无法在 APPStore 上获取我们的应用程序 现在我的问题是在验证存档编译并共享它之后 在提交过程中我得到 上传到 iTunes
  • 干净的条件格式 (Excel VBA)

    如果这个问题已经得到解答 但我无法找到它 我深表歉意 这就是我想要的 我们都知道删除范围 行和列会分割条件格式并使其变得丑陋 我想创建一个个人宏 1 Searches through all existing Conditional For
  • Errno::EACCES: 权限被拒绝@ rb_sysopen

    当我尝试运行 gem install json v 1 8 3 时 错误 执行 gem 时 Errno EACCES 权限被拒绝 rb sysopen home ulap10 gem gems json 1 8 3 tests test j
  • 我如何告诉编译器 MyCustomType 与 SomeOtherType 是 equal_comparable_with SomeOtherType ?

    假设我有一个MyCustomType与SomeOtherType struct SomeOtherType int value constexpr bool operator const SomeOtherType rhs const de
  • 使用 LINQ 查找对称差异

    我有两个收藏a and b 我想计算其中的一组项目a or b 但不能同时存在 逻辑异或 有了 LINQ 我可以想出这个 IEnumerable
  • R 中逻辑回归的致死剂量 (LD) 置信区间

    我想找到致命剂量 LD50 其置信区间为R Minitab SPSS SAS 等其他软件提供了此类置信区间的三种不同版本 我在任何包中都找不到这样的间隔R 我也用过findFn函数来自sos包裹 我怎样才能找到这样的间隔 我根据 Delta
  • 在 Linux 中使用 TCP 时,listen 的积压数量是否包括 SYN 接收的连接数?

    我读了一些帖子并检查了 Linux 内核代码 例如inet listen gt inet csk listen start https elixir bootlin com linux v4 3 6 source net ipv4 inet
  • 如果我更改扬声器配置,ffmpeg avcodec_open2 返回 -22

    我最近总是遇到一个奇怪的问题 根据我在 Windows stereo quad 5 1 中设置音频配置的方式 对 avcodec open2 的 ffmpeg 调用失败并出现错误 22 或正常工作 由于找不到太多有关该错误的信息 我想我应该
  • Ghostscript 顽固地拒绝嵌入字体

    我有一个从 pdflatex 创建的文档 嵌入 R pdf 图表 我现在正尝试将其发送到要求嵌入所有字体的打印机 lulu 我认为 没问题 gs dNOPAUSE dBATCH dNOPLATFONTS sDEVICE pdfwrite d
  • 如何:点击时将视图置于前面;设置最大/最小捏合手势比例;将屏幕限制设置为平移手势

    注意 我发现的所有东西都太旧了 或者与我实际需要的东西相差太大 而且我几乎尝试了我发现的所有东西 但没有一个能以正确的方式工作 我创建了 3 个 UIView 我可以拖动它们并缩放它们 现在 我需要 将其中一些放在前面 我想为每个添加一个
  • 使用owin中间件替换响应体

    有没有办法使用 OWIN 中间件覆盖响应内容 我的自定义错误类 public class Error public string error get set public string description get set public
  • RxJs - forkJoin 与空数组

    我目前正在使用forkJoin等待数组Observable s 之前完成pipe 英 和tap ping 我注意到如果数组为空 则不会发出任何信号 我什至不能tap 我该如何解决这种问题 我应该检查数组是否为空吗 myFirstFuncti
  • AspNetCore 2.0 声明始终为空

    我正在努力将 DotNet 4 5 MVC WebAPI 应用程序转换为 AspNetCore 2 0 但在让 Cookie 身份验证再次工作时遇到一些问题 当我设置 cookie 并尝试访问安全方法时 我无法到达那里 当我进入匿名方法并检
  • 空比较

    有一个查询 UPDATE MyTable SET nvarchar1 blahblah WHERE Id 096fe792 7313 416f b3c8 327f46be73b6 AND nvarchar1 lt gt blablah 当
  • 使用 Delphi 检测互联网连接激活

    我使用 3G 无线卡已经有一段时间了 每次连接时 我的防病毒软件都会启动更新 我想知道我可以使用哪些 Win32 API 函数集来获取通知或查询即将出现的 Internet 连接事件 Delphi 已经有一组移植的标头了吗 我参与了一个项目
  • 如何将无边框表单对齐到屏幕边缘?

    当我将窗体的边框样式设置为无时 我无法再将窗口捕捉到屏幕边缘 我怎样才能两者兼得 Aero Snap 需要一个有边框的窗口 没有后门 您可以使用以下代码来模拟捕捉这个帖子 https stackoverflow com a 591734 1
  • ruby/ruby on Rails 内存泄漏检测

    我使用 ruby on Rails 编写了一个小型 Web 应用程序 其主要目的是上传 存储和显示 xml 文件最多可达几 MB 文件的结果 运行大约 2 个月后 我注意到杂种进程使用了 大约 4GB 内存 我做了一些关于调试 ruby 内
  • 单页网站上复杂的活动状态导航

    HTML div class logo ribbon a href top a div