小程序怎么实现页内跳转

小程序页内跳转

小程序的页面常常是有多个部分的,有时会出现需要在不同部分之间进行跳转的情况。如何实现小程序的页内跳转呢?本文将介绍两种方式。

方式一:scroll-into-view

scroll-into-view是小程序提供的一个实现页内跳转的API。我们可以在需要跳转的目标元素上绑定一个id,然后通过设置scroll-into-view的值为该id实现跳转到该元素所在的位置。

具体实现步骤如下:

在需要跳转到的目标元素上设置id属性,例如:

<view id="target"></view>

在跳转源元素上设置跳转事件,例如:

// 在wxml文件中

<view bindtap="scrollToTarget">跳转到目标元素</view>

// 在js文件中

scrollToTarget: function() {

this.setData({

scrollTop: 0,

scrollIntoView: 'target'

})

}

在跳转事件中,将scrollTop设置为0,表示跳转到顶部,然后将scrollIntoView设置为需要跳转到的目标元素的id,如'target'。

这种方式的优点是实现简单,不需要使用第三方组件,但缺点是只能实现跳转到本页面中已经存在的元素。

方式二:使用第三方组件

如果需要在页面中动态生成元素并且实现跳转,就需要使用第三方组件了。目前比较常用的组件是wemark,它是一个支持Markdown语法的渲染组件,可以将Markdown格式的文本渲染为小程序中的富文本展示。

使用wemark实现页内跳转,需要在Markdown文本中设置目标元素的id,然后在需要跳转到的源元素上绑定跳转事件,事件中调用wemark提供的scrollToAnchor方法即可。

具体实现步骤如下:

在Markdown文本中设置目标元素的id,例如:

# 标题一

正文一

## 小标题一

正文二

<view id="target"></view>

在Markdown文本中,需要跳转到的目标元素的id需要以<view>标签的形式出现,并且需要在小程序中存在对应的<view>元素。

在wemark的渲染页面中,绑定scroll事件,例如:

<wemark md="{{md}}" bind:scroll="onScroll" />

// 在js文件中

onScroll: function(event) {

this.wemarkContext.onScroll(event);

}

在渲染页面中,需要将从wemark组件获取的渲染内容保存为一个变量md,并在wemark组件的md属性中绑定该变量。同时,还需要在wemark组件上绑定scroll事件,并在事件中调用wemarkContext上的onScroll方法,实现滑动到目标元素时的跳转效果。

在需要跳转的源元素上绑定跳转事件,例如:

// 在wxml文件中

<view bindtap="scrollToTarget">跳转到目标元素</view>

// 在js文件中

scrollToTarget: function() {

this.wemarkContext.scrollToAnchor('target');

}

在跳转事件中,调用wemarkContext上的scrollToAnchor方法,将需要跳转到的目标元素的id作为参数传递进去即可。

这种方式的优点是可以动态生成元素,并且目标元素可以在Markdown文本中设置,实现灵活性比较高,但需要引入第三方组件,增加了代码量。

总结

小程序实现页内跳转有两种方式:scroll-into-view和使用第三方组件。前者实现简单,但只能跳转到本页面中已经存在的元素;后者实现稍微复杂一些,但可以实现动态生成元素和Markdown文本中设置目标元素的效果。选择哪种方式可以根据实际情况和需求来做出决定。