Am looking for something similar to scrollIntoView() within Ionic2 to use when I click on a button, for example.
None of the methods detailed in ion-content help.
Please take a look at this working plunker
You can use the scrollTo(x,y,duration) method (docs).
The code is pretty simple, first we obtain the position of the target element (a <p></p> in this case) and then we use that in the scrollTo(...) method. First the view:
<ion-header>
<ion-navbar primary>
<ion-title>
<span>My App</span>
</ion-title>
</ion-navbar>
</ion-header>
<ion-content>
<button ion-button text-only (click)="scrollElement()">Click me</button>
<div style="height: 600px;"></div>
<!-- Notice the #target in the p element -->
<p #target>Secret message!</p>
<div style="height: 600px;"></div>
</ion-content>
And the component code:
import { ViewChild, Component } from '@angular/core';
import { NavController, Content } from 'ionic-angular';
@Component({
templateUrl:"home.html"
})
export class HomePage {
@ViewChild(Content) content: Content;
@ViewChild('target') target: any;
constructor() { }
public scrollElement() {
// Avoid reading the DOM directly, by using ViewChild and the target reference
this.content.scrollTo(0, this.target.nativeElement.offsetTop, 500);
}
}
I'd use an anker link in HTML.
Just give the elemnt and id="scrollXYZ" and wrap the button in an
Example:
<a href="#scrollXYZ"><button>Example</button></a>
<div id="scrollXYZ"><h2>Scroll to this</h2></div>
I noticed the above solution don't work well with Angular Universal server-side rendering (SSR) due to document not being available server-side.
Hence I wrote a convenient plugin to achieve scrolling to elements in Angular 4+ that work with AoT and SSR
GitHub
ngx-scroll-to
I was trying to do this in Ionic 3 and due to the fact that <Element>.offsetTop was returning10 (the padding on the top of the element) instead of the distance to the top of the page (much larger unknown number) I ending up just using <Element>.scrollIntoView(), which worked well for me.
To get the <Element> object I used document.getElementById(), but there are many other options on how to get a handle on that.
In Ionic 4 the scroll function is renamed to scrollToPoint().
来源:https://stackoverflow.com/questions/39396908/how-to-scroll-element-into-view-when-its-clicked