使用元素id,Meteor滚动到页面上的元素

Mar*_*inS 4 html javascript jquery meteor

我的问题很简单,但我很难找到答案.我正在使用meteor来创建一个网站.使用我的流星我正在使用铁路由器来浏览我的页面AKA模板.我的头标始终保持不变.我只是通过使用铁制路由器更改主体中包含的模板来更改主体.我有一个包含带有id的锚标签的页面,我希望当我的模板由于用户导航到该页面而更改时页面会自动滚动到我的网页上的某个锚点.不幸的是,我只能提供代码片段,因为我正在为公司做网页而不想泄露信息.我认为代码片段就足够了.

我在AfterRun上尝试过铁路由器:

Router.map(function(){
this.route("cpdEvents", {
    path: "cpd.html#events",
    onAfterRun: function() {
        e.preventDefault();
            $('html, body').animate({
            scrollTop: $("a[name=events]").offset().top
            }, 600);
    }
    });
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试过meteor的模板渲染功能:

if (Meteor.isClient) {
Template.cpd.rendered = function (){
    e.preventDefault();
    $('html, body').animate({
        scrollTop: $("a[name=events]").offset().top
    }, 600);
}
}
Run Code Online (Sandbox Code Playgroud)

我的网站结构的例子,显然不是一切.只是索引html和用户导航到的cpd.html.上面已经显示了JavaScript.

index.html的:

<head>
<meta ..... />
<title></title>
</head>
<body>
{{> index}}
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

cpd.html:

<template name="cpd">
....
<a name="events"></a>
....
</template>
Run Code Online (Sandbox Code Playgroud)

只是额外的信息:

我正在使用的Meteor版本包含jquery库,我测试了我的jquery工作.

如果我没有使用meteor并使用例如HTML.这可以通过在网址末尾添加"#"和ID来轻松完成.例如www.example.com/cpdEvents#events

cha*_*hne 8

不确定我是否理解你,但你也可以在流星中添加主题标签.只需通过点击你的href,将铁路由r路由到新的主题标签.

<li><a href="{{pathFor 'posts.index'}}"><span class='glyphicon glyphicon-home'></span> Blog</a></li>
<li><a href="{{pathFor 'overview' hash='about'}}"><span class='glyphicon glyphicon-user'></span> About Me</a></li>
<li><a href="{{pathFor 'overview' hash='meetup'}}"><span class='glyphicon glyphicon-map-marker'></span>My Meetup</a></li>
<li><a href="{{pathFor 'overview' hash='contact'}}"><span class='glyphicon glyphicon-envelope'></span> Contact Me</a></li>
Run Code Online (Sandbox Code Playgroud)

如果在该页面上找到,则铁路由器会自动滚动到该主题标签.通过覆盖scrollToHash函数,您可以更改滚动行为.

Router._scrollToHash = function(hash) {
  var section = $(hash);
  if (section.length) {
    var sectionTop = section.offset().top;
    $("html, body").animate({
      scrollTop: sectionTop
    }, "slow");
  }
};
Run Code Online (Sandbox Code Playgroud)

看看我的网站点击.在那里,我可以访问aboutme,meetup,通过停留在同一页面上的导航栏,只需更改主题标签.

  • 我想出了为什么你的工作而我的工作没有.当您已经在页面上时,您正在滚动到锚点.我点击我的一个不同网页上的链接,将我带到我希望浏览器窗口滚动到我的锚点的页面.例如,在您的网页上,如果我将"http://rico-ruszewski.com/#meetup"复制并粘贴到一个空白的新标签中,则浏览器窗口位于您网页的顶部.然后我必须点击"我的Meetup"链接向下滚动到锚点. (2认同)