1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <template>
- <view class="u-demo">
- <view class="u-demo-wrap">
- <view class="u-demo-title">演示效果</view>
- <view class="u-demo-area">
- <view class="" :style="{
- display: !top ? 'block' : 'none'
- }">
- <view class="rect-block-1">第一个节点</view>
- <view class="rect-block-2">第2个节点</view>
- <view class="u-no-demo-here">节点信息为</view>
- <view class="u-demo-result-line">{{ JSON.stringify(result) }}</view>
- </view>
- <view class="jump-to-top">
- <u-button @click="scrollToTop" :style="{
- display: top ? 'block' : 'none'
- }">
- 点我自动滚动到顶部
- </u-button>
- </view>
- </view>
- </view>
- <view class="u-config-wrap">
- <view class="u-config-title u-border-bottom">参数配置</view>
- <view class="u-config-item">
- <view class="u-item-title">元素</view>
- <u-subsection :list="['第一个节点', '第2个节点']" @change="elChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">指定元素置顶</view>
- <u-subsection current="1" :list="['是', '否']" @change="topChange"></u-subsection>
- </view>
- </view>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- result: '',
- scrollTop: 0,
- top: false
- };
- },
- onReady() {
- this.elChange(0);
- },
- onPageScroll(e) {
- this.scrollTop = e.scrollTop;
- },
- methods: {
- async elChange(index) {
- let el = index == 0 ? '.rect-block-1' : '.rect-block-2';
- this.result = await this.$u.getRect(el);
- },
- scrollToTop() {
- this.$u.getRect('.jump-to-top').then(res => {
- uni.pageScrollTo({
- scrollTop: this.scrollTop + res.top,
- duration: 0
- });
- });
- },
- topChange(index) {
- this.top = index == 0 ? true : false;
- if(index == 1) {
- uni.pageScrollTo({
- scrollTop: 0,
- duration: 0
- });
- }
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .u-demo {
- min-height: 200vh;
- }
- .rect-block-1 {
- background-color: #a0cfff;
- padding: 26rpx 60rpx;
- color: #ffffff;
- display: inline-flex;
- margin: auto;
- }
- .rect-block-2 {
- background-color: #fcbd71;
- padding: 12rpx 8rpx;
- width: 60%;
- color: #ffffff;
- margin: 30rpx auto;
- }
- </style>
|