jquery - 使用 rel 属性作为 anchor 链接

标签 jquery html css anchor rel

我想知道是否可以使用 rel 属性作为 anchor 链接。例如,html 将如下所示:

<a href="http://www.example.com/portfolio" rel="#portfolio">Portfolio</a>
<div id="portfolio">Content goes here></div>

单击链接时,当前页面将滚动到内容,而不是将用户带到该页面。

想法是将所有或大部分网站内容放在主页上,并使用顶部的导航链接到下面的内容。但是,如果未启用 javascript,用户将被带到适当的页面。

此外,我正在使用此 fiddle (http://jsfiddle.net/5z3NH/1/) 中的代码来激活平滑滚动。我想对其进行调整以适应我上面描述的情况。

提前致谢!

[编辑]

我已经更新了我的 Fiddle尝试 Jukka 建议的方法,即从 href url 中提取路径并滚动到页面下方匹配的 div。它还没有用,因为我最终链接到 URL,但也许我可以获得更多指示。

最佳答案

你可以试试这个。

启用 JS

<nav class="script">
  <ul>
    <li><a href="#" data-rel="s1">Link 1</a>
    </li><li><a href="#" data-rel="s2">Link 2</a>
    </li><li><a href="#" data-rel="s3">Link 3</a>
    </li><li><a href="#" data-rel="s4">Link 4</a>
    </li><li><a href="#" data-rel="s5">Link 5</a>
    </li>
  </ul>
</nav>


<section id="s1">

</section>

<section id="s2">

</section>

...

$(function () {
  $('nav li a').click(function(e) {
    e.preventDefault();
    $('html, body').stop().animate({ scrollTop: $('#'+ $(this).data('rel')).offset().top + 'px' }, 1000, 'easeOutSine');
  });
});

JS 禁用

<noscript>
  <style>.script { display: none; }</style>

  <nav class="noscript">
    <ul>
      <li><a href="#home">Link 1</a>
      </li><li><a href="#sevices">Link 2</a>
      </li><li><a href="#portfolio">Link 3</a>
      </li><li><a href="#about">Link 4</a>
      </li><li><a href="#contact">Link 5</a>
      </li>
    </ul>
  </nav>
</noscript>

或者像您在 fiddle 中尝试过的通用解决方案

<nav>
  <ul>
    <li><a href="http://www.example.com/#home">Link 1</a>
    </li><li><a href="http://www.example.com/#sevices">Link 2</a>
    </li><li><a href="http://www.example.com/#portfolio">Link 3</a>
    </li><li><a href="http://www.example.com/#about">Link 4</a>
    </li><li><a href="http://www.example.com/#contact">Link 5</a>
    </li>
  </ul>
</nav>

$(function () {
  $('a').click(function(e) {
    e.preventDefault();
    var target = $($(this).attr('href').replace('http://www.example.com/', ''));        
    $('html, body').animate({scrollTop: target.offset().top + 'px' }, 1000);        
  });
});

您的 FIDDLE 已更新。

关于jquery - 使用 rel 属性作为 anchor 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20599651/

相关文章:

javascript - Jquery - 如何在可以拖动和删除的图像上绘制线框(对象)?

javascript - 单击后如何隐藏子菜单

javascript - 具有本地主机或 LAN 服务器名称的 IE8/IE9 上的 localStorage 不起作用

jquery - bootstrap navbar-collapse 正在改变导航项的方向

css - div高度问题

css - 导航栏包装器的问题。我究竟做错了什么?

javascript - 只显示一次 div

jquery - slider 中垂直居中字幕

ruby-on-rails - Rails、 Assets 、应用程序缓存动态名称

css - 使用 CSS 和 Bootstrap,如何将背景图像设置为屏幕尺寸的 1/3?