---
name: "IntersectionObserver.relativeToViewport"
mode: "api"
versionRequirements:
  - { name: "基础库", version: "2.10.0" }
title: "relativeToViewport"
---

## IntersectionObserver.relativeToViewport

> [VERSION] 基础库 >= 2.10.0

### 描述

指定页面显示区域作为参照区域之一。

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `margins` | `Margins` | 否 | 用来扩展（或收缩）视窗的边界 |

### 返回值

类型: `IntersectionObserver`

[IntersectionObserver 实例](/cn/miniapp/develop/miniapp/api/tyml/IntersectionObserver/IntersectionObserver)（支持链式调用）

### 引用对象

##### `type` Margins

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `left` | `number` | 左边界 |
| `right` | `number` | 右边界 |
| `top` | `number` | 上边界 |
| `bottom` | `number` | 下边界 |


### 示例代码

#### 相对于视口观察

```html
// index.tyml
<scroll-view scroll-y="{{true}}" class="container">
  <view class="placeholder">向下滚动</view>
  <view class="target">观察目标</view>
</scroll-view>
```

```js
// index.js
Page({
  onReady() {
    var observer = ty.createIntersectionObserver(this);
    observer
      .relativeToViewport({ bottom: 100 })
      .observe('.target', (res) => {
        if (res.intersectionRatio > 0) {
          console.log('元素进入视口');
        } else {
          console.log('元素离开视口');
        }
      });
  },
});
```

```css
// index.tyss
.container {
  height: 100vh;
}
.placeholder {
  height: 1000rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #999;
}
.target {
  height: 200rpx;
  background-color: #e8f4ff;
  display: flex;
  align-items: center;
  justify-content: center;
}
```
