123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <template>
- <view>
- <page-head :title="title"></page-head>
- <view class="uni-padding-wrap uni-common-mt">
- <view class="uni-title uni-common-mt">
- {{appear ? '小球出现' : '小球消失'}}
- </view>
- <scroll-view class="scroll-view" scroll-y>
- <view class="scroll-area">
- <text class="notice">向下滚动让小球出现</text>
- <view class="ball"></view>
- </view>
- </scroll-view>
- </view>
- </view>
- </template>
- <script>
- let observer = null;
- export default {
- data() {
- return {
- appear: false,
- title:'intersectionObserver'
- }
- },
- onReady() {
- observer = uni.createIntersectionObserver(this);
- observer.relativeTo('.scroll-view').observe('.ball', (res) => {
- if (res.intersectionRatio > 0 && !this.appear) {
- this.appear = true;
- } else if (!res.intersectionRatio > 0 && this.appear) {
- this.appear = false;
- }
- })
- },
- onUnload() {
- if (observer) {
- observer.disconnect()
- }
- }
- }
- </script>
- <style>
- .scroll-view {
- height: 400rpx;
- background: #fff;
- border: 1px solid #ccc;
- box-sizing: border-box;
- }
- .scroll-area {
- height: 1300rpx;
- display: flex;
- flex-direction: column;
- align-items: center;
- }
- .notice {
- margin-top: 150rpx;
- margin: 150rpx 0 400rpx 0;
- }
- .ball {
- width: 200rpx;
- height: 200rpx;
- background: #4cd964;
- border-radius: 50%;
- }
- </style>
|